Tool oder Technik, um einen Unterschied zwischen zwei verschiedenen Linux-Installationen zu erhalten

10

Albert Einstein Zitat

Wahnsinn: Immer wieder dasselbe tun und unterschiedliche Ergebnisse erwarten

Oft-Zeiten, Linux macht mich verrückt , weil ich die gleiche Sache immer und immer wieder mache und immer unterschiedliche Ergebnisse von Box zu Box. (Siehe meine vorherige Frage ).

Für mich besteht die größte Verwirrung darin, einen Computer zu übernehmen, den jemand anderes installiert hat (wie dies bei der Anmeldung bei einem Webhosting-Unternehmen der Fall ist). Sie wissen einfach nicht, womit Sie es zu tun haben.

Gibt es eine Art cleveres Diff-Tool , das ich unter einer Linux-Installation (Ubuntu) ausführen kann, um mir einen Überblick darüber zu geben, wie dieser Computer von der Standardinstallation abgewichen ist?

dh etwas, das mir eine Liste der Befehle zeigen kann, die sich überraschend verhalten werden, wodurch ein Versuch-und-Irrtum-Ansatz vermieden wird.

JW01
quelle
4
Sie erhalten keine "Liste der Befehle, die sich überraschend verhalten werden". Software kann nicht vorhersagen, was Sie überraschen wird.
Gilles 'SO - hör auf böse zu sein'
Vielen Dank. Diese Antworten geben mir ein besseres Verständnis dafür, wie die relevanten Unterschiede modelliert werden können, die bei der Übernahme einer von einer anderen Person installierten Maschine berücksichtigt werden müssen. Bisher gibt es Unterschiede in: installierten Paketen , ausgeführten Diensten , Konfigurationen und Dateisystemtyp . Ich bin interessiert zu wissen, ob es das ist oder ist die Liste unendlich? @ Gilles - ja, mit begrenzten Linux-Kenntnissen fällt es mir schwer vorherzusagen, was mich selbst "überraschen" würde!
JW01
1
Die Liste ist unendlich. Kein Linux-Beispiel, aber vor einiger Zeit hat Visual Studio einige Dialogfelder auf einem bestimmten Computer nicht angezeigt (kein Fehler, nur leerer Bereich, in dem sich die Steuerelemente hätten befinden sollen). Es stellte sich heraus, dass zu viele Schriftarten installiert waren. Die Moral dieser Geschichte ist, dass immer Überraschungen in Ecken lauern werden.
Gilles 'SO - hör auf böse zu sein'

Antworten:

10

Immer wenn ich ein gutes Referenzsystem habe und ein schlechtes, versuche ich, sie mit vimdiff zu vergleichen. Was ich vergleiche, hängt vom Problem ab, z

1) Beim Vergleich von Servern auf Paketebene erstelle ich sortierte Paketlisten auf jedem Server, sende die Ergebnisse an Dateien und verteile sie, z

Auf Server1:

dpkg --get-selections|sort > server1_packages

Auf Server2:

dpkg --get-selections|sort > server2_packages

Kopieren Sie beide Dateien auf denselben Computer und diff (oder vimdiff) sie.

2) Erstellen Sie eine Liste der ausgeführten Dienste wie in Beispiel 1

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

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

... etc. und vimdiff die.

3) Wenn Sie beispielsweise inkonsistente Konfigurationen mit Apache beheben, erstellen Sie Kopien der Konfigurationsdateien und vimdiff diese usw.

Karl
quelle
2
Gute Zusammenfassung der Optionen. Es ist auch eine gute Idee, Dateien unter /etcVersionskontrolle zu stellen, damit Sie den Überblick behalten, was gerade passiert. etckeeperwerde das für dich tun.
Faheem Mitha
Ich erhalte die Meldung "dpkg: Paketinfo-Datei" / var / lib / dpkg / status "konnte nicht zum Lesen geöffnet werden: Keine solche Datei oder kein solches Verzeichnis". Wie würde das auf Centos mit lecker aussehen? PS Nevermind, fand es "yum Liste installiert"
giorgio79
5

Die meisten Unterschiede zwischen zwei Installationen derselben Distribution bestehen darin /etc. Kopieren Sie den Inhalt /etcvon einem Computer in ein temporäres Verzeichnis auf dem anderen und führen Sie ihn aus

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

Wenn Sie eine Maschine mit einer Standardinstallation vergleichen möchten, erhalten Sie eine Kopie einer neuen Standardinstallation (möglicherweise in einer virtuellen Maschine).

Wenn Sie eine Maschine von Anfang an steuern können , müssen Sie etckeeper installieren , um die /etcVersionskontrolle zu gewährleisten . Dann können Sie genau sehen, was sich geändert hat.

Natürlich wird es viele Unterschiede geben. Wenn Sie noch keine Vorstellung davon haben, wo Sie suchen sollen, ist dies der falsche Ansatz, um einen bestimmten Unterschied im Verhalten zu untersuchen. Angenommen, der Befehl adduserverhält sich auf zwei Computern unterschiedlich. Dann ist der beste Ansatz zu sehen, was addusertut; Führen Sie es auf beiden Computern aus und vergleichen Sie es. Wenn es eine Option gibt, die besagt, dass es ausführlicher sein soll ( addusernicht), verwenden Sie es. Führen Sie das Programm radikaler aus , z

strace -s9999 -efile adduser …

um zu sehen, auf welche Dateien adduserzugegriffen wird.

Gilles 'SO - hör auf böse zu sein'
quelle
2

Um auf eine frühere Frage zurückzukommen, muss Ihr geschicktes Tool, das für mich nach einer guten Idee klingt, aber ich habe noch nie von einem solchen Tier gehört, Dinge wie den Typ und die Größe des Dateisystems überprüfen.

Ein Beispiel aus dem wirklichen Leben, das mir im Jahr 2002 passiert ist: Zwei Personen haben SuSE 7.3-Systeme auf zwei benachbarten Rack-Servern installiert. Sie haben sich viel Mühe gegeben, um die Pakete auf beiden Servern genau gleich zu machen. Kurze Zeit später hatten wir Probleme mit Software in der Entwicklung. Es ging um das ext3-Dateisystem auf einem Server, Reiserfs auf dem anderen. Ein einfaches "ls" in Reiserfs gibt Dateinamen in lexikalischer Reihenfolge an, jedoch nicht in ext3. Ein Programm ist bei Dateinamen fehlgeschlagen.

Bruce Ediger
quelle
1

Für Dateien, Benutzer, Gruppen, Pakete, Dienste usw. habe ich http://www.scriptrock.com verwendet . Es ist für einige Server kostenlos und bietet Ihnen einen schönen visuellen Vergleich der Unterschiede zwischen den Servern. Sehr praktisch für Drift

Mike
quelle