如何创建一个 Debian 软件包,在更新软件包时只更新所需的文件



经过几周的挣扎,我能够创建一个中等原生软件包 debian 软件包,该软件包在安装和删除软件包时效果很好。

如 http://www.quietsche-entchen.de/cgi-bin/wiki.cgi/-wiki/CreatingDebianPackagesDebian wikihttp://wiki.debian.org/HowToPackageForDebian http://www.debian.org/doc/manuals/maint-guide/这些是初学者的好材料,

我有基本问题,在更新包时.tar.gz默认情况下会更新所有文件数据。

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

在执行preinst脚本的解压缩之后,data.tar.gz中的所有文件都已经更新。

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

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

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

你想在这里完成什么?在重新安装(或升级(Debian 软件包的过程中,将所有非 conf-files 替换为最新版本正是应该发生的事情。如果文件自上次安装的软件包版本以来没有更改,那么无论如何更新它都没有坏处,如果更改,则应更新它。

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

(但是如果你要把每个文件都变成一个conf文件,那么你可能做错了什么。

要使文件成为配置文件,请在 debian/conffiles 中列出该文件。但是,如果要在/etc下安装该文件,则无需执行此操作,因为dh_installdeb会为您执行此操作。

注释中编辑以下附加信息:

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

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

如果代码中混合了最终用户可能

想要调整的内容,请尝试将它们分解到配置文件中。如果您将该文件放在 /etc 中,您甚至不必手动将其指定为 conffile。

如果最终用户需要对非 conf-file 进行更改,他们应该使用 dpkg-divert 协议来 (1( 将原始文件移到一边,以及 (2( 编辑副本。 软件包升级会考虑转移的文件。使用 dpkg-divert 的最终用户应该意识到,升级后可能会出现问题,因为软件包维护者没有预见到这些文件会被最终用户修改,并且本地修改的版本可能与新升级的版本不兼容其他文件。 dpkg-divert应谨慎使用。

最新更新