Ответы:
В Ubuntu есть две вещи (и в Debian, на которых основан Ubuntu), которые обычно называются «диспетчером пакетов»: dpkgи APT.
dpkgэто программа, которая устанавливает и удаляет пакеты и поддерживает базу данных о том, какие пакеты установлены, в каких версиях. Когда он устанавливает пакеты, он делает это из .debархивных файлов. Эти архивы являются способом распространения пакетов.
dpkgделает больше, чем просто копирует (или удаляет) файлы и обновляет свою базу данных - он также запускает сценарии установки и сценарии удаления. Это можно считать довольно сложным. Но он не найдет и не загрузит пакеты.
APT находит и загружает пакеты и запускается dpkgсоответствующим образом для их установки, обновления и удаления. APT на самом деле не представляет собой отдельную часть программного обеспечения, хотя есть пакет apt , который обеспечивает его основные части.
APT включает в себя библиотеку ( libapt-pkg ), которая обеспечивает базовую функциональность, доступ к которой осуществляется различными инструментами. Некоторые такие инструменты, например apt-get, также предоставляются пакетом apt . Другие инструменты устанавливаются отдельно. APT также предоставляет различные файлы конфигурации, которые управляют работой своей базовой библиотеки и программ, которые ее используют.
Более того, APT - это система для хранения и извлечения данных о том, какие источники программного обеспечения предоставляют какие пакеты, в каких версиях, и для действий с этими данными для автоматического выполнения задач управления пакетами, таких как установка и обновление пакетов. Это включает в себя отслеживание того, какие пакеты необходимы для работы других пакетов, и автоматический выбор и установка соответствующих пакетов для удовлетворения этих зависимостей.
Например, когда я говорю apt-getутилите установить пакет chocolate-doom , она выясняет, какие другие пакеты должны быть установлены, чтобы она работала, и автоматически получит и установит их:
$ 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.
Графические инструменты, такие как Центр программного обеспечения, Software Updater / Update Manager и Synaptic, выполняют функции, аналогичные apt-get. Они также используют систему APT - посредством комбинации соблюдения ее правил и использования функциональных возможностей, предоставляемых базовыми библиотеками - для изменения установленных пакетов, чтобы дать пользователю то, что он (обычно) хочет, таким образом, чтобы все (обычно) продолжают работать.
/var/cache/apt/archivesпапкаКогда apt-get, aptitude, Центр программного обеспечения , Synaptic , Updater Менеджер обновлений / Программное обеспечение или любые другие утилиты управления пакетами загрузки пакетов (и другие пакеты , они зависят от) из сконфигурированных источников программного обеспечения и устанавливает их, загруженные пакеты (т.е. архивные файлы .deb из которого они установлены) хранятся в /var/cache/apt/archives.
Если у вас есть файл .deb на диске, и вы устанавливаете его с помощью dpkg, это не означает, что его копия будет сделана в /var/cache/apt/archives. Но когда программа, которая использует или внедряет систему автоматического разрешения зависимостей APT и поиска пакетов, загружает пакеты, именно там они и сохраняются.
Несмотря на то, что файлы .deb для автоматически загружаемых пакетов хранятся и устанавливаются из них /var/cache/apt/archives, они фактически не загружаются непосредственно в это место. Вместо этого неполные (т. Е. В процессе) загрузки файла .deb существуют в, /var/cache/apt/archives/partialа затем перемещаются в него /var/cache/apt/archivesпосле завершения.
Файлы пакета .deb остаются в кэше /var/cache/apt/archivesдаже после успешной установки на случай, если они понадобятся для будущего использования. Но вы можете безопасно удалить файлы .deb, которые достаточно стары, с которыми они вряд ли понадобятся снова sudo apt-get autoclean, или полностью очистить кэшированные .debфайлы sudo apt-get clean. Смотрите man apt-getдля получения дополнительной информации.
Чтобы проиллюстрировать функции sudo apt-get autocleanи аналогичные команды, а также определить, хотите ли вы их запускать, вы можете смоделировать их действия, выполнив затем с -sфлагом. Лучше всего , чтобы передать этот флаг , прежде чем в autoclean(любой другой или) глагол действия. Это обычно не нужно запустить программу как корень с sudoпри использовании -s, поскольку никаких реальных изменений не производится.
Например, в моей системе:
$ 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]
....
Перечисленные пакеты не будут удалены ; вместо этого удаляются только кэшированные файлы .deb. (На самом деле ничего не произошло, когда я выполнил эту команду, поскольку это была просто симуляция.)
Программное обеспечение, установленное через dpkg(через APT или иным способом), на самом деле не запускается из файла .deb, который его предоставляет. Как отмечено в разделе «Дополнительная информация », извлекаются файлы .deb. Вот почему они могут быть удалены, и установленный пакет продолжает функционировать.
Файлы во всей системе, которые устанавливаются из пакетов .deb, не загружаются в их текущее местоположение, а извлекаются из них из файлов .deb, которые их предоставляют (или, возможно, специально создаются во время установки или после нее, как в случае для некоторых файлов конфигурации).
Но файлы .deb - не единственные файлы, загружаемые утилитами управления пакетами. Часто загружаются другие файлы, которые предоставляют информацию о том, где существуют пакеты.
Например, когда я бегу sudo apt-get update, вывод включает в себя такие строки:
Get:13 http://us.archive.ubuntu.com utopic/main i386 Packages [1,341 kB]
Это означает, что файл, такой как http://us.archive.ubuntu.com/ubuntu/dists/utopic/main/binary-amd64/Packages.bz2, был загружен и проверен, чтобы помочь обновить базу данных APT информацией о доступных пакетах ( и в каких версиях) из этого конкретного источника программного обеспечения. Вы можете найти файлы Packages и другие подобные файлы в /var/lib/apt/listкаталоге. Копии, хранящиеся там, имеют такие отличительные имена, как us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages, например , таких файлов может быть много.
Вы спрашивали о apt-cacheконкретно. Он запрашивает базу данных пакетов, но не вносит никаких изменений в систему и не загружает какие-либо файлы.
Когда Ubuntu Software Center загружает данные для своего собственного использования, специфичные для него и не относящиеся к общим dpkgфункциям APT (или ), он сохраняет их в /var/cache/software-center.
Например, в моей системе (и в большинстве систем) эта папка содержит xapianподпапку:
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
Центр программного обеспечения использует Xapian для индексации информации для быстрого поиска.
Некоторые дополнительные утилиты, которые работают с системой APT, загружают и сохраняют файлы как часть своей работы. apt-fileпо умолчанию не устанавливается в Ubuntu, но может быть установлен из пакета apt-file .
apt-fileхранит информацию о том, какие файлы предоставляются какими пакетами (даже для пакетов, которые не установлены локально). Он получает эту информацию о содержимом пакетов, загружая сжатые Contentsфайлы:
$ 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
Когда apt-file updateзапускается от имени пользователя root (как указано выше), эти файлы загружаются в /var/cache/apt/apt-fileкаталог. Чтобы узнать это, я побежал:
$ 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
Обратите внимание, что информация, представленная в этом посте, дает ряд примеров файлов данных, загружаемых и сохраняемых утилитами управления пакетами в Ubuntu, но не должна рассматриваться как исчерпывающий список случаев, когда такие файлы используются и хранятся.
apt-cacheили / иapt-fileтакже загружаете много вещей? Если да, где они?