1

我正在处理一些项目的一些包。

假设我的项目中有一个这样的配置文件。

name=foo
mail=foo@foo.com

安装后,用户使用他/她的信息编辑配置文件。

name=user
mail=user@somedomain.com

当更新到来时,为了不破坏用户配置文件,我不会像所有软件包一样用新文件替换 conf 文件。

到目前为止没有问题。

如果我在我的配置文件中添加一个新参数怎么办?例如,

name=foo
mail=foo@foo.com
age=23 

如果我用新的配置文件替换,用户将丢失其设置。如果我不这样做,我的新参数将无法使用。我想知道这种情况的一般程序是什么?无论它是什么包类型(即 rpm、deb 或 tbz),我的问题都是有效的。

4

2 回答 2

0

我不确定我是否看到了问题。只要软件可以处理config文件中没有字段的情况(即使用合理的默认值),那么你描述的两种场景没有区别。如果您的软件无法处理该字段的缺失,我认为这是一个错误。

于 2013-03-03T01:49:09.500 回答
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 :-)。事实上,包用户通常不知道这是怎么一回事。她必须深入研究文件,比较版本,并进行一些猜测才能找出合理的答案。顺便说一句,如果包装系统允许的话,包装维护者可能已经做出了回答。

我认识到这个问题可能不存在通用解决方案。但我很想听听其他包维护者如何应对这种情况。

于 2015-03-11T07:41:16.990 回答