我正在处理一些项目的一些包。
假设我的项目中有一个类似的配置文件。
name=foo
mail=foo@foo.com
安装后,用户使用他/她的信息编辑配置文件。
name=user
mail=user@somedomain.com
当更新到来时,为了不破坏用户配置文件,我不会将conf文件替换为新文件,因为所有软件包都应该这样做。
到目前为止没有问题。
如果我在配置文件中添加新参数怎么办?例如,
name=foo
mail=foo@foo.com
age=23
如果我用新的配置文件替换配置文件,用户将丢失其设置。如果我不这样做,我的新参数将无法使用。我想知道这种情况的一般程序是什么?无论是什么包装类型(即rpm,deb或tbz),我的问题都是有效的。
答案 0 :(得分:0)
我不确定我是否看到了这个问题。只要软件可以处理配置文件中缺少字段(即使用合理的默认值),那么您描述的两种方案就没有区别。如果你的软件无法处理该字段的缺席,我认为这是一个错误。
答案 1 :(得分:0)
@William Pursell:只是因为你没有看到问题,这并不意味着没有问题。
这肯定是一个问题,因为我维持deb包装,所以它一直困扰着我。例如:许多配置文件包含注释配置项和包用户在应用其配置更改之前应阅读和理解的其他注释。如果在软件开发的正常过程中,存在新配置项,新默认值或与现有配置项不同的语义,则必须调整注释。这是包维护者的工作。但与此同时,软件包不得混淆用户已经应用的配置更改。
当我在Debian / Ubuntu中执行此操作时,程序包用户面临这个令人生畏的问题:
Configuration file `/etc/...'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** ... (Y/I/N/O/D/Z) [default=N] ?
每个文件。也就是说,对于某些软件包升级,用户每次都必须多次输入yes / no / maybe :-)。事实上,包用户通常不知道这是什么。她必须深入研究文件,差异版本,并做一些猜测才能找出合理的答案。顺便说一下,如果包装系统允许的话,包维护者可能已经做出了答案。
我认识到这个问题可能不存在一般解决方案。但我很想知道其他软件包维护者如何应对这种情况。