«Расстройство покупателя» с меткой

7

Сегодня утром я установил несколько обновлений, которые спросили меня, хочу ли я заменить файлы конфигурации:

Configuration file '/etc/apache2/envvars'
 ==> 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.
*** envvars (Y/I/N/O/D/Z) [default=N] ? N

Я сохранил свою текущую конфигурацию, но после этого я начал задаваться вопросом:

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

    
задан Organic Marble 21.12.2016 в 14:58
источник

3 ответа

5

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

Файлы DEB - это архивы, которые всегда содержат три файла: debian-binary, control.tar.gz и data.tar.gz. Мы можем использовать команду dpkg-deb и tar для извлечения и просмотра файлов из пакета deb, как показано ниже.

Просто извлеките файлы из пакета во временное место. В качестве примера: dpkg-deb -x packagename.deb /tmp Настройка имени пакета и целевого местоположения по мере необходимости.

Извлекая содержимое пакета, затем извлеките содержимое включенного компонента data.tar.gz с помощью tar -xvzf data.tar.gz

Найдите прилагаемый файл envvars (вы можете использовать find ./ -name envvars из того места, где вы извлекли файл data.tar.gz.

Расположив файл, перейдите в этот каталог и используйте diff envvars /etc/apache2/envvars , чтобы отобразить различия между текущим конфигурационным файлом и предлагаемым. Источники:

Ссылка

man dpkg

man dpkg-deb

man diff     

ответ дан Elder Geek 21.12.2016 в 15:28
источник
3

Я принимаю ответ Elder Geek , потому что он работает и, кажется, наиболее распространен без будучи слишком трудоемким. Ответ Waltinator кажется мне, что он сработает, но я не могу переустановить.

Однако у меня появилось еще два способа решения этой проблемы.

  1. У меня есть клон моего сервера, работающего в виртуальной виртуальной машине. Я сделал снимок, применил обновление (выбирая версии поддерживающего пакета), скопировал эти версии на общий диск, затем удалил моментальный снимок и сделал обновление для реалов.

    Даунсайд: обычно я делаю обновление на виртуальной машине сначала перед реальной машиной, поэтому мне нужно будет сначала сделать снимок. Может быть, это хорошая практика, прежде чем применять какое-либо обновление apache2? Мне придется подумать об этом.

  2. Это самый простой ответ, но я не знаю, применим ли он вообще. Я использовал aptitude и обновил apache2 , а в папке /etc/apache2/ я нашел копии файлов конфигурации поддерживающего пакета, которые я отклонил! Они были указаны как apache2.conf.dkpg-dist и envvars.dpkg-dist ! Как это круто?

Даунсайд: я не знаю, будет ли это происходить только с aptitude и \ ​​или apache2 , это может быть неприменимо вообще.

    
ответ дан Organic Marble 21.12.2016 в 17:36
1

Вы можете воссоздать условие и выбрать по-другому.

Во-первых, скопируйте /etc/apache2/envvars в безопасное место, поэтому в худшем случае вы можете его восстановить.

dpkg -S /etc/apache2/envvars сообщает нам, что /etc/apache2/envvars является частью пакета apache2 , поэтому вы можете переустановить его через:

sudo apt-get install --reinstall apache2
    
ответ дан waltinator 21.12.2016 в 15:11