为Linux应用程序创建安装程序

时间:2010-03-10 18:19:51

标签: linux installer build-process

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

感谢。

5 个答案:

答案 0 :(得分:18)

系统上的标准所有强大的通用安装程序(而不仅仅是)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宏系统等问题时感到困惑。合。但是 nota bene 这是大多数人这样做的方式,一旦掌握了它就很容易。

Learning resources

答案 1 :(得分:2)

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

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

  1. 使用autoconf
  2. 使用CMake
  3. 使用IZPack
  4. 之类的Java安装程序

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

当你必须在各种发行版上安装二进制包时,我开始编写unistall

它试图做一些事情:

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

我放弃了回购,因为它充满了有用的内容,但我很快放弃了关于Linux发行版install sheild类型程序的想法。您会发现为.deb,.rpm和(可能)slackware .tgz格式生成可安装包更好,更好。

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

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