Encontrando diff para conffile?

2

Suponha que algum pacote seja ...

$ apt-get install foo

.. instala um conffile /etc/foo.conf do dpkg (versão do mantenedor do pacote)

Agora, suponha que após a instalação do pacote /etc/foo.conf seja modificado, talvez para adicionar uma linha.

Agora gostaríamos de obter um diff entre a versão do mantenedor do pacote de foo.conf e a atual (para ver quais alterações na configuração local foram feitas).

Qual é a maneira mais fácil de fazer isso?

Uma maneira seria instalar o pacote em uma jaula chroot e depois diferenciá-lo na limpa. Existe uma maneira mais fácil?

    
por Andrew Tomazos 27.01.2013 / 10:33

2 respostas

3

Depois de atualizar seus pacotes, o dpkg salvará seu novo arquivo de configuração com um sufixo .dpkg-new (se você optar por manter suas próprias alterações):

diff -u /etc/foo.conf /etc/foo.conf.dpkg-new

Se você optou por sobrescrever seus arquivos de configuração, ele será renomeado e receberá um sufixo .dpkg-old :     diff -u /etc/foo.conf.dpkgold /etc/foo.conf

Como tumbleweed disse, você também pode extrair o arquivo .deb. Primeiro você precisa pegar o arquivo .deb de algum lugar e então você poderá extraí-lo. Se você não executou apt-get clean antes, deverá ter um arquivo .deb já disponível em /var/cache/apt/archives/ , o que significa que você pode pular a parte apt-get download e ajustar o caminho para dpkg-deb -x de acordo.

apt-get download foo
dpkg-deb -x foo_<version>_<arch>.deb fs
diff -u fs/etc/foo.conf /etc/foo.conf
    
por Lekensteyn 27.01.2013 / 11:00
2

Você pode instalar etckeeper . Ele gerencia seu diretório /etc com um VCS, confirmando automaticamente antes e depois de cada vez que você usar o apt.

Ou você pode extrair o deb: dpkg-deb -x foo.deb foo , irá despejar seu conteúdo no diretório foo .

    
por tumbleweed 27.01.2013 / 10:53