Korzystanie z dpkg do instalowania pakietów aktualizacji i dystrybucji

9

Dlatego bawię się instalacją pakietów offline na serwerze 12.04, pobierając pakiety, pobierając i zapisując ich identyfikatory URI, postępując zgodnie z instrukcjami tutaj: http://www.webupd8.org/2009/11/get-list-of-packages- and-dependencies.html

Zrobiłem to z apt-get upgradea apt-get dist-upgrade, a następnie udał się o zainstalowanie pobranych pakietów użyciu dpkg -i. Tak więc proces wyglądał tak:

  1. Uzyskaj identyfikatory URI
  2. wgetpakiety do folderu ( upgradepakiety do / upgrade i dist-upgradepakiety do / dist-upgrade)
  3. uruchom dpkg -i /upgrade/*.debi wtedydpkg -i /dist-upgrade/*.deb

Moje pytanie brzmi: czy ta metoda ręcznego instalowania zaktualizowanych pakietów poprawnie zaktualizuje wszystko, dając taki sam wynik, jak gdybym tylko uruchomił apt-get upgradei działał apt-get dist-upgradenormalnie? Czy jest coś, co apt-getrobią normalne polecenia, czego nie można zrobić w ten sposób?

R4mzy
źródło

Odpowiedzi:

15

Zamiast używać dpkg, który jest menedżerem pakietów niskiego poziomu, lepiej byłoby użyć apt. Aby zainstalować pliki .deb przy użyciu apt, skopiuj je do apt cache

sudo cp *.deb /var/cache/apt/archives/

a następnie po prostu wykonaj regularną aktualizację:

apt-get upgrade

aptKomenda użyć plików w pamięci podręcznej zamiast pobierać je z sieci, tak że prawie służy swój cel.

sayantankhan
źródło
Dzięki, to działa świetnie. Chociaż nadal jestem ciekawy, co dokładnie aptrobi inaczej niż dpkgw tym przypadku, biorąc pod uwagę, że pierwotnie aptuzyskiwałem identyfikatory URI wszystkich pakietów, w tym ich zależności? Jeśli chodzi o faktyczny proces instalacji, wygląda na to, że aptpo prostu używa się dpkggo do rozpakowania i instalacji pakietów, jedyną różnicą jest to, że aptwcześniej sprawdza zależności (ale jest to już uwzględnione, ponieważ aptpobierałem pakiety, w tym zależności w pierwszej kolejności). Chyba że coś mi umknie?
R4mzy
Ponadto częściowo pytam, dlaczego martwię się o to, jakie apt'szachowanie może wystąpić, jeśli powiedzmy, że pobrane pakiety zostały skopiowane do systemu, który miał dostęp do Internetu, a następnie aptwidzi, że niektóre lub wszystkie pobrane pakiety nie są najnowsze (ale nowszy niż obecnie zainstalowany), a następnie próbuje uzyskać zaktualizowane wersje tych konkretnych pakietów (chcę, aby zainstalował tylko określone pakiety / wersje, które pobrałem). Zasadniczo czy aptpreferuje najnowszą wersję online, czy preferuje lokalną, nowszą, ale nie najnowszą wersję?
R4mzy
1
@ R4mzy Masz ważny punkt. aptspróbuje pobrać najnowszą paczkę z Internetu, nawet jeśli starsze paczki są dostępne lokalnie. Konieczna może być zmiana /etc/apt/sources.listt, aby upewnić się, że instaluje pakiety lokalne.
sayantankhan
@sayantankhan, czy możesz pokazać, jak by to wyglądało w twojej odpowiedzi? Pytam, ponieważ skopiowałem mój plik .deb, /var/cache/apt/archives/ale go sudo apt-get update && sudo apt-get upgradenie widzę ani nie aktualizuję / aktualizuję pakietu, którego potrzebuję. Czuję, że muszę zaktualizować listę, ale nie jestem pewien, jak to zrobić.
Todd,
1
@Todd Sam tego nie zrobiłem, ale oto sposób, w jaki ktoś przesłonił priorytet pakietu apt.
sayantankhan,