Jak przenieść zainstalowane pakiety i ustawienia z jednej dystrybucji do drugiej?

16

Od kilku miesięcy badam wiedzę na temat systemu Linux za pośrednictwem VirtualBox i zdecydowałem, że chcę ustawić go jako główny system operacyjny i zainstalować go na dysku twardym. Mam wiele plików, pakietów i ustawień (takich jak zmiany .bashrc), które chciałbym przynieść, instalując je bezpośrednio na dysku twardym, więc jak to zrobić? Ponadto, teraz uruchamiam Ubuntu, jeśli zdecyduję się przejść na podobny system Debian lub RPM, dystrybucja oparta na RHEL byłaby to ten sam proces? Jakie względy musiałbym wziąć pod uwagę, jeśli w ogóle?

Tony
źródło
Ubuntu jest pochodną Debiana. Wszystkie pochodne Debiana są bardzo podobne, ponieważ w pakietach wszystkie mają tę samą nazwę, zarządzanie pakietami, konfiguracja itp. I wszystkie są bardzo podobne. Jednak dystrybucje Red Hat, takie jak Fedora, CentOS itp., Nie są tak podobne w takich kwestiach, jak zarządzanie pakietami, chociaż są to w zasadzie to samo oprogramowanie. W większości przypadków powinieneś być w stanie kopiować ustawienia / config itp. Z systemów operacyjnych z rodziny Debian na systemy z rodziny RH.
Faheem Mitha,

Odpowiedzi:

32

Zarządzanie pakietami jest jednym z głównych wyróżników między dystrybucjami. Pomiędzy niepowiązanymi dystrybucjami nie będzie można nic robić automatycznie. Różne dystrybucje dzielą oprogramowanie na różne zestawy pakietów i używają różnych nazw.

Między maszynami z tą samą wersją tej samej dystrybucji można osiągnąć podobną instalację, odtwarzając listę zainstalowanych pakietów. W systemach używających apt, takich jak Debian i pochodne (Ubuntu, Mint,…), używaj apt-clone. Zobacz Jak replikować wybrane pakiety instalacyjne z jednego systemu Debian na inny? (Debian Wheezy) dla dokładnych poleceń. W skrócie, na starej maszynie:

sudo apt-get install apt-clone
apt-clone clone foo

Skopiuj foo.apt-clone.tar.gzna nowy komputer i uruchom

sudo apt-get install apt-clone
sudo apt-clone restore foo.apt-clone.tar.gz

apt-clonemoże działać między powiązanymi dystrybucjami, np. Debian i Ubuntu. Użyj restore-new-distrozamiast restorew tym przypadku. Jeśli to się nie powiedzie, użyj metody ręcznej przy pomocy dpkg --get-selectionsi apt-mark, i majstruj przy liście pakietów, aż apt będzie zadowolony.

W przypadku własnych ustawień jest to prostsze: wystarczy skopiować pliki kropek z katalogu domowego. Z reguły konfiguruj rzeczy niezwiązane ze sprzętem na koncie, a nie w całym systemie; ułatwi to skopiowanie ich na inny komputer.

Gilles „SO- przestań być zły”
źródło
Przewagą nad drugą odpowiedzią poniżej jest to, że ta metoda jest szybsza, ponieważ powolny internet jest pomijany i można użyć szybszego USB 3. Mogą być też inne zalety?
WinEunuuchs2Unix
@ WinEunuuchs2Unix Lista pakietów to tylko kilka kilobajtów. Przeniesienie go przez Internet zajmuje mniej czasu niż znalezienie klucza USB, nie mówiąc już o montażu i wybieraniu plików do skopiowania itd.
Gilles „SO- przestań być zły”
@ Gilles głupie mnie. Myślałem, że foo.apt-clone.tar.gzto skompresowana smoła wszystkich zainstalowanych plików binarnych. Nie zdawałem sobie sprawy, że to po prostu lista zainstalowanych pakietów. Czy obejmuje to również numery wersji z opóźnieniem?
WinEunuuchs2Unix
Wiele błędów.... version mismatch: libgl1-mesa-dri, libmirprotobuf3, xserver-xorg-legacy, libgbm1, libmirclient9, xserver-common, libxatracker2, gnome-software, libmircommon7, libwayland-client0, mesa-vdpau-drivers, adobe-flash-properties-gtk, libwayland-server0, xserver-xorg-core, conky-all, libgles2-mesa, libmircore1, libosmesa6, x11proto-core-dev, dkms, libgl1-mesa-glx, adobe-flashplugin, libegl1-mesa, gnome-software-common, libglapi-mesa, libwayland-cursor0, ubuntu-software, libwayland-egl1-mesa Note that you can use --with-dpkg-repack to include those packges in the clone file.
WinEunuuchs2Unix
@ WinEunuuchs2Unix Myślę, że apt-clone zawiera cały stan dpkg, w tym wstrzymane pakiety. Zauważ, że jeśli chcesz sklonować pełną instalację, jest to zupełnie inna sprawa: celem apt-clone jest to, gdy masz większą przepustowość między maszyną 2 a kopią lustrzaną pakietu niż między maszyną 1 a maszyną 2 (lub mniej kosztowną przepustowością, w że nie chcesz, aby maszyna 1 była zbyt zajęta podczas konfigurowania maszyny 2). Apt-klon działa najlepiej, gdy wszystkie wersje pakietu na komputerze źródłowym są instalowalne.
Gilles „SO- przestań być zły”
10

Jeśli przebywasz w rodzinie Debiana, tak, możesz je bardzo łatwo przenieść. Po prostu wyświetl listę aktualnie zainstalowanych pakietów, zapisz je w pliku, a następnie przeczytaj ten plik, aby je ponownie zainstalować:

  1. Zapisz zainstalowane pakiety w pliku installed:

    dpkg -l | grep ^ii | awk '{print $2}' > installed
    
  2. W nowo zainstalowanej dystrybucji opartej na Debianie zainstaluj zapisane pakiety:

    sudo apt-get install $(cat installed)
    

Możesz też użyć do tego narzędzia GUI. Mięta ma bardzo ładny o nazwie mintbackup:

zrzut ekranu mintbackup

Następnie z nowej instalacji:

kolejny zrzut ekranu mintbackup

terdon
źródło
Byłby dpkg --get-selections | awk '$2 == "install" {print $1}' > instlpkgrównoważny? A może skorzystasz z yum install alien na RHEL / Fedora / CentOS?
Sergiy Kolodyazhnyy
1
Nie tylko reprodukuj selekcje, reprodukuj listę automatycznie instalowanych pakietów, w przeciwnym razie będzie bałagan. Jest tam apt-cloneteraz, który automatyzuje ten. Zobacz unix.stackexchange.com/questions/191662/...
Gilles 'SO- przestań być zły'
Przydatne byłoby również skopiowanie zatrzymanych pakietów. tzn. Conky 1.9 jest utrzymywany, aby Conky 1.10 nie zepsuł wszystkiego. Część odpowiedzi znalazłaby się w wątku AskUbuntu .
WinEunuuchs2Unix
1
Ta odpowiedź jest szybsza niż najczęściej głosowana odpowiedź i nie zawiera wielu komunikatów o błędach, jak apt-clonewyżej. 1/3 z tych błędów opublikowanych w komentarzu powyżej.
WinEunuuchs2Unix
Wygląda świetnie, ale czy można używać mintbackup w Ubuntu 18.04?
WebComer,
1

Ustawienia są zwykle przechowywane w /etc/. etckeeper może się przydać. Jego głównym celem jest przekształcenie /etc/się w repozytorium git, ale filtruje również niektóre części, których nie chciałbyś kopiować, jeśli dobrze rozumiem. Tak więc, jeśli jesteś zaznajomiony git, być może lepiej będzie użyć etckeeperscalenia zmian w nowej instalacji.

Rolf
źródło