Чому існують файли deb в / var / cache / apt / archives /?


Відповіді:


21

Довідкова інформація

У Ubuntu (і в Debian, на якій базується Ubuntu) є дві речі, які зазвичай називають "менеджером пакетів": dpkgта APT.

dpkgце програма, яка встановлює та видаляє пакети та підтримує базу даних про те, які пакунки встановлені, на яких версіях. Коли він встановлює пакети, він робить це з .debархівних файлів. Ці архіви - це спосіб розповсюдження пакетів.

dpkgробить більше, ніж копіює (або видаляє) файли та оновлює свою базу даних - вона також буде запускати сценарії встановлення та скрипти видалення. Це може вважатися досить витонченим. Але те, що вона не зробить, - це пошук та завантаження пакетів.

APT знаходить і завантажує пакети та працює dpkgналежним чином для їх встановлення, оновлення та видалення. APT насправді не є жодною частиною програмного забезпечення, хоча є влучнийВстановити влучну пакет, який забезпечує його важливі частини.

APT включає бібліотеку ( libapt-pkg ), яка забезпечує основну функціональність, доступ до якої здійснюється за допомогою різних інструментів. Деякі такі інструменти, як-от apt-get, також надаються пакетом aptВстановити влучну . Інші інструменти встановлюються окремо. APT також надає різні файли конфігурації, які керують роботою його основної бібліотеки та програм, які її використовують.

Більше того, APT - це система для зберігання та отримання даних про те, які джерела програмного забезпечення надають, які пакунки в яких версіях, і для дії на цих даних для автоматичного виконання завдань управління пакетами, таких як установка та оновлення пакетів. Це включає відстеження того, які пакети потрібні для роботи інших пакунків, і автоматично вибирати та встановлювати відповідні пакети для задоволення цих залежностей.

Наприклад, коли я кажу apt-getутиліті, щоб встановити пакунок з шоколадною думкоюВстановіть шоколад-дум , він з'ясовує, які ще пакунки повинні бути встановлені, щоб він працював, і автоматично отримав і встановив їх також:

$ 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 Center, 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(будь-який інший або) дієслово дії. Зазвичай не потрібно запускати утиліту як root 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 завантажує дані для власного користування, специфічні для них і не стосуються загальних 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-файлівВстановіть apt-файл .

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ж завантажити багато речей? Якщо так, то де вони?
Тім

Що означає "Але коли програма, яка використовує або реалізує систему APT автоматичного вирішення залежностей та завантаження пакетів, завантажує пакунки, саме там вона зберігається". означає?
Тім

@Tim Я значно розширив свою відповідь таким чином, що я сподіваюся правильно відповісти на ці запитання (і багато іншого). Як завжди, ваш відгук вітається, особливо якщо щось незрозуміле.
Eliah Kagan

Завдяки "apt-cache запитує базу даних пакетів", це база даних в Інтернеті чи на локальному комп'ютері? Чи потрібен apt-кеш-доступу до Інтернету?
Тім

1
@Orian (Я радий, що ця відповідь допомогла!) Ви можете натиснути зірку у питанні. Це трохи нижче бала питання та стрілок для голосування. Тоді питання з’являється на вкладці обраного вашого профілю . Лише питання можуть бути вподобані. У разі цієї відповіді наразі це єдине питання. Інші можуть бути опубліковані, хоча ви, ймовірно, хочете також поглянути на них, оскільки іноді нові відповіді містять інформацію про нові події в темі. Ви можете використовувати закладки свого браузера, які працюють навіть для відповідей. Скористайтеся посиланням спільного доступу під відповіддю, щоб відкрити сторінку за конкретною відповіддю.
Елія Каган
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.