narzędzie lub technika, aby uzyskać różnicę dwóch różnych instalacji linuksowych

10

Cytat Alberta Einsteina

Szaleństwo: powtarzanie tego samego w kółko i oczekiwanie różnych rezultatów

Często Linux doprowadza mnie do szału, ponieważ robię to samo w kółko i uzyskuję różne wyniki od pudełka do pudełka. (Zobacz moje poprzednie pytanie ).

Dla mnie największym problemem jest przejęcie maszyny, którą zainstalował ktoś inny (jak ma to miejsce przy rejestracji w firmie hostingowej). Po prostu nie wiesz z czym masz do czynienia.

Czy istnieje jakieś sprytne narzędzie do porównywania, które można uruchomić na instalacji systemu Linux (Ubuntu), aby dowiedzieć się, w jaki sposób ta maszyna zmieniła się od instalacji domyślnej?

tj. coś, co może pokazać mi listę poleceń, które będą zachowywać się zaskakująco, unikając w ten sposób prób i błędów.

JW01
źródło
4
Nie dostaniesz „listy poleceń, które będą się zachowywać zaskakująco”. Oprogramowanie nie jest w stanie przewidzieć, co Cię zaskoczy.
Gilles „SO- przestań być zły”
Dzięki. Te odpowiedzi pozwalają mi lepiej zrozumieć, jak modelować istotne obszary różnic, które należy wziąć pod uwagę przy przejmowaniu komputera zainstalowanego przez kogoś innego. Jak dotąd mamy różnice w: zainstalowanych pakietach , uruchomionych usługach , konfiguracjach i typie systemu plików . Chcę wiedzieć, czy to jest to, czy lista jest nieskończona? @Gilles - tak, przy ograniczonej wiedzy na temat systemu Linux trudno mi przewidzieć, co ja też „zaskoczyłoby”!
JW01
1
Lista jest nieskończona. Nie jest to przykład Linuksa, ale jakiś czas temu Visual Studio nie pokazywał niektórych okien dialogowych na konkretnej maszynie (bez błędu, po prostu puste miejsce, w którym powinny znajdować się kontrolki). Okazało się, że było to spowodowane zainstalowaniem zbyt wielu czcionek. Morał tej historii jest taki, że w zakamarkach zawsze będą niespodzianki.
Gilles „SO- przestań być zły”

Odpowiedzi:

10

Ilekroć mam dobry system referencyjny i niewłaściwie działający, próbuję porównać je z vimdiff. To, co porównuję, różni się w zależności od problemu, np

1) Porównując serwery na poziomie pakietu, tworzę posortowane listy pakietów na każdym serwerze, przesyłam wyniki do plików i różnicuję je, np.

Na serwerze 1:

dpkg --get-selections|sort > server1_packages

Na serwerze 2:

dpkg --get-selections|sort > server2_packages

Skopiuj oba pliki na tę samą maszynę i różnicuj je (lub vimdiff).

2) Zrób listę uruchomionych usług jak w przykładzie 1

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

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

... itd. i vimdiff.

3) Jeśli np. Rozwiązujesz niespójne konfiguracje z Apache, wykonaj kopie plików konfiguracyjnych, vimdiff itp.

Karl
źródło
2
Dobre podsumowanie opcji. Dobrym pomysłem jest również poddanie plików /etckontroli wersji, aby śledzić, co się dzieje. etckeeperzrobi to za ciebie.
Faheem Mitha
Pojawia się komunikat „dpkg: nie udało się otworzyć pliku informacji o pakiecie` / var / lib / dpkg / status 'do odczytu: Brak takiego pliku lub katalogu ”. Jak by to wyglądało na Centos z mniam? PS Nevermind, znalazł „zainstalowaną listę yum”
giorgio79,
5

Większość różnic między dwiema instalacjami tej samej dystrybucji będzie /etc. Skopiuj zawartość /etcjednego komputera do katalogu tymczasowego na drugim i uruchom

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

Jeśli chcesz porównać maszynę z instalacją domyślną, pobierz kopię z nowej instalacji domyślnej (być może na maszynie wirtualnej).

Jeśli możesz kontrolować maszynę od samego początku, zainstaluj etckeeper, aby zachować /etckontrolę wersji. Dzięki temu będziesz mógł dokładnie zobaczyć, co się zmieniło.

Oczywiście będzie wiele różnic. Jeśli nie masz pojęcia, gdzie szukać, jest to niewłaściwe podejście do badania konkretnej różnicy w zachowaniu. Załóżmy na przykład, że polecenie adduserzachowuje się inaczej na dwóch komputerach. Zatem najlepszym podejściem jest przyjrzenie addusersię temu, co się dzieje; uruchom go na obu komputerach i porównaj. Jeśli ma opcję, aby powiedzieć, że jest bardziej szczegółowy ( addusernie), użyj go. Bardziej radykalnie, należy uruchomić program pod strace , np

strace -s9999 -efile adduser …

aby zobaczyć, do których plików adduserdostęp.

Gilles „SO- przestań być zły”
źródło
2

Aby powrócić do wcześniejszego pytania, twoje fajne narzędzie, które wydaje mi się dobrym pomysłem, ale nigdy nie słyszałem o istnieniu takiej bestii, musi sprawdzać takie rzeczy, jak typ i rozmiar systemu plików.

Prawdziwy przykład, który przytrafił mi się w 2002 roku: dwie osoby zainstalowały systemy SuSE 7.3 na dwóch sąsiadujących serwerach montowanych w szafach. Włożyli wiele wysiłku, aby pakiety były dokładnie takie same na obu serwerach. Niedługo potem mieliśmy problemy z niektórymi programami. Sprowadził się do systemu plików ext3 na jednym serwerze, Reiserfs na drugim. Zwykłe „ls” na Reiserfs podaje nazwy plików w porządku leksykalnym, ale nie na ext3. Jeden program zawiódł w przypadku nazw plików poza kolejnością.

Bruce Ediger
źródło
1

Do plików, użytkowników, grup, pakietów, usług itp. Użyłem http://www.scriptrock.com ; jest bezpłatny dla kilku serwerów i daje ładne wizualne porównanie różnic między serwerami .. bardzo przydatny do driftu

mikrofon
źródło