Przywracanie wszystkich danych i zależności z dpkg --set-selections '*'


44

Więc mogę uruchomić na jednej maszynie:

dpkg --get-selections '*' > selection.txt

Na innym komputerze:

dpkg --set-selections < selection.txt

... a następnie jedno z poniższych:

aptitude install
apt-get -u dselect-upgrade

... aby zainstalować pakiety, które.

Wydaje się jednak, że niektóre informacje zostają utracone w procesie, np. Czy pakiet (powiedzmy xyz) został zainstalowany automatycznie jako zależność od innego pakietu ( abc). Możesz to zobaczyć za każdym razem, gdy robisz coś takiego apt-get --purge remove abc. Na oryginalnej maszynie zostaniesz powiadomiony, że pakiet xyzzostał zainstalowany jako zależność abci że możesz go użyć, apt-get autoremoveaby się go pozbyć.

Teraz jestem świadomy deborphani debfoster, ale korzystanie z nich jest kłopotliwe, biorąc pod uwagę (proste) zadanie.

Wydaje się, że zapisywanie i przywracanie wybranych opcji nie jest wystarczające, aby przywrócić subtelne zależności zainstalowanych pakietów.

Czy istnieje sposób na wykonanie kopii zapasowej pełnego zestawu metadanych do zarządzania pakietami i przywrócenie go w całości?


Często zastanawiałem się nad tym samym, co generuję duży skrypt powłoki z „sudo apt-get install” ze wszystkimi moimi pakietami (minus libs). Oczywiście napotkałem ten sam problem, który masz.
Chuck R

Sądzę, że najlepszym miejscem do rozpoczęcia byłoby sprawdzenie, czy dpkg jest w rzeczywistości odpowiedzialny za te informacje. Jeśli nie, to może to jest praca apt.
Huckle,

3
Jeśli korzystasz z metody ręcznej, możesz być zainteresowany apt-markzapisywaniem / przywracaniem informacji o pakietach zainstalowanych automatycznie lub ręcznie
Lekensteyn

Nie ma go w repozytorium pakietów 10.04, prawda? Czy jest to część repozytoriów Canonical czy firm zewnętrznych?
0xC0000022L

2
Nie, to tylko komentarz „dla twojej informacji”. Użyłbym apt-mark (jest to część apt, więc powinien już być zainstalowany), aby uzyskać i ustawić znaczniki dla pakietów (szczegóły na jego stronie podręcznika ).
htorque

Odpowiedzi:


39

Utworzyć kopię zapasową:

apt-mark showauto > pkgs_auto.lst
apt-mark showmanual > pkgs_manual.lst

Przywracać:

sudo apt-mark auto $(cat pkgs_auto.lst)
sudo apt-mark manual $(cat pkgs_manual.lst)

Dzięki, właśnie miałem prosić, żebyś ty lub Lekensteyn napisali to jako odpowiedź.
0xC0000022L

Czy te polecenia pozwalają ponownie zainstalować programy z tej listy?
Svetlana Belkin

czy może to usunąć pakiety, które są instalowane podczas przywracania?
n611x007

1
Czy potrafisz wyjaśnić różnicę między autoi manual? Dzięki.
Anto

Przypadkowo oznaczyłem jako ręczny kilka innych paczek ... czy istnieje sposób na przywrócenie? Dzięki
dentex,

2

Wybrana odpowiedź na to pytanie jest niekompletna i nie działa (lub już nie działa). Bolesną poprawką jest użycie pętli bash for-pars do przetworzenia plików wyjściowych * .lst i przesłania ich do apt install. Jednak zły wybór, więc nie zostanie to zilustrowane.

Lepszym wyborem jest użycie apt-clone, jak widać w tej odpowiedzi na Stackexchange dla systemów Unix i Linux. To tworzy mały plik (około 100 KB lub mniej dla mojego systemu). Podobno sklonuje paczki przy niewielkim wysiłku lub bólu.

Krótko mówiąc, na oryginalnej maszynie:

apt-clone clone `uname -n`

Następnie na komputerze do klonowania skopiuj plik klonowania i uruchom:

apt-clone restore original-machine-name.apt-clone.tar.gz

Podaję tę odpowiedź tutaj, ponieważ ta strona pojawiła się podczas początkowego wyszukiwania w sieci, ale druga odpowiedź nie. Ta metoda wygląda o wiele łatwiej.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.