在 Linux 上生成“安装程序”

在 Linux 上生成“安装程序”

你能帮我吗

  • 当我们为我的软件(基于 Java)生成“安装程序”时,我应该牢记最佳实践或注意事项?

  • 应该采取哪些步骤或阶段来完成这项工作?

我研究并发现通过包管理器执行此操作是一个好方法。

提前致谢!

答案1

Windows 风格的自解压安装程序包可以说是一种不好的做法:

  • 自解压程序可能成为恶意软件的载体:没有人质疑为什么安装程序必须以管理员身份运行。
  • 如果使用了不起眼的安装程序生成器,则常规提取和反恶意软件工具可能无法访问包的内容,从而形成另一种隐藏恶意软件的方法。

尽管现有的包管理器可能并不完美,但使用它们的包格式具有几个安全优势:

  • 包格式众所周知且可加密签名,因此可以轻松检测到篡改
  • 如有必要,可以随时使用提取此类包进行检查的工具,而无需从包本身执行单个字节的代码
  • 软件包格式支持执行安装前/安装后/删除脚本,这些脚本可以执行您可能需要的任何自定义配置步骤
  • 至少.deb打包格式包括为全自动非交互式安装指定包配置的统一方法(在 Debian/Ubuntu 世界中称为“预置”)。

无论您做什么,如果您的软件打算在服务器上使用,您应该确保您的软件可以轻松地以非交互方式安装。如果你不这样做,使用 Ansible、Salt 或 docker-compose 等工具的管理员将会讨厌你的软件。

为了让包管理器自动为您安装任何依赖库或其他包,您必须在包元数据中记录依赖关系。您应该通过将软件包安装到具有适当发行版的“最小”安装的虚拟机来测试您的软件包,并验证依赖项是否会自动提取您的软件包所需的所有内容。

您还应该确保任何依赖项都允许安全更新:将包依赖项指定为“需要包 Y 的版本 X 或更高版本”比“绝对需要包 Y 的版本 1.2.3.4”更好。

主要发行版可以提供有关推荐的软件打包实践的文档。例如,Debian 有Java 软件的政策手册。尽管如果您不打算将您的软件包含在发行版中,您可以偏离它,但您仍然应该阅读它以了解如何.dpkg处理打包的 Java 软件。

相关内容