Dodałem tylko problemy z moimi wirtualnymi serwerami Debiana i dodałem, aby ponownie zainstalować je wszystkie od zera. Jednak nadal miałem dostęp do starej wersji i mogłem pobrać listę zainstalowanych pakietów.
Aby ułatwić proces przywracania serwera wirtualnego w przyszłości, chciałbym utworzyć listę konkretnych pakietów dla każdego z moich serwerów.
Aby lepiej wyjaśnić, co chcę osiągnąć. Mam już zautomatyzowany proces tworzenia nowego serwera wirtualnego z kilkoma podstawowymi pakietami i konfiguracjami używanymi wszędzie. Teraz chcę zapisać deltę za pomocą tego „szkieletu”, aby ułatwić ponowną instalację konkretnego serwera.
Prawdziwym plusem będzie również zapisanie zmienionych plików konfiguracyjnych z domyślnych, ale mogę żyć tylko z listą pakietów.
Krótko mówiąc, chcę sposób na utworzenie listy pakietów zainstalowanych na hoście, ale nie na innym.
Będzie naprawdę świetnie, jeśli lista zawiera tylko ręcznie zainstalowane pakiety, a nie listę wszystkich zależności.
Jeśli masz jakieś istniejące narzędzia zaprojektowane do osiągnięcia tego konkretnego zadania, możesz je zaproponować, ale chcę, aby zależność była jak najmniejsza. Dla informacji nie są to dokładnie serwery wirtualne, ale kontenery LXC.
źródło
Odpowiedzi:
W instalacji referencyjnej (tylko raz):
(Zakłada się, że
bash
)Aby pobrać pakiety z instalacji referencyjnej (nie pokazuje to, co zostało usunięte):
Jeszcze lepiej, unikając kopiowania
baselist.txt
:źródło
na starym serwerze uruchom:
skopiuj powyższy plik na nowy serwer i uruchom go na nowym serwerze:
Pamiętaj też o dodaniu wszystkich dodatkowych repozytoriów ze
/etc/apt/sources.list
starego serwera na nowy serwer, przed migracją pakietów, tak jakbyś tego nie robił, wtedy większość pakietów pozostanie niezainstalowana.źródło
cut -f1
najprawdopodobniej będzie szybszy niż awk i jak skomentował odpowiedź Khaleda, diff nie zawsze zwraca poprawny wynik. Rozwiązaniecomm
naprawdę na razie proszę ... Brakuje mi jednak wersji, która zawiera tylko ręcznie zainstalowane pakiety.Możesz użyć następującego polecenia, aby uzyskać pełną listę pakietów na obu serwerach:
Następnie możesz uzyskać różnice za pomocą:
Możesz filtrować potrzebne zmiany za pomocą grep. Można również użyć diff, aby uzyskać zmiany w plikach konfiguracyjnych i wygenerować łatki, które można zastosować w razie potrzeby. Nawiasem mówiąc, diff może porównać dwa foldery nie tylko dwa pliki.
źródło
Blueprint został zaprojektowany specjalnie dla Ciebie. Pluje zainstalowanymi pakietami opisów i zmienionymi plikami konfiguracyjnymi. Jest w stanie przekonwertować te opisy na skrypty Puppet lub Chef, aby zastosować je do czystych skrzynek.
źródło
Znalazłem także ten pomocny pakiet, którego opis jest następujący:
Skrypt Bash, który porównuje drzewo systemu plików pakietu Debian z bieżącym drzewem systemu plików, drukując zunifikowane pliki różnic dla plików, które się różnią.
https://code.google.com/p/dpkg-diffs/
Tylko jeden plik bash, który możesz gdzieś włożyć do ŚCIEŻKI i uruchomić - wydaje się, że działa dla mnie i nie jest za stary.
Mam nadzieję, że to komuś pomoże.
źródło