ferramenta ou técnica para obter uma comparação de duas instalações Linux diferentes

10

Citações de Albert Einstein

Insanidade: fazer a mesma coisa repetidamente e esperar resultados diferentes

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

Para mim, a maior área de confusão é adquirir uma máquina instalada por outra pessoa (como é o caso ao se inscrever em uma empresa de hospedagem na web). Você simplesmente não sabe com o que está lidando.

Existe algum tipo de ferramenta diff inteligente que eu possa executar em uma instalação do Linux (Ubuntu) para me informar sobre como essa máquina saiu da instalação padrão?

ou seja, algo que possa me mostrar uma lista dos comandos que irão se comportar surpreendentemente, evitando assim uma abordagem de tentativa e erro.

JW01
fonte
4
Você não receberá uma "lista dos comandos que se comportarão surpreendentemente". O software não pode prever o que você achará surpreendente.
Gilles 'SO- stop be evil'
Obrigado. Essas respostas estão me dando uma melhor compreensão de como modelar as áreas pertinentes de diferença que precisam ser consideradas ao assumir o controle de uma máquina que outra pessoa instalou. Até agora, temos diferenças em: pacotes instalados , serviços em execução , configurações e tipo de sistema de arquivos . Estou interessado em saber se é isso ou a lista é infinita? @ Gilles - sim, com conhecimento limitado de linux, acho difícil prever o que eu 'acho surpreendente' também!
JW01
11
A lista é infinita. Não é um exemplo do Linux, mas há um tempo atrás, o Visual Studio não mostrava algumas caixas de diálogo em uma máquina específica (nenhum erro, apenas espaço vazio onde os controles deveriam estar). Acabou sendo devido a ter muitas fontes instaladas. A moral desta história é que sempre haverá surpresas à espreita.
Gilles 'SO- stop be evil'

Respostas:

10

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

1) Ao comparar servidores no nível do pacote, crio listas classificadas de pacotes em cada servidor, envio os resultados para os 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 faça a diferença (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 aqueles.

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

Karl
fonte
2
Bom resumo de opções. Também é uma boa idéia colocar os arquivos sob /etccontrole de versão para ajudá-lo a acompanhar o que está acontecendo. etckeeperfará isso por você.
Faheem Mitha
Estou recebendo "dpkg: falha ao abrir o arquivo de informações do pacote` / var / lib / dpkg / status 'para leitura: Não existe esse arquivo ou diretório ". Como isso ficaria no Centos com o yum? PS Não importa, achou "yum lista instalado"
giorgio79
5

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

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

Se você deseja 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ê pode controlar uma máquina desde o início, instale o etckeeper para manter o /etccontrole da versão. Então você poderá ver exatamente o que mudou.

Claro, haverá muitas diferenças. Se você ainda não tem uma idéia de onde procurar, esta é a abordagem errada para investigar uma diferença específica de comportamento. Por exemplo, digamos que o comando adduserse comporte de maneira diferente em duas máquinas. Então a melhor abordagem é olhar para o que adduserestá fazendo; execute-o nas duas máquinas e compare. Se houver uma opção para dizer que é mais detalhado ( addusernão), use-o. Mais radicalmente, execute o programa sob strace , por exemplo

strace -s9999 -efile adduser …

para ver quais arquivos adduseracessam.

Gilles 'SO- parar de ser mau'
fonte
2

Para voltar a uma pergunta anterior, sua ferramenta bacana, que me parece uma boa idéia, mas nunca ouvi falar de uma fera assim, precisa verificar coisas como tamanhos e tipo de sistema de arquivos.

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

Bruce Ediger
fonte
1

Para arquivos, usuários, grupos, pacotes, serviços, etc, eu usei http://www.scriptrock.com ; é gratuito para alguns servidores e oferece uma boa comparação visual das diferenças entre os servidores .. muito útil para drift

Mike
fonte