Отличите истинные локальные модификации conffiles во время обновления

Как я могу просмотреть различия между текущим состоянием 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
2
задан 8 December 2016 в 10:14

2 ответа

  1. Нажмите Z для ввода оболочки.

  2. Получите название пакета, который обеспечил файл. Во время обновления системы, 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. Ищите веб-страницу этот файл.

  3. Выберите корректное имя пакета, архитектуру Вашей системы и получите URL пакета (ссылка ниже, можно загрузить требуемый файл с …).

  4. Загрузите пакет.

    wget http://security.ubuntu.com/ubuntu/pool/main/p/php5/php5-common_5.3.10-1ubuntu3.25_amd64.deb
    
  5. Извлеките файл, который Вы хотите сравнить.

    dpkg-deb --fsys-tarfile php5-common_5.3.10-1ubuntu3.25_amd64.deb | tar -x ./usr/share/php5/php.ini-production
    
  6. Проверьте различие.

    diff -u /etc/php5/apache2/php.ini ./usr/share/php5/php.ini-production | less
    

Инструкции основаны на https://askubuntu.com/a/627018/250300.

0
ответ дан 2 December 2019 в 09:39

Архив (резервное копирование) Ваши файлы конфигурации прежде, чем изменить их.

А возможная система привела бы к...

/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

Вы могли записать сценарий для создания этого легче также.

0
ответ дан 2 December 2019 в 09:39

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

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