Как я могу просмотреть различия между текущим состоянием conffile и чистым состоянием, когда пакет был установлен?
Я выполняю обновление Сервера Ubuntu от 12,04 до 14,04. Установщик утверждает, что несколько конфигурационных файлов были изменены локально:
Configuration file `/etc/bash.bashrc'
==> 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.
*** bash.bashrc (Y/I/N/O/D/Z) [default=N] ?
(Источник примера: https://raphaelhertzog.com/2010/09/21/debian-conffile-configuration-file-managed-by-dpkg/)
Когда я выбираю D для проверки различий, мой текущий conffile сравнивается с чистым состоянием в новой версии пакета.
Иногда существует много строк, которые были изменены между версиями пакета и не являются локальными модификациями наверняка. Я хотел бы отфильтровать такие изменения и отобразить истинные локальные модификации. Иначе важная одна строка локальная модификация может быть легко пропущена.
Например, php.ini
имеет 447 измененных строк согласно:
diff /usr/share/php5/php.ini-production /etc/php5/apache2/php.ini | grep -E '^[<>]' -c
Нажмите Z для ввода оболочки.
Получите название пакета, который обеспечил файл. Во время обновления системы, apt
и dpkg
команды уже указывают на новую версию, таким образом, Вам нужен другой источник для проверки предыдущей версии: Откройте http://packages.ubuntu.com/ и введите имя файла в Поиск содержание пакетов. Выберите версию системы (“распределение”), Вы обновляете от.
Если Вы ничего не нашли, возвратитесь к интерфейсу разрешения конфликтов (exit
) и нажмите D для отображения различий. Проверьте различный заголовок, он показывает желаемое имя файла:
--- /etc/php5/apache2/php.ini 2014-01-08 00:58:08.000000000 +0100
+++ /usr/share/php5/php.ini-production 2016-10-03 15:14:37.000000000 +0200
В этом случае это /usr/share/php5/php.ini-production
. Ищите веб-страницу этот файл.
Выберите корректное имя пакета, архитектуру Вашей системы и получите URL пакета (ссылка ниже, можно загрузить требуемый файл с …).
Загрузите пакет.
wget http://security.ubuntu.com/ubuntu/pool/main/p/php5/php5-common_5.3.10-1ubuntu3.25_amd64.deb
Извлеките файл, который Вы хотите сравнить.
dpkg-deb --fsys-tarfile php5-common_5.3.10-1ubuntu3.25_amd64.deb | tar -x ./usr/share/php5/php.ini-production
Проверьте различие.
diff -u /etc/php5/apache2/php.ini ./usr/share/php5/php.ini-production | less
Инструкции основаны на https://askubuntu.com/a/627018/250300.
Архив (резервное копирование) Ваши файлы конфигурации прежде, чем изменить их.
А возможная система привела бы к...
/etc
/etc/.archives
/etc/.archives/bash.bashrc.00
/etc/.archives/bash.bashrc.01
/etc/bash.bashrc
/etc/.archives/bash.bashrc.00 был бы исходной распределенной версией. Вы могли использовать даты вместо чисел, если Вы не возражаете против длинных имен...
/etc/.archives/bash.bashrc.20161206.003200
Вы могли записать сценарий для создания этого легче также.