Distinguir as modificações locais verdadeiras dos arquivos de configuração durante a atualização

2

Como posso ver as diferenças entre o estado atual de um conffile e o estado limpo quando o pacote foi instalado?

Estou executando a atualização do Ubuntu Server de 12.04 para 14.04. O instalador afirma que vários arquivos de configuração foram alterados localmente:

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] ?

(Fonte do exemplo: link )

Quando escolho D para verificar diferenças, meu conffile atual é comparado ao estado limpo na versão do pacote new .

Às vezes, há muitas linhas que foram alteradas entre as versões do pacote e não são modificações locais com certeza. Eu gostaria de filtrar essas alterações e exibir as verdadeiras modificações locais. Caso contrário, uma importante modificação local de linha única pode ser facilmente ignorada.

Por exemplo, php.ini tem 447 linhas alteradas de acordo com:

diff /usr/share/php5/php.ini-production /etc/php5/apache2/php.ini | grep -E '^[<>]' -c
    
por Melebius 06.12.2016 / 11:51

2 respostas

0
  1. Pressione Z para entrar no shell.

  2. Obtenha o nome do pacote que forneceu o arquivo. Durante uma atualização do sistema, os comandos apt e dpkg apontam para a nova versão já, então você precisa de outra fonte para verificar sua versão anterior: Abra o link e digite o nome do arquivo em Pesquise o conteúdo dos pacotes . Selecione a versão do sistema ("distribuição") da qual você está atualizando.

    Se você não encontrou nada, retorne à interface de resolução de conflitos ( exit ) e pressione D para exibir as diferenças. Verifique o cabeçalho diff, ele mostra o nome do arquivo desejado:

    --- /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
    

    Nesse caso, é /usr/share/php5/php.ini-production . Pesquise na página da web por este arquivo.

  3. Escolha o nome do pacote correto, a arquitetura do seu sistema e obtenha o URL do pacote (o link abaixo Você pode baixar o arquivo solicitado de… ).

  4. Faça o download do pacote.

    wget http://security.ubuntu.com/ubuntu/pool/main/p/php5/php5-common_5.3.10-1ubuntu3.25_amd64.deb
    
  5. Extraia o arquivo que você deseja comparar.

    dpkg-deb --fsys-tarfile php5-common_5.3.10-1ubuntu3.25_amd64.deb | tar -x ./usr/share/php5/php.ini-production
    
  6. Verifique a diferença.

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

As instruções são baseadas no link .

    
por Melebius 07.12.2016 / 13:48
0

Arquive (backup) seus arquivos de configuração antes de modificá-los.

Um sistema possível resultaria em ...

/etc
/etc/.archives
/etc/.archives/bash.bashrc.00
/etc/.archives/bash.bashrc.01
/etc/bash.bashrc

/etc/.archives/bash.bashrc.00 seria a versão original distribuída. Você poderia usar datas em vez de números se não se importar com nomes longos ...

/etc/.archives/bash.bashrc.20161206.003200

Você pode escrever um script para tornar isso mais fácil também.

    
por DocSalvager 07.12.2016 / 06:38