为基于 Linux 的 OS 软件包创建 'graphical' 命令行安装

Creating a 'graphical' command line install for a Linux based OS package

虽然我对使用 Linux 还比较陌生,但我想了解更多有关部署包的工作原理的信息。我试过寻找这个但没有运气。我见过无数的软件包和安装脚本,它们使用外观相同的 'graphical' 命令行为用户安装到软件包的 select 选项。以 Debian 网络安装为例。 [1]

因为我有很多东西要学,所以我只想总结一下这是如何实现的,以及任何人拥有的关于开发人员如何做到这一点的任何资源。

提前致谢。

[1] http://doudoulinux.org/blog/public/screenshots/install/install-selected-tasks.png

好的,现在,我相信,我明白你在追求什么了。我仍然坚持认为包的交互式配置是 发行版特定的,不应是包配置的主要形式。

最好以默认工作配置发布,然后记录用户如何更改配置文件(通常在 /etc 中)以重新配置包。提供几个默认配置通常很有用(示例包:wpa_supplicant 附带了几个网络配置示例,默认情况下全部禁用)并允许用户通过取消注释行进行选择。


Debian

debian 配置包的具体方法是 debconf,它的配置是一个简单的 shell 脚本(或 perl 脚本,或任何其他可以讨论 STDIN/STDOUT) 和模板文件。模板文件将在 aptitude/apt-get 界面中提供选项,如您问题中的屏幕截图所示。

值得阅读 debian guidelines on package configuration 以了解哪种配置太多了。

而且他们还有一个thorough tutorial. Since you said you do not have experience packaging i also recommend reading the introduction to packaging,它会告诉你文件应该放在哪里。此外,dbhelper 是将文件放置在包目录中正确位置的好工具。


在其他发行版上

每个发行版都有自己的向包添加配置的方法。 Debian 以其 debconf 着称,因为它是功能最丰富的软件包配置工具之一(连同 dpkg-reconfigure)。

分发包中的软件开发人员通常与打包软件的开发人员不同。开发人员留下的配置选项通常比包中的更全面(例如包含或排除某些库)。

您最熟悉 debian 发行版(这是基于您的问题标签的假设)这一事实可能会让您对包配置产生误导。只有基于 debian 的发行版有这么多可配置的包,其他发行版经常使用包依赖来安装不同配置的包。例如:

  • 基于 RedHat 的发行版(.rpm 软件包)没有诸如 debconf 之类的工具(据我所知),它们使用不同的(冲突的)软件包名称来安装不同配置的软件包。
  • 基于 Arch Linux 的发行版强制执行用户配置。本质上,arch 强制用户通过进入他们的配置文件并更改配置来配置他们的包(如果你想学习,这是一件非常好的事情)。

有趣的是,基于 RPM 和 Arch 的发行版都经常发布 po-debconf,这是一个针对该发行版改编的 debconf。然而,我不能说太多,因为我从未尝试过。