Ответы:
В 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
также загружаете много вещей? Если да, где они?