-1

经过几周的努力,我能够创建一个中等原生包 debian 包,它在安装和删除包时效果很好。

作为http://www.quietsche-entchen.de/cgi-bin/wiki.cgi/-wiki/CreatingDebianPackages Debian wiki http://wiki.debian.org/HowToPackageForDebian http://www.debian.org/doc/ manuals/maint-guide/这些对于初学者来说是相当不错的材料,

我有基本问题,在更新包时,所有文件 data.tar.gz 都默认更新。

我只想根据存储在所有文件中的关键变量在 data.tar.gz 中更新几个文件。

执行 preinst 脚本的解包后,data.tar.gz 中的所有文件都已更新..

我的想法是在升级软件包之前先备份文件,并检查文件中的关键变量..如果关键变量大于当前变量,请替换它..

这意味着我正在编写一个简单的备份脚本..并在 postinst 文件中执行..

我不认为这是一个好主意.. 破折号脚本中的更多限制使它成为一项非常艰巨的工作..

4

1 回答 1

1

你想在这里完成什么?在重新安装(或升级) Debian 软件包期间,用最新版本替换所有非配置文件正是应该发生的事情。如果自上次安装的软件包版本以来文件没有更改,那么无论如何更新它都没有害处,如果它已经更改,则应该更新它。

如果您有特定的文件可能会被用户修改并且应该在升级过程中保留,那么请制作 conf 文件。包系统会提示用户并询问他们是要保留包维护者的版本还是本地修改的版本。

(但是,如果您要将每个文件都设为 conf 文件,那么您可能做错了什么。)

要将文件设为 conffile,请将其列在debian/conffiles. 但是如果要安装该文件,/etc那么您不需要这样做,因为dh_installdeb它会为您完成。

编辑以下评论中的附加信息:

假设您的包中有文件test1.shtest2.sh(以及其他)。在 Debian 世界中,它们要么是旨在由最终用户修改的配置文件,要么不是。

conffiles 的数量应该相对较少并且尽可能短,以尽量减少必须协调包维护者所做的更改与最终用户所做的冲突更改的负担。

如果代码中混入了最终用户可能想要调整的内容,请尝试将它们分解到配置文件中。如果您将该文件放入 中/etc,您甚至不必手动将其指定为 conffile。

如果最终用户需要更改非配置文件,他们应该使用dpkg-divert协议来 (1) 将原始文件移到一边,以及 (2) 编辑副本。包升级尊重转移的文件。使用的最终用户dpkg-divert应该知道升级后可能会出现问题,因为包维护者没有预见到这些文件会被最终用户修改,并且本地修改的版本可能与新升级的版本不兼容不同的文件。dpkg-divert应小心谨慎地使用。

于 2012-05-14T19:47:31.983 回答