Что мне делать, когда я добавляю новый параметр конфигурации в файл конфигурации моего пакета?

Я занимаюсь созданием пакетов некоторых проектов.

Предположим, у меня есть такой файл конфигурации в моем проекте.

name=foo
[email protected]

После установки пользователь редактирует файл конфигурации со своей информацией.

name=user
[email protected]

Когда приходит обновление, чтобы не испортить конфигурационный файл пользователя, я не заменяю конфигурационный файл на новый, как это должны делать все пакеты.

До этого момента проблем нет.

Что, если я добавлю новый параметр в свой файл конфигурации? Например,

name=foo
[email protected]
age=23 

Если я заменю файл конфигурации на новый, пользователь потеряет свои настройки. Если я этого не сделаю, мой новый параметр нельзя будет использовать. Интересно, каковы общие процедуры для этих условий? Мой вопрос актуален независимо от того, какие это типы пакетов (например, rpm, deb или tbz).


person ibrahim    schedule 02.03.2013    source источник
comment
Что такое tbz? Это опечатка для tgz или что-то новое?   -  person William Pursell    schedule 03.03.2013
comment
Расширение пакета @William Pursell для freebsd   -  person ibrahim    schedule 03.03.2013


Ответы (2)


@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] ?

для каждого отдельного файла. То есть для некоторых обновлений пакетов пользователь должен набирать да/нет/может быть :-) много раз, каждый раз. Дело в том, что пользователь пакета обычно не знает, о чем идет речь. Ей приходится копаться в файлах, сравнивать версии и делать предположения, чтобы найти разумный ответ. Кстати, ответ, который мог бы уже дать мейнтейнер пакета, если бы система упаковки позволяла это.

Я понимаю, что общего решения этой проблемы может не существовать. Но я хотел бы услышать, как другие сопровождающие пакетов справляются с ситуацией.

person Othmar Wigger    schedule 11.03.2015

Я не уверен, что вижу проблему. Пока программное обеспечение может обрабатывать отсутствие поля в файле конфигурации (т. е. использовать разумное значение по умолчанию), в двух описанных вами сценариях нет никакой разницы. Если ваше программное обеспечение не может обработать отсутствие поля, я бы сказал, что это ошибка.

person William Pursell    schedule 03.03.2013