ferramenta ou técnica para obter um diff de duas instalações linux diferentes

9

Albert Einstein citação

Insanity: doing the same thing over and over again and expecting different results

Muitas vezes, o Linux me deixa louco porque estou fazendo a mesma coisa várias vezes e obtendo diferentes resultados de caixa para caixa. (Veja minha pergunta anterior ).

Para mim, a maior área de confusão é assumir uma máquina que alguém instalou (como é o caso ao se inscrever em uma empresa de hospedagem). Você simplesmente não sabe com o que está lidando.

Existe algum tipo de ferramenta diff inteligente que eu posso rodar em uma instalação do Linux (Ubuntu) para me dar um aviso sobre como essa máquina mudou da instalação padrão? ?

i.e. Algo que pode me mostrar uma lista dos comandos que vão se comportar de maneira surpreendente, evitando assim uma abordagem de tentativa e erro.

    
por JW01 21.05.2011 / 04:20

4 respostas

10

Sempre que tenho um bom sistema de referência e um mau comportamento, tento compará-los com o vimdiff. O que eu comparo varia com o problema, por exemplo,

1) Ao comparar servidores no nível do pacote, eu crio listas ordenadas de pacotes em cada servidor, envio os resultados aos arquivos e os difiro, por exemplo

no servidor1:

dpkg --get-selections|sort > server1_packages

No servidor2:

dpkg --get-selections|sort > server2_packages

Copie os dois arquivos para a mesma máquina e diferencie-os (ou vimdiff).

2) Faça uma lista de serviços em execução como no exemplo 1

sysv-rc-conf --list|sort > server1_services

sysv-rc-conf --list|sort > server2_services

... etc, e vimdiff esses.

3) Se você estiver solucionando configurações inconsistentes com o Apache, por exemplo, faça cópias dos arquivos de configuração, e vimdiff, etc.

    
por 21.05.2011 / 06:10
5

A maioria das diferenças entre duas instalações da mesma distribuição estará em /etc . Copie o conteúdo de /etc de uma máquina para um diretório temporário na outra e execute

diff -ru /etc /copy/of/other/etc

Se você quiser comparar uma máquina com uma instalação padrão, obtenha uma cópia de uma nova instalação padrão (talvez em uma máquina virtual).

Se você puder controlar uma máquina desde o início, certifique-se de instalar o etckeeper para manter /etc em controle de versão. Então você poderá ver precisamente o que mudou.

Claro, haverá muitas diferenças. Se você ainda não tem uma ideia de onde procurar, essa é a abordagem errada para investigar uma diferença específica no comportamento. Por exemplo, digamos que o comando adduser se comporta de maneira diferente em duas máquinas. Então a melhor abordagem é olhar para o que o adduser está fazendo; execute-o em ambas as máquinas e compare. Se tiver uma opção para dizer que é mais detalhado ( adduser não), use-o. Mais radicalmente, execute o programa em strace , por exemplo

strace -s9999 -efile adduser …

para ver quais arquivos adduser acessam.

    
por 21.05.2011 / 15:41
2
Para voltar a uma pergunta anterior, sua ferramenta bacana, que parece uma boa ideia para mim, mas eu nunca ouvi falar de uma besta como essa, precisa verificar coisas como tipo de sistema de arquivos e tamanhos.

Um exemplo da vida real que aconteceu comigo em 2002: duas pessoas instalaram sistemas SuSE 7.3 em dois servidores montados em rack adjacentes. Eles fizeram um grande esforço para obter os pacotes exatamente iguais em ambos os servidores. Pouco tempo depois, tivemos problemas com alguns softwares em desenvolvimento. Ele veio para o sistema de arquivos ext3 em um servidor, o Reiserfs no outro. Um simples "ls" no Reiserfs fornece nomes de arquivos em ordem lexical, mas não em ext3. Um programa falhou em nomes de arquivo fora de ordem.

    
por 21.05.2011 / 16:04
1

Para arquivos, usuários, grupos, pacotes, serviços, etc. Eu usei o link ; é grátis para alguns servidores e oferece uma boa comparação visual das diferenças entre os servidores .. muito útil para drift

    
por 10.01.2014 / 04:00