Почему там deb файлы в/var/cache/apt/archives/?

Почему там deb файлы в /var/cache/apt/archives/?

В каких случаях deb файлы были загружены в тот каталог?

11
задан 27 August 2017 в 11:34

1 ответ

Справочная информация

Существует две вещи в Ubuntu (и в Debian, на котором Ubuntu базируется), которые обычно называют "диспетчером пакетов": dpkg, и APT.

dpkg программа, которая устанавливает и удаляет пакеты и поддерживает базу данных того, какие пакеты установлены, в какой версии. Когда это устанавливает пакеты, это делает так от .deb архивные файлы. Эти архивы являются способом, которым распределяются пакеты.

dpkg действительно больше, чем копирует (или удаляет), файлы, и обновите его базу данных - она также запустит скрипты установки и сценарии удаления. Это можно считать довольно сложным. Но то, что это не сделает, является находкой, и загрузите пакеты.

APT находит и загружает пакеты и выполнения dpkg соответственно для установки обновите и удалите их. APT не является действительно никакой единственной частью программного обеспечения, хотя существует способныйInstall apt пакет, который обеспечивает его основные части.

APT включает библиотеку (libapt-pkg), который обеспечивает базовую функциональность, к которой получают доступ различные инструменты. Некоторые такие инструменты, как apt-get, также обеспечиваются способнымInstall apt пакетом. Другие инструменты установлены отдельно. APT также обеспечивает различные конфигурационные файлы, которые управляют, как его оперативная библиотека и программы, которые используют его, работа.

Больше, чем это, APT является системой для того, чтобы сохранить и получить данные о том, что источники программного обеспечения обеспечивают что пакеты в какой версии, и для действия на те данные для автоматического выполнения задач управления пакетом как установка и пакеты обновления. Это включает отслеживание того, какие пакеты необходимы, чтобы другие пакеты работали, и автоматически выбор и установка соответствующих пакетов для удовлетворения этих зависимостей.

Например, когда я говорю apt-get утилита для установки Install 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.

Графические инструменты как Центр программного обеспечения, программное обеспечение Updater / Менеджер обновлений, и Синаптический выполняют функции, подобные apt-get. Они также используют систему APT - через комбинацию наблюдения ее правил и использования функциональности, обеспеченной оперативными библиотеками - для изменения, какие пакеты установлены, дать пользователю what's/he (обычно) хочет таким способом, которым вещи (обычно) продолжают работать.

Как и когда /var/cache/apt/archives Папка используется

Когда apt-get, aptitude, Центр программного обеспечения, Синаптический, программное обеспечение 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 с информацией о том, какие пакеты доступны (и в какой версии) из того конкретного источника программного обеспечения. Можно найти файлы Пакетов и другие такие файлы, в /var/lib/apt/list каталог. Копии, сохраненные там, даны, отличив имена как us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages, как может быть много таких файлов.

Вы спросили о apt-cache конкретно. Это запрашивает базу данных пакета, но это не вносит изменений в систему или загружает любые файлы.

Загруженные файлы, характерные для центра программного обеспечения

Когда Центр программного обеспечения Ubuntu загружает данные для своего собственного использования, характерного для него и не касающийся общего APT (или dpkg) функциональность, это хранит их в /var/cache/software-center.

Например, в моей системе (и в большинстве систем), та папка содержит a 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, но может быть установлен от Install 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 выполняется как корень (как выше), эти файлы загружаются на /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

Обратите внимание, что информация, предоставленная в этом сообщении, дает много примеров файлов данных dowloaded и сохраненный утилитами управления пакетом на Ubuntu, но не должна считаться исчерпывающим списком экземпляров, где такие файлы используются и хранятся.

21
ответ дан 23 November 2019 в 03:56

Другие вопросы по тегам:

Похожие вопросы: