【问题标题】:Creating an installer for Linux application [closed]为 Linux 应用程序创建安装程序 [关闭]
【发布时间】:2011-01-26 00:58:21
【问题描述】:

我正在开发一个小型跨平台应用程序,我需要一些关于如何在 Linux 中安装它的建议。我在 Windows 中使用 InnoSetup,在 OSX 中使用应用程序包,但我不知道如何在 Linux 中安装我的应用程序,是否有适用于 Linux 的开源安装程序创建者?

谢谢。

【问题讨论】:

标签: linux installation build-process


【解决方案1】:

标准 *nix 系统(不仅是)上所有强大的通用安装程序是Autotools

# the user will install like so:
./configure --with-stuff
make # if package is from source
make install

您还可以提供特定于发行版的安装程序,例如 RedHat 或 CentOS 上的 RPM 或 Debian、Ubuntu 上的 deb,尽管一旦您拥有 Autotools 吐出的 Makefile,制作这些安装程序就轻而易举了。

# the user will install like so:
yum install your-package-1.0.rpm # on redhat or
apt-get install your-package-1.0.deb # on debian

Autotools 也被称为“GNU 构建系统”,乍一看有点吓人,新用户在遇到像古老的 m4 宏系统 & co 之类的东西时会感到困惑。但是注意这是大多数人的做法,一旦你掌握了它就很容易了。

Learning resources

【讨论】:

  • 只需编写一个干净的autotools 设置,让分发人员暂时根据他们的需要找出其余部分。
  • 自动工具+1;使用自动工具只需要一点专业知识。这是一个链接:lrde.epita.fr/~adl/dl/autotools.pdf
  • @rmk 我想把那个pdf放在我的答案中,但找不到。
  • 感谢您提供详细信息。我的印象是我必须使用自动工具分发源代码,这不是我想做的事情,但我会阅读 PDF。谢谢
【解决方案2】:

如果可能,选择不需要安装程序,而是使用简单的提取并运行方法。这将允许用户将文件放在他们想要的任何地方并运行它。

但是,您确实有其他选择,例如:

  1. 使用autoconf
  2. 使用CMake
  3. 使用像 IZPack 这样的 Java 安装程序

【讨论】:

    【解决方案3】:

    看看InstallJammer。您可以为 Windows 和 Linux 安装程序编写一个项目,Mac 支持即将推出。

    【讨论】:

    • 我现在正在研究 InstallJammer,到目前为止它看起来很有希望!谢谢。
    • 很遗憾该项目已经停止Active development of InstallJammer has been discontinued. The source is available for all versions and will always remain so, but your efforts might be better spent on an installer that is active in its development.
    【解决方案4】:

    编写一个非常强大的 makefile!或使用CMake

    【讨论】:

      【解决方案5】:

      我开始写unistall 来解决您必须在各种发行版上安装二进制包的情况。

      它尝试做一些事情:

      • 实现操作系统类型和包管理器,允许您使用系统包管理器来拉入您的程序可能需要的任何依赖项。例如,如果使用 debian/ubuntu,它将知道使用 apt-get install libncurses5-dev,如果使用 RHEL/Fedora/CentOS,它将知道使用 yum install libncurses-devel
      • 如果需要,了解用于更新 init 的机制
      • 创建一个安全的卸载程序
      • 在任何 shell(bash、dash、zsh、pdksh、busybox ash 等)上工作

      我保留了 repo,因为它充满了有用的部分,但是我很快放弃了 为 Linux 发行版创建 install sheild 类型程序的想法。您会发现为 .deb 、 .rpm 和(可能)slackware .tgz 格式生成可安装包要好得多。

      这可以使用checkinstall 之类的工具集成到您的构建系统中。请注意,根据 Debian 和其他人制定的严格 lint 指南,checkinstall 生成的软件包并不总是完美的,但是这些软件包可以正常工作。

      您可以为用户提供的最佳安装体验是允许他们使用他们的本地包管理器安装(和更新)您的软件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多