Odpowiedzi:
Istnieją dwie rzeczy w Ubuntu (i Debianie, na których oparty jest Ubuntu), które są powszechnie nazywane „menedżerem pakietów”: dpkg
i APT.
dpkg
to 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 .deb
plików archiwalnych. Te archiwa są sposobem dystrybucji pakietów.
dpkg
robi 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ę dpkg
odpowiednio, aby je zainstalować, uaktualnić i usunąć. APT nie jest tak naprawdę żadnym oprogramowaniem, choć istnieje pakiet 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-get
są również dostarczane przez pakiet 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-get
narzędziu, aby zainstalowało pakiet Chocolate-Doom , 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.
/var/cache/apt/archives
folder jest używanyKiedy 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/partial
które /var/cache/apt/archives
po zakończeniu są przenoszone do .
Pliki pakietów .deb pozostają w pamięci podręcznej /var/cache/apt/archives
nawet 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 .deb
całkowicie wyczyścić buforowane pliki sudo apt-get clean
. Zobacz man apt-get
po więcej informacji.
Aby zilustrować funkcję sudo apt-get autoclean
i podobne polecenia, a także określić, czy chcesz je uruchomić, możesz symulować ich działania, uruchamiając następnie -s
flagą. Najlepiej przekazać tę flagę przed tym autoclean
(lub cokolwiek innego) czasownika działania. sudo
Podczas 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).
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/list
katalogu. 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-cache
konkretnie. Przeszukuje bazę danych pakietów, ale nie wprowadza żadnych zmian w systemie ani nie pobiera żadnych plików.
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 xapian
podfolder:
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.
Niektóre dodatkowe narzędzia współpracujące z systemem APT pobierają i przechowują pliki w ramach ich działania. apt-file
nie jest instalowany domyślnie w Ubuntu, ale może być zainstalowany z pakietu apt-file .
apt-file
przechowuje 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 Contents
pliki:
$ 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 update
jest uruchamiany jako root (jak wyżej), pliki są pobierane do /var/cache/apt/apt-file
katalogu. 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.
apt-cache
lub / iapt-file
również pobierasz wiele rzeczy? Jeśli tak, gdzie one są?