Dlaczego w katalogu / var / cache / apt / archives / znajdują się pliki deb?


Odpowiedzi:


21

Informacje podstawowe

Istnieją dwie rzeczy w Ubuntu (i Debianie, na których oparty jest Ubuntu), które są powszechnie nazywane „menedżerem pakietów”: dpkgi APT.

dpkgto program, który instaluje i usuwa pakiety oraz utrzymuje bazę danych tego, które pakiety są zainstalowane, w jakich wersjach. Podczas instalowania pakietów robi to z .debplików archiwalnych. Te archiwa są sposobem dystrybucji pakietów.

dpkgrobi więcej niż kopiowanie (lub usuwanie) plików i aktualizowanie bazy danych - uruchomi także skrypty instalacyjne i skrypty usuwające. Można to uznać za dość wyrafinowane. Ale to, czego nie zrobi, to znajdowanie i pobieranie pakietów.

APT znajduje i pobiera pakiety oraz uruchamia się dpkgodpowiednio, aby je zainstalować, uaktualnić i usunąć. APT nie jest tak naprawdę żadnym oprogramowaniem, choć istnieje pakiet aptZainstaluj apt , który zapewnia jego podstawowe części.

APT zawiera bibliotekę ( libapt-pkg ), która zapewnia podstawową funkcjonalność, do której dostęp mają różne narzędzia. Niektóre z takich narzędzi apt-getsą również dostarczane przez pakiet aptZainstaluj apt . Inne narzędzia są instalowane osobno. APT udostępnia także różne pliki konfiguracyjne, które kontrolują sposób działania jego podstawowej biblioteki i programów, które jej używają.

Co więcej, APT to system do przechowywania i pobierania danych o tym, jakie źródła oprogramowania udostępniają pakiety w jakich wersjach, oraz do działania na tych danych w celu automatycznego wykonywania zadań zarządzania pakietami, takich jak instalowanie i uaktualnianie pakietów. Obejmuje to śledzenie, które pakiety są potrzebne do działania innych pakietów, a także automatyczne wybieranie i instalowanie odpowiednich pakietów w celu spełnienia tych zależności.

Na przykład, kiedy mówię apt-getnarzędziu, aby zainstalowało pakiet Chocolate-DoomZainstaluj czekoladową katastrofę , dowiaduje się, jakie inne pakiety muszą być zainstalowane, aby działało, i automatycznie je pobiera i instaluje:

$ sudo apt-get install chocolate-doom
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2 libsdl1.2debian
Recommended packages:
  doom-engine
The following NEW packages will be installed:
  chocolate-doom doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2
  libsdl1.2debian
0 upgraded, 6 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B/2,846 kB of archives.
After this operation, 8,626 kB of additional disk space will be used.

Narzędzia graficzne, takie jak Software Center, Software Updater / Update Manager i Synaptic wykonują funkcje podobne do apt-get. Korzystają również z systemu APT - poprzez połączenie przestrzegania jego zasad i wykorzystania funkcji dostarczanych przez biblioteki podstawowe - do zmiany zainstalowanych pakietów, aby dać użytkownikowi to, czego on (zwykle) chce, w taki sposób, aby rzeczy (zwykle) nadal działa.

Jak i kiedy /var/cache/apt/archivesfolder jest używany

Kiedy apt-get, aptitude, Software Center , Synaptic , Software Updater / Menedżer aktualizacji , lub jakiekolwiek inne narzędzie do zarządzania pobrania pakiet pakiety (oraz inne pakiety zależą) od skonfigurowanych źródeł oprogramowania i instaluje je, pobrane pakiety (czyli pliki .deb z którego są zainstalowane) są przechowywane w /var/cache/apt/archives.

Jeśli masz plik .deb na dysku i instalujesz go za pomocą dpkg, nie powoduje to wykonania jego kopii /var/cache/apt/archives. Ale kiedy program, który używa lub implementuje system APT automatycznego rozwiązywania zależności i pobierania pakietów, pobiera pakiety, tam je przechowuje.

Podczas gdy pliki .deb dla automatycznie pobieranych pakietów są przechowywane i instalowane /var/cache/apt/archives, nie są one pobierane bezpośrednio do tej lokalizacji. Zamiast tego istnieją niekompletne (tj. W toku) pliki do pobrania .deb, /var/cache/apt/archives/partialktóre /var/cache/apt/archivespo zakończeniu są przenoszone do .

Pliki pakietów .deb pozostają w pamięci podręcznej /var/cache/apt/archivesnawet po udanej instalacji, na wypadek, gdyby były potrzebne do użycia w przyszłości. Ale możesz bezpiecznie usunąć pliki .deb, które są na tyle stare, że prawdopodobnie nie będą potrzebne ponownie sudo apt-get autoclean, lub .debcałkowicie wyczyścić buforowane pliki sudo apt-get clean. Zobacz man apt-getpo więcej informacji.

Aby zilustrować funkcję sudo apt-get autocleani podobne polecenia, a także określić, czy chcesz je uruchomić, możesz symulować ich działania, uruchamiając następnie -sflagą. Najlepiej przekazać tę flagę przed tym autoclean(lub cokolwiek innego) czasownika działania. sudoPodczas używania zwykle nie jest konieczne uruchamianie narzędzia jako root -s, ponieważ nie są wprowadzane żadne rzeczywiste zmiany.

Na przykład w moim systemie:

$ apt-get -s autoclean
NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Del libubsan0 4.9.1-15ubuntu1 [83.7 kB]
Del cups-server-common 1.7.5-3 [519 kB]
Del python2.7 2.7.8-9 [205 kB]
Del g++-4.9 4.9.1-15ubuntu1 [17.4 MB]
Del libstdc++-4.9-dev 4.9.1-15ubuntu1 [1,121 kB]
    ....

Wymienione pakiety nie zostaną odinstalowane ; zamiast tego tylko buforowane pliki .deb zostaną usunięte. (W rzeczywistości nie zdarzyło się to, gdy uruchomiłem to polecenie, ponieważ była to jedynie symulacja).

Inne pobrane pliki

Oprogramowanie zainstalowane przez dpkg(za pomocą APT lub w inny sposób) nie jest tak naprawdę uruchamiane z pliku .deb, który go udostępnia. Jak zauważono w sekcji Informacje w tle , pliki .deb są wyodrębniane. Dlatego można je usunąć, a zainstalowany pakiet nadal działa.

Pliki w całym systemie, które są instalowane z pakietów .deb, nie są pobierane do ich bieżących lokalizacji - są one raczej wyodrębniane z dostarczonych plików .deb (lub być może specjalnie utworzonych podczas instalacji lub później, w zależności od przypadku dla niektórych plików konfiguracyjnych).

Ale pliki .deb nie są jedynymi plikami pobieranymi przez narzędzia do zarządzania pakietami. Często pobierane są inne pliki, które zawierają informacje o tym, gdzie istnieją pakiety.

Na przykład, gdy uruchamiam sudo apt-get update, dane wyjściowe zawierają wiersze takie jak:

Get:13 http://us.archive.ubuntu.com utopic/main i386 Packages [1,341 kB]

Oznacza to, że plik taki jak http://us.archive.ubuntu.com/ubuntu/dists/utopic/main/binary-amd64/Packages.bz2 został pobrany i zbadany w celu zaktualizowania bazy danych APT o informacje o dostępnych pakietach ( i w jakich wersjach) z tego konkretnego źródła oprogramowania. Możesz znaleźć pliki pakietów i inne takie pliki w /var/lib/apt/listkatalogu. Kopie tam przechowywane mają nazwy wyróżniające, takie jak us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages, ponieważ może być wiele takich plików.

Pytałeś o apt-cachekonkretnie. Przeszukuje bazę danych pakietów, ale nie wprowadza żadnych zmian w systemie ani nie pobiera żadnych plików.

Pobrane pliki specyficzne dla Centrum oprogramowania

Kiedy Centrum Oprogramowania Ubuntu pobiera dane na własny użytek, specyficzne dla niego i niezwiązane z ogólną funkcjonalnością APT (lub dpkg), zapisuje je /var/cache/software-center.

Na przykład w moim systemie (i w większości systemów) ten folder zawiera xapianpodfolder:

ek@Ilex:/var/cache/software-center/xapian$ ls
flintlock       postlist.baseB  record.baseB    spelling.baseB  termlist.baseB
iamchert        postlist.DB     record.DB       spelling.DB     termlist.DB
postlist.baseA  record.baseA    spelling.baseA  termlist.baseA

Centrum oprogramowania używa Xapian do indeksowania informacji w celu szybkiego wyszukiwania.

Pobrane pliki do innych powiązanych narzędzi

Niektóre dodatkowe narzędzia współpracujące z systemem APT pobierają i przechowują pliki w ramach ich działania. apt-filenie jest instalowany domyślnie w Ubuntu, ale może być zainstalowany z pakietu apt-fileZainstaluj plik apt .

apt-fileprzechowuje informacje o tym, jakie pliki są dostarczane przez jakie pakiety (nawet dla pakietów, które nie są zainstalowane lokalnie). Uzyskuje te informacje o zawartości pakietów, pobierając skompresowane Contentspliki:

$ sudo apt-file update
Downloading complete file http://us.archive.ubuntu.com/ubuntu/dists/utopic/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 29.6M  100 29.6M    0     0   856k      0  0:00:35  0:00:35 --:--:--  832k

Gdy apt-file updatejest uruchamiany jako root (jak wyżej), pliki są pobierane do /var/cache/apt/apt-filekatalogu. Aby to odkryć, uruchomiłem:

$ sudo updatedb
$ locate Contents-amd64
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic-proposed_Contents-amd64.gz
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic_Contents-amd64.gz

Należy zauważyć, że informacje podane w tym poście zawierają wiele przykładów plików danych pobranych i przechowywanych przez narzędzia do zarządzania pakietami w systemie Ubuntu, ale nie należy ich uważać za wyczerpującą listę przypadków, w których takie pliki są używane i przechowywane.


Dzięki. Czy apt-cache lub / i apt-filerównież pobierasz wiele rzeczy? Jeśli tak, gdzie one są?
Tim

Co oznacza „Ale gdy program, który używa lub implementuje system APT automatycznego rozwiązywania zależności i pobierania pakietów, pobiera pakiety, tam je przechowuje”. oznaczać?
Tim

@Tim Znacząco rozszerzyłem swoją odpowiedź w taki sposób, że mam nadzieję, że odpowiednio odpowie na te pytania (i więcej). Jak zawsze Twoja opinia jest mile widziana - szczególnie jeśli coś jest niejasne.
Eliah Kagan

Dzięki „apt-cache wysyła zapytanie do bazy danych pakietów”, czy baza danych jest w trybie online czy na komputerze lokalnym? Czy apt-cache potrzebuje dostępu do Internetu?
Tim

1
@Orian (Cieszę się, że ta odpowiedź pomogła!) Możesz kliknąć gwiazdkę na pytaniu. Jest tuż poniżej wyniku pytania i strzałek głosowania. Następnie pytanie pojawi się w zakładce ulubionych Twojego profilu . Tylko pytania mogą być dodawane do ulubionych. W przypadku tej odpowiedzi jest ona obecnie jedyną odpowiedzią na pytanie. Inne mogą być publikowane - chociaż prawdopodobnie zechcesz też na nie spojrzeć, ponieważ czasami nowe odpowiedzi zawierają informacje o nowych osiągnięciach w temacie. Możesz użyć zakładek przeglądarki, które działają nawet w przypadku odpowiedzi. Użyj linku udostępniania pod odpowiedzią, aby otworzyć stronę z konkretną odpowiedzią.
Eliah Kagan
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.