【问题标题】:What should I do when I add a new config parameter to config file of my package?当我在我的包的配置文件中添加一个新的配置参数时,我应该怎么做?
【发布时间】:2013-02-17 06:01:48
【问题描述】:

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

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

name=foo
mail=foo@foo.com

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

name=user
mail=user@somedomain.com

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

到目前为止没有问题。

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

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

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

【问题讨论】:

  • 什么是tbz?是tgz 的错字还是新的东西?
  • @William Pursell 的 freebsd 包扩展

标签: linux package configuration-files package-managers


【解决方案1】:

@William Pursell:仅仅因为你没有看到问题,并不意味着没有问题。

这绝对是一个问题,自从我维护 deb 包以来,它一直困扰着我。例如:许多配置文件包含注释的配置项和其他 cmets,包用户在应用他的配置更改之前应该阅读和理解这些内容。如果在正常的软件开发过程中,有新的配置项、新的默认值,或者与现有的语义不同,则必须对 cme​​ts 进行调整。这是包维护者的工作。但同时,包不能与用户已经应用的配置更改混为一谈。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-08
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      相关资源
      最近更新 更多