outil ou technique pour obtenir un diff de deux installations linux différentes

10

Citation d' Albert Einstein

Folie: faire la même chose encore et encore et attendre des résultats différents

Souvent, Linux me rend fou parce que je fais la même chose encore et encore et que j'obtiens des résultats différents d'une boîte à l'autre. (Voir ma question précédente ).

Pour moi, le plus grand problème de confusion est la prise en charge d'une machine que quelqu'un d'autre a installée (comme c'est le cas lors de l'inscription avec une société d'hébergement Web). Vous ne savez tout simplement pas à quoi vous avez affaire.

Existe-t-il une sorte d' outil de différence intelligent que je peux exécuter sur une installation de Linux (Ubuntu) pour me donner un aperçu de la façon dont cette machine s'est écartée de l'installation par défaut?

c'est-à-dire quelque chose qui peut me montrer une liste des commandes qui vont se comporter de façon surprenante évitant ainsi une approche par essais et erreurs.

JW01
la source
4
Vous n'obtiendrez pas une «liste des commandes qui vont se comporter de façon surprenante». Le logiciel ne peut pas prédire ce que vous trouverez surprenant.
Gilles 'SO- arrête d'être méchant'
Merci. Ces réponses me permettent de mieux comprendre comment modéliser les domaines de différence pertinents à prendre en compte lors de la reprise d'une machine que quelqu'un d'autre a installée. Jusqu'à présent, nous avons des différences dans: les packages installés , les services en cours d'exécution , les configurations et le type de système de fichiers . Je suis intéressé de savoir si c'est ça ou la liste est-elle infinie? @ Gilles - oui, avec une connaissance limitée de linux, j'ai du mal à prédire ce que je trouverais "surprenant" moi aussi!
JW01
1
La liste est infinie. Pas un exemple Linux, mais il y a quelque temps, Visual Studio n'affichait pas de boîtes de dialogue sur une machine particulière (pas d'erreur, juste un espace vide où les contrôles auraient dû être). Cela s'est avéré dû à un trop grand nombre de polices installées. La morale de cette histoire est qu'il y aura toujours des surprises dans les coins.
Gilles 'SO- arrête d'être méchant'

Réponses:

10

Chaque fois que j'ai un bon système de référence et un mauvais comportement, j'essaie de les comparer avec vimdiff. Ce que je compare varie avec le problème, par exemple

1) Lorsque je compare des serveurs au niveau du package, je crée des listes triées de packages sur chaque serveur, envoie les résultats aux fichiers et les diff, par exemple

Sur server1:

dpkg --get-selections|sort > server1_packages

Sur le serveur2:

dpkg --get-selections|sort > server2_packages

Copiez les deux fichiers sur la même machine et différez-les (ou vimdiff).

2) Faites une liste des services en cours d'exécution comme dans l'exemple 1

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

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

... etc., et vimdiff ceux-là.

3) Si vous dépannez des configurations incohérentes avec Apache par exemple, faites des copies des fichiers de configuration, et vimdiffez-les, etc.

Karl
la source
2
Bon résumé des options. C'est aussi une bonne idée de placer les fichiers sous /etccontrôle de version pour vous aider à garder une trace de ce qui se passe. etckeeperfera cela pour vous.
Faheem Mitha
J'obtiens "dpkg: impossible d'ouvrir le fichier d'informations sur le paquet` / var / lib / dpkg / status 'pour lire: Aucun fichier ou répertoire de ce type ". À quoi cela ressemblerait-il à Centos avec miam? PS Nevermind, l'a trouvé "yum list installed"
giorgio79
5

La plupart des différences entre deux installations de la même distribution seront présentes /etc. Copiez le contenu d' /etcune machine dans un répertoire temporaire de l'autre et exécutez

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

Si vous souhaitez comparer une machine avec une installation par défaut, obtenez une copie d'une nouvelle installation par défaut (peut-être dans une machine virtuelle).

Si vous pouvez contrôler une machine depuis le début, assurez-vous d'installer etckeeper pour rester /etcsous contrôle de version. Vous pourrez alors voir précisément ce qui a changé.

Bien sûr, il y aura beaucoup de différences. Si vous ne savez pas encore où chercher, ce n'est pas la bonne approche pour enquêter sur une différence particulière de comportement. Par exemple, supposons que la commande adduserse comporte différemment sur deux machines. Ensuite, la meilleure approche consiste à regarder ce qui adduserse passe; exécutez-le sur les deux machines et comparez. S'il a une option pour lui dire d'être plus verbeux ( adduserne le fait pas), utilisez-le. Plus radicalement, exécutez le programme sous strace , par exemple

strace -s9999 -efile adduser …

pour voir à quels fichiers adduseraccède.

Gilles 'SO- arrête d'être méchant'
la source
2

Pour revenir à une question précédente, votre outil astucieux, qui me semble être une bonne idée, mais je n'ai jamais entendu parler d'une telle bête, doit vérifier des choses comme le type et la taille du système de fichiers.

Un exemple concret qui m'est arrivé en 2002: deux personnes ont installé des systèmes SuSE 7.3 sur deux serveurs montés en rack adjacents. Ils ont mis beaucoup d'efforts pour obtenir les mêmes packages sur les deux serveurs. Un peu plus tard, nous avons eu des problèmes avec certains logiciels en développement. Cela se résumait au système de fichiers ext3 sur un serveur, Reiserfs sur l'autre. Un simple "ls" sur Reiserfs donne les noms de fichiers dans l'ordre lexical, mais pas sur ext3. Un programme a échoué sur les noms de fichiers en panne.

Bruce Ediger
la source
1

Pour les fichiers, les utilisateurs, les groupes, les packages, les services, etc., j'ai utilisé http://www.scriptrock.com ; c'est gratuit pour quelques serveurs et vous donne une belle comparaison visuelle des différences entre les serveurs .. très pratique pour la dérive

Mike
la source