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