Предположим, какой-то пакет для ...
$ apt-get install foo
.. устанавливает благословенный dpkg conffile /etc/foo.conf
(т.е. версия сопровождающего пакета)
Теперь предположим, что после установки пакета /etc/foo.conf
изменено, возможно, чтобы добавить линия.
Теперь мы хотели бы получить различие между версией foo.conf
сопровождающего пакета и текущей (чтобы увидеть, какие локальные изменения конфигурации были сделаны).
Какой самый простой способ сделать это?
Один из способов - установить пакет в изолированную тюрьму, а затем разнести его в чистую. Есть ли более простой способ?
Вы можете установить etckeeper
. Он управляет вашим каталогом /etc
с помощью VCS, автоматически фиксируя до и после каждого использования apt.
Или, вы можете извлечь deb: dpkg-deb -x foo.deb foo
сбросит его содержимое в каталог foo
.
После того, как вы обновите свои пакеты, dpkg сохранит свой новый файл конфигурации с суффиксом .dpkg-new
(если вы решили сохранить свои собственные изменения):
diff -u /etc/foo.conf /etc/foo.conf.dpkg-new
Если вы выбрали перезапись своих файлов , она будет переименована и получит суффикс .dpkg-old
: diff -u /etc/foo.conf.dpkgold /etc/foo.conf
Как сказал шатун, вы также можете извлечь файл .deb. Сначала вам нужно откуда-нибудь получить файл .deb, а затем вы сможете его извлечь. Если вы ранее не запускали apt-get clean
, у вас должен быть файл .deb, уже доступный в /var/cache/apt/archives/
, что означает, что вы можете пропустить часть apt-get download
и соответственно изменить путь для dpkg-deb -x
.
apt-get download foo
dpkg-deb -x foo_<version>_<arch>.deb fs
diff -u fs/etc/foo.conf /etc/foo.conf