'Remorso do Comprador' com apt

7

Esta manhã, instalei algumas atualizações que me perguntaram se eu queria substituir os arquivos de configuração:

Configuration file '/etc/apache2/envvars'
 ==> 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.
*** envvars (Y/I/N/O/D/Z) [default=N] ? N

Eu mantive minha configuração atual, mas depois disso, comecei a pensar:

Existe uma maneira de ver como seria o novo arquivo de configuração depois do fato?

    
por Organic Marble 21.12.2016 / 15:58

3 respostas

5

Eu não testei isso, mas a lógica determina que você possa revisar o arquivo contido no pacote que estava sendo atualizado. Estou assumindo que o pacote apache2 para sua distribuição atual pode ser selecionado em esta página (você pode confirmar verificando seu dpkg.log)

Arquivos DEB são arquivos, que sempre contêm os três arquivos - debian-binary, control.tar.gz e data.tar.gz. Podemos usar o comando dpkg-deb e tar para extrair e visualizar os arquivos do pacote deb, como mostrado abaixo.

Basta extrair os arquivos do pacote para um local temporário. Como um exemplo: dpkg-deb -x packagename.deb /tmp Ajustando o nome do pacote e o local de destino conforme necessário.

Depois de extrair o conteúdo do pacote, extraia o conteúdo do componente data.tar.gz incluído com tar -xvzf data.tar.gz

Localize o arquivo envvars incluído (você pode usar find ./ -name envvars do local onde você extraiu o arquivo data.tar.gz.

Após localizar o arquivo, navegue até esse diretório e use diff envvars /etc/apache2/envvars para exibir as diferenças entre o arquivo de configuração atual e o sugerido. Fontes:

link

man dpkg

man dpkg-deb

man diff

    
por Elder Geek 21.12.2016 / 16:28
3

Estou aceitando a resposta do Elder Geek porque funciona e parece ser a mais aplicável em geral sem sendo muito trabalhoso. A resposta do Waltinator parece-me que funcionaria, mas estou desconfiado da reinstalação.

No entanto, eu criei duas outras maneiras de resolver esse problema.

  1. Eu tenho um clone do meu servidor em execução em uma VM do VirtualBox. Eu tirei um instantâneo, apliquei a atualização (escolhendo as versões do mantenedor do pacote), copiei essas versões para uma unidade compartilhada, excluí o snapshot e fiz a atualização para reais.

    Desvantagem: normalmente eu faço a atualização na máquina virtual primeiro antes da máquina real, então eu teria que saber para tirar o instantâneo primeiro. Talvez seja uma boa prática antes de aplicar qualquer atualização do apache2? Vou ter que pensar sobre isso.

  2. Esta é a resposta mais fácil de todas, mas não sei se é geralmente aplicável. Eu estava usando aptitude e atualizando apache2 , e na pasta /etc/apache2/ , encontrei cópias dos arquivos de configuração do mantenedor do pacote que eu havia rejeitado! Eles foram nomeados apache2.conf.dkpg-dist e envvars.dpkg-dist ! Quão legal é isso?

Desvantagem: não sei se isso acontece apenas com aptitude e \ ou apache2 , mas isso pode não ser aplicável em geral.

    
por Organic Marble 21.12.2016 / 18:36
1

Você pode recriar a condição e escolher de maneira diferente.

Primeiro, copie /etc/apache2/envvars em algum lugar seguro, portanto, no pior dos casos, você poderá restaurá-lo.

dpkg -S /etc/apache2/envvars nos informa que /etc/apache2/envvars faz parte do pacote apache2 , para que você possa reinstalá-lo por meio de:

sudo apt-get install --reinstall apache2
    
por waltinator 21.12.2016 / 16:11