Ответ, предоставленный Райаном Томсоном, направлялся в правильном направлении. Тем не менее, он не сможет выполнить эту работу (подробное описание приведено ниже).
Правильно (и самый простой) способ сделать это использует -o
с , apt
чтобы передать DPKG опции и заставить dpkg
спросить вас , хотите ли вы , чтобы сохранить измененные конфигурационные файлы или оригинальные из них. Команда будет такой -
sudo apt-get --reinstall -o Dpkg::Options::="--force-confask" install foo
Это бы задать вам вопрос, как
Configuration file '/etc/foo/foo.conf'
==> Modified (by you or by a script) since installation.
Version in package is the same as at last installation.
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.
*** foo.conf (Y/I/N/O/D/Z) [default=N] ?
Вы должны нажать Y или I, чтобы установить исходный файл конфигурации сопровождающего пакета. Вы даже можете нажать D, чтобы посмотреть, что изменится, или запустить корневую оболочку с опцией Z, чтобы исправить себя.
Примечание. После замены вы найдете измененный файл какat /etc/foo/foo.conf.dpkg-old
Почему другие варианты не будут работать?
Потому что другие параметры в dpkg не работают. Опции, которые имеют дело с файлами конфигурации пакета:
--force-confmiss
--force-confnew
--force-confold
--force-confdef
--force-confmiss
не будет работать, если версия пакета не меняется. С man-страницы
Если файл конфигурации был изменен и версия в пакете действительно изменилась, всегда устанавливайте новую версию без запроса, если также не указан параметр --force-confdef , и в этом случае действие по умолчанию является предпочтительным.
--force-confmiss
работает с отсутствующими конфилями. Это также потерпит неудачу, когда версия не изменилась. Цитирование man-страницы
confmiss: Если файл conffile отсутствует и версия в пакете действительно изменилась, всегда устанавливайте отсутствующий файл conffile без запроса. Это опасно, поскольку означает не сохранять изменения (удалять), внесенные в файл
--force-confold
сохранит измененную версию, только если версия изменена . Для того же пакета это тоже не удастся. Цитирование man-страницы
confold: если conffile был изменен, и версия в пакете действительно изменилась, всегда сохраняйте старую версию без запроса, если также не указан параметр --force-confdef , в этом случае действие по умолчанию является предпочтительным.
--force-confdef
также потерпит неудачу, потому что действие по умолчанию - сохранить более старый файл (Обозначается в сообщении, показанном с помощью --force-confask
. У него есть строка, (Y/I/N/O/D/Z) [default=N]
означающая сохранение по умолчанию. См. выше). И если --force-confnew
указан, но версия не изменится, это тоже не будет работать. Цитирование man-страницы
confdef: если conffile был изменен, а версия в пакете изменилась, всегда выбирайте действие по умолчанию без запроса. Если действия по умолчанию не существует, он перестанет спрашивать пользователя, если только не заданы параметры --force-confnew или --force -confold , и в этом случае он будет использовать это для принятия решения об окончательном действии.
Только --force-confask
сработает, потому что он явно задаст вам вопрос, даже если версия такая же. Цитирование man-страницы
confask: Если conffile был изменен, всегда предлагайте заменить его версией в пакете, даже если версия в пакете не изменилась (начиная с dpkg 1.15.8). Если какой - либо из --force-confmiss , --force-confnew , --force-confold или --force-confdef также дано, оно будет использоваться для определения окончательного действия.
Надеюсь, что это поможет.
foo
, что, еслиbar
зависит,foo
а я не хочу удалятьbar
?