Что делает “новый” средний для “dpkg - сила-confnew”?

Мне недавно дали задачу поддержания и портирования на Надежного человека внутренний .deb пакет, который перезаписывает (использование --force-overwrite) файлы конфигурации от других пакетов с настроенными версиями, после который apt-get install -f -y выполненный должен установить набор связанных пакетов, перечисленных как зависимости, некоторые из которых являются законными владельцами тех файлов конфигурации (Сохраняют Ваши подлые комментарии и крики террора себе). Обратите внимание, что этот пакет отмечает файлы конфигурации как файлы конфигурации, а не как регулярные файлы.

В процессе попытки очистить вещь, я обнаружил это если apt-get передается -o Dpkg::Options::="--force-confold", затем файлы конфигурации от нашего пользовательского пакета будут перезаписаны версиями зависимостей, в то время как если -o Dpkg::Options::="--force-confnew" используется, файлы нашего пакета останутся в конце.

Однако dpkg состояния страницы справочника:

confnew: Если conffile был изменен, и версия в пакете действительно изменяла, всегда устанавливала новую версию без запроса, если --force-confdef также указан, в этом случае действие по умолчанию предпочтено.

confold: Если conffile был изменен, и версия в пакете действительно изменяла, всегда сохраняет старую версию без запроса, если --force-confdef также указан, в этом случае действие по умолчанию предпочтено.

Поскольку "новая версия" установлена, в то время как "старая версия" сохранена, это, кажется, подразумевает, что "новая версия" всегда является той в пакете, устанавливаемом в тот момент, и таким образом передача -o Dpkg::Options::="--force-confnew" кому: apt-get должен заставить файлы конфигурации зависимостей перезаписывать тех, которых наш пакет установил за момент до этого. Почему этот не имеет место? Фактическое означает "новой версии" на самом деле на основе меток времени (который просто поднял бы дальнейшие вопросы)? Это ошибка в документации и/или реализации dpkg? Это просто волосатый пограничный случай, вызванный двумя пакетами, предъявляющими права на те же файлы конфигурации что dpkg разработчики думали, что никто никогда не будет достаточно безумен для спотыкания через? Что?

3
задан 5 February 2015 в 15:45

1 ответ

Я полагаю, что выяснил то, что продолжалось: Поскольку зависимости для пользовательского пакета не установлены, когда dpkg -i выполняется, пакет регистрируется в системе пакета, и ни это, ни ее файлы конфигурации не установлены в то время. То, когда apt-get install -f выполняется, зависимости установлены, и тогда , сам пакет установлен, и именно в этой точке файлы конфигурации установлены и --force-conf*, политика передала apt-get, вступает в силу. Таким образом, это не был вопрос --force-confnew так как порядок событий при установке испытывающего недостаток в зависимости пакета с dpkg.

0
ответ дан 18 November 2019 в 04:25

Другие вопросы по тегам:

Похожие вопросы: