【问题标题】:how to create a debian package which updates only required files while updating the package如何创建一个 debian 包,在更新包时只更新所需的文件
【发布时间】:2012-05-14 19:40:46
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: linux unix ubuntu debian packaging


    【解决方案1】:

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

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

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

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

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

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

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

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

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

    【讨论】:

    • 我将尝试通过简单的示例来解释我想要实现的目标。假设我在 data.tar.gz 中有两个文件,比如说 test1.sh,test2.sh,我的 debain 包版本是 2.0,我已经更新了系统中文件中的 test2,并且我已经创建了带有 2.1 版本的新 debian 包test1.sh 中的一些变化。如果我更新了我的包,两个文件将被更新,我不想要,我只想更新 test1.sh,如果我只有几个文件,上面的解释会起作用,如果我的包包含更多文件,还有其他可能性超过 100 个文件,除非创建 con 文件..
    • @Celeda 只知道我看过另一篇关于 dpkg-divert 的帖子,但这在我的场景中不起作用,最终用户永远不会使用 dpkg-divert 来更改文件....是否有任何其他可能性来控制删除所有以前的版本文件并在此图中的“postrm upgrade”和“posinst configure”调用上安装新版本wiki.debian.org/MaintainerScripts 或任何其他方式来控制安装的默认行为无论如何感谢您的时间和支持
    • 请解释“最终用户永远不会使用 dpkg-divert 来更改文件的地方”。为什么他们不使用dpkg-divert 来更改非配置文件?使用dpkg-divert 正是他们应该使用的。
    • 感谢您的帮助和时间...我已经通过在升级新版本之前备份文件解决了这个问题...最终用户不会使用 dpkg-divert 因为我不想要它们用于保持各种系统的一致性.....
    猜你喜欢
    • 2013-10-02
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多