gpt4 book ai didi

linux - 如何创建一个 debian 软件包,在更新软件包时仅更新所需的文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:08 29 4
gpt4 key购买 nike

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

http://www.quietsche-entchen.de/cgi-bin/wiki.cgi/-wiki/CreatingDebianPackagesDebian 维基 http://wiki.debian.org/HowToPackageForDebian http://www.debian.org/doc/manuals/maint-guide/这些对于初学者来说是非常好的 Material ,

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

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

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

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

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

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

最佳答案

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

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

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

要将文件设为配置文件,请将其列在 debian/conffiles 中。但如果该文件要安装在 /etc 下,那么您不需要执行此操作,因为 dh_installdeb 会为您执行此操作。

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

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

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

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

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

关于linux - 如何创建一个 debian 软件包,在更新软件包时仅更新所需的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10589969/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com