102.4 Урок 1
Сертифікат: |
LPIC-1 |
---|---|
Версія: |
5.0 |
Розділ: |
102 Установка Linux та керування пакунками |
Тема: |
102.4 Керування пакунками Debian |
Урок: |
1 з 1 |
Вступ
З самого початку, коли Linux ще тільки зароджувався, найпоширенішим способом розповсюдження програмного забезпечення був стиснутий файл (зазвичай архів .tar.gz
) з вихідним кодом, який ви розпаковували та компілювали самостійно.
Однак у міру зростання кількості та складності програмного забезпечення потреба в способі поширення попередньо скомпільованого програмного забезпечення стала очевидною. Зрештою, не у всіх були ресурси, як за часом, так і за обчислювальною потужністю, щоб зібрати великі проекти, такі як ядро Linux або X Server.
Незабаром зусилля стандартизувати спосіб розповсюдження цих програмних «пакунків» зросли, і народилися перші менеджери пакунків. Ці інструменти значно полегшили встановлення, налаштування або видалення програмного забезпечення з системи.
Одним із них був формат пакунка Debian (.deb
) та його інструмент для пакунків (dpkg
). Сьогодні вони широко використовуються не тільки в самому Debian, а й у його похідних, таких як Ubuntu та схожих на нього.
Іншим інструментом керування пакунками, популярним у системах на базі Debian, є Advanced Package Tool (apt
), який може значно спростити багато аспектів встановлення, обслуговування та видалення пакунків.
У цьому уроці ми дізнаємося, як використовувати dpkg
і apt
для отримання, встановлення, підтримки та видалення програмного забезпечення в системі Linux на базі Debian.
Інструмент керування пакунками Debian (dpkg)
Інструмент Debian Package (dpkg
) є важливою утилітою для встановлення, налаштування, підтримки та видалення програмних пакунків у системах на базі Debian. Найпростішою операцією є встановлення пакету .deb
, яке можна зробити за допомогою:
# dpkg -i PACKAGENAME
Де PACKAGENAME
- це ім’я файлу .deb
, який потрібно встановити.
Оновлення пакунків виконуються аналогічно. Перед встановленням пакунку dpkg
перевірить, чи вже існує попередня версія в системі. Якщо так, пакунок буде оновлено до нової версії. Якщо ні, буде встановлено нову копію.
Вирішення питань із залежностями
Найчастіше пакунок може залежати від інших, щоб працювати належним чином. Наприклад, редактору зображень можуть знадобитися бібліотеки для відкриття файлів JPEG, або іншій утиліті може знадобитися набір інструментів віджетів, наприклад Qt або GTK, для інтерфейсу користувача.
dpkg
перевірить, чи ці залежності встановлені у вашій системі, і не зможе встановити пакунок, якщо вони відсутні. У цьому випадку dpkg
покаже, які пакунки відсутні. Однак він сам по собі не може вирішувати залежності. Користувач повинен знайти пакунки .deb
з відповідними залежностями та встановити їх.
У наведеному нижче прикладі користувач намагається встановити пакет відеоредактору OpenShot, але деякі залежності відсутні:
# dpkg -i openshot-qt_2.4.3+dfsg1-1_all.deb (Reading database ... 269630 files and directories currently installed.) Preparing to unpack openshot-qt_2.4.3+dfsg1-1_all.deb ... Unpacking openshot-qt (2.4.3+dfsg1-1) over (2.4.3+dfsg1-1) ... dpkg: dependency problems prevent configuration of openshot-qt: openshot-qt depends on fonts-cantarell; however: Package fonts-cantarell is not installed. openshot-qt depends on python3-openshot; however: Package python3-openshot is not installed. openshot-qt depends on python3-pyqt5; however: Package python3-pyqt5 is not installed. openshot-qt depends on python3-pyqt5.qtsvg; however: Package python3-pyqt5.qtsvg is not installed. openshot-qt depends on python3-pyqt5.qtwebkit; however: Package python3-pyqt5.qtwebkit is not installed. openshot-qt depends on python3-zmq; however: Package python3-zmq is not installed. dpkg: error processing package openshot-qt (--install): dependency problems - leaving unconfigured Processing triggers for mime-support (3.60ubuntu1) ... Processing triggers for gnome-menus (3.32.0-1ubuntu1) ... Processing triggers for desktop-file-utils (0.23-4ubuntu1) ... Processing triggers for hicolor-icon-theme (0.17-2) ... Processing triggers for man-db (2.8.5-2) ... Errors were encountered while processing: openshot-qt
Як показано вище, OpenShot залежить від пакунків fonts-cantarell
, python3-openshot
, python3-pyqt5
, python3-pyqt5.qtsvg
, python3-pyqt5.qtwebkit
та python3-zmq
. Усі вони мають бути встановлені, перш ніж встановлення OpenShot стане успішним.
Видалення пакунків
Щоб видалити пакунок, передайте параметр -r
у dpkg
, а потім ім’я пакунку. Наприклад, така команда видалить пакунок unrar
із системи:
# dpkg -r unrar (Reading database ... 269630 files and directories currently installed.) Removing unrar (1:5.6.6-2) ... Processing triggers for man-db (2.8.5-2) ...
Операція видалення також виконує перевірку залежностей, і пакунок не може бути видалений, якщо не буде видалено всі інші залежні від нього пакунки. Якщо ви спробуєте це зробити, ви отримаєте повідомлення про помилку, подібне до наведеного нижче:
# dpkg -r p7zip dpkg: dependency problems prevent removal of p7zip: winetricks depends on p7zip; however: Package p7zip is to be removed. p7zip-full depends on p7zip (= 16.02+dfsg-6). dpkg: error processing package p7zip (--remove): dependency problems - not removing Errors were encountered while processing: p7zip
Ви можете передати декілька імен пакунків у dpkg -r
, щоб усі вони були видалені одночасно.
Коли пакунок видаляється, відповідні файли конфігурації залишаються в системі. Якщо ви хочете видалити все, пов’язане з пакетом, використовуйте параметр -P
(очищення) замість -r
.
Note
|
Ви можете змусити |
Отримання інформації про пакунок
Щоб отримати інформацію про пакунок .deb
, наприклад, версію, архітектуру, хто підтримує, залежності тощо, скористайтеся командою dpkg
з параметром -I
, а потім ім’ям файлу пакунку, який потрібно перевірити:
# dpkg -I google-chrome-stable_current_amd64.deb new Debian package, version 2.0. size 59477810 bytes: control archive=10394 bytes. 1222 bytes, 13 lines control 16906 bytes, 457 lines * postinst #!/bin/sh 12983 bytes, 344 lines * postrm #!/bin/sh 1385 bytes, 42 lines * prerm #!/bin/sh Package: google-chrome-stable Version: 76.0.3809.100-1 Architecture: amd64 Maintainer: Chrome Linux Team <chromium-dev@chromium.org> Installed-Size: 205436 Pre-Depends: dpkg (>= 1.14.0) Depends: ca-certificates, fonts-liberation, libappindicator3-1, libasound2 (>= 1.0.16), libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 2.2.0), libatspi2.0-0 (>= 2.9.90), libc6 (>= 2.16), libcairo2 (>= 1.6.0), libcups2 (>= 1.4.0), libdbus-1-3 (>= 1.5.12), libexpat1 (>= 2.0.1), libgcc1 (>= 1:3.0), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.31.8), libgtk-3-0 (>= 3.9.10), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.22), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libuuid1 (>= 2.16), libx11-6 (>= 2:1.4.99.1), libx11-xcb1, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxrandr2 (>= 2:1.2.99.3), libxrender1, libxss1, libxtst6, lsb-release, wget, xdg-utils (>= 1.0.2) Recommends: libu2f-udev Provides: www-browser Section: web Priority: optional Description: The web browser from Google Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier.
Перелік встановлених пакунків та їх вміст
Щоб отримати список усіх пакунків, встановлених у вашій системі, використовуйте параметр --get-selections
, як у dpkg --get-selections
. Ви також можете отримати перелік всіх файлів, встановлених конкретним пакунком, передав параметр -L PACKAGENAME
у dpkg
, як показано нижче:
# dpkg -L unrar /. /usr /usr/bin /usr/bin/unrar-nonfree /usr/share /usr/share/doc /usr/share/doc/unrar /usr/share/doc/unrar/changelog.Debian.gz /usr/share/doc/unrar/copyright /usr/share/man /usr/share/man/man1 /usr/share/man/man1/unrar-nonfree.1.gz
Як дізнатися, до якого пакунку належить певний файл
Іноді вам може знадобитися з’ясувати, до якого пакунку належить певний файл у вашій системі. Ви можете зробити це за допомогою утиліти dpkg-query
, за якою слідує параметр -S
і шлях до відповідного файлу:
# dpkg-query -S /usr/bin/unrar-nonfree unrar: /usr/bin/unrar-nonfree
Переналаштування встановлених пакунків
Коли пакунок інсталюється, є крок конфігурації, який називається post-install, на якому запускається сценарій, щоб налаштувати все необхідне для запуску програмного забезпечення, наприклад дозволи, розміщення файлів конфігурації тощо. На цьому кроці користувачу також можуть ставитись питання для встановлення параметрів роботи програмного забезпечення.
Іноді через пошкоджений або неправильно сформований файл конфігурації ви можете потребувати відновлення налаштування пакунку до його «початкового» стану. Або ви можете бажати змінити відповіді, які ви дали на початкові запитання щодо налаштування. Для цього запустіть утиліту dpkg-reconfigure
, а потім введіть назву пакунку.
Ця програма створить резервну копію старих конфігураційних файлів, розпакує нові в правильні каталоги та запустить сценарій post-install, наданий пакунком, як ніби пакет було встановлено вперше. Спробуйте переналаштувати пакунок tzdata
за таким прикладом:
# dpkg-reconfigure tzdata
Advanced Package Tool (apt)
Advanced Package Tool (APT) — це система керування пакунками, яка містить набір інструментів, що значно спрощує встановлення, оновлення, видалення та керування пакунками. APT надає такі функції, як розширені можливості пошуку та автоматичне вирішення залежностей.
APT не є «заміною» для dpkg
. Ви можете думати про це як про “front end”, який оптимізує операції та заповнює прогалини у функціональності dpkg
, такі як вирішення залежностей.
APT працює разом зі сховищами програмного забезпечення, які містять пакунки, доступні для встановлення. Такими сховищами можуть бути локальний або віддалений сервер або (рідше) навіть диск CD-ROM.
Дистрибутиви Linux, такі як Debian та Ubuntu, мають власні репозиторії, а інші репозиторії можуть підтримуватися розробниками або групами користувачів, щоб надавати програмне забезпечення, недоступне з основних сховищ дистрибутивів.
Існує багато утиліт, які взаємодіють з APT, основними з яких є:
apt-get
-
використовується для завантаження, встановлення, оновлення або видалення пакунків із системи.
apt-cache
-
використовується для виконання операцій, таких як пошук в індексі пакунків (package index).
apt-file
-
використовується для пошуку файлів всередині пакунків.
Існує також “більш дружня” утиліта, яка називається просто apt
, що поєднує в одній утиліті параметри, які найчастіше використовуються - apt-get
і apt-cache
. Багато команд для apt
такі самі, як і для apt-get
, тому вони в багатьох випадках взаємозамінні. Однак, оскільки apt
може не бути встановлений в системі, рекомендується дізнатися, як використовувати apt-get
і apt-cache
.
Note
|
|
Оновлення індексу пакунків
Перед встановленням або оновленням програмного забезпечення за допомогою APT рекомендується спочатку оновити індекс пакунків, щоб отримати інформацію про нові та оновлені пакунки. Це робиться за допомогою команди apt-get
, за якою слідує параметр update
:
# apt-get update Ign:1 http://dl.google.com/linux/chrome/deb stable InRelease Hit:2 https://repo.skype.com/deb stable InRelease Hit:3 http://us.archive.ubuntu.com/ubuntu disco InRelease Hit:4 http://repository.spotify.com stable InRelease Hit:5 http://dl.google.com/linux/chrome/deb stable Release Hit:6 http://apt.pop-os.org/proprietary disco InRelease Hit:7 http://ppa.launchpad.net/system76/pop/ubuntu disco InRelease Hit:8 http://us.archive.ubuntu.com/ubuntu disco-security InRelease Hit:9 http://us.archive.ubuntu.com/ubuntu disco-updates InRelease Hit:10 http://us.archive.ubuntu.com/ubuntu disco-backports InRelease Reading package lists... Done
Tip
|
Замість |
Встановлення та видалення пакунків
З оновленим індексом пакунків ви можете інсталювати пакунок. Це робиться за допомогою apt-get install
, за яким слідує назва пакунку, який ви хочете встановити:
# apt-get install xournal Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: xournal 0 upgraded, 1 newly installed, 0 to remove and 75 not upgraded. Need to get 285 kB of archives. After this operation, 1041 kB of additional disk space will be used.
Аналогічно, щоб видалити пакунок, скористайтеся apt-get remove
, а потім напишіть ім’я пакунку:
# apt-get remove xournal Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: xournal 0 upgraded, 0 newly installed, 1 to remove and 75 not upgraded. After this operation, 1041 kB disk space will be freed. Do you want to continue? [Y/n]
Майте на увазі, що під час встановлення або видалення пакунків APT автоматично вирішує залежності. Це означає, що будь-які додаткові пакунки, необхідні для пакунку, який ви встановлюєте, будуть також встановлені і що пакунки, які залежать від пакунку, який ви видаляєте, також будуть видалені. APT завжди покаже, що буде встановлено або видалено, перш ніж запитати, чи хочете ви продовжити:
# apt-get remove p7zip Reading package lists... Done Building dependency tree The following packages will be REMOVED: android-libbacktrace android-libunwind android-libutils android-libziparchive android-sdk-platform-tools fastboot p7zip p7zip-full 0 upgraded, 0 newly installed, 8 to remove and 75 not upgraded. After this operation, 6545 kB disk space will be freed. Do you want to continue? [Y/n]
Зауважте, що після видалення пакунку відповідні файли конфігурації залишаються в системі. Щоб видалити пакунок разом з усіма файлами конфігурації, використовуйте параметр purge
замість remove
або параметр remove
з параметром --purge
:
# apt-get purge p7zip
або
# apt-get remove --purge p7zip
Tip
|
Ви також можете використовувати |
Виправлення порушених залежностей
У системі можуть бути присутні «порушені залежності». Це означає, що один або кілька встановлених пакунків залежать від інших пакунків, які не були встановлені або більше не існують. Це може статися через помилку APT або через пакунок, встановлений вручну.
Щоб вирішити цю проблему, скористайтеся командою apt-get install -f
. Вона спробує «виправити» порушені пакунки шляхом встановлення відсутніх залежностей, гарантуючи, що всі пакунки знову узгоджені.
Tip
|
Ви також можете використовувати |
Оновлення пакунків
APT можна використовувати для автоматичного оновлення будь-яких встановлених пакунків до останніх версій, доступних зі сховищ. Це робиться за допомогою команди apt-get upgrade
. Перш ніж запускати її, спочатку оновіть індекс пакунків за допомогою apt-get update
:
# apt-get update Hit:1 http://us.archive.ubuntu.com/ubuntu disco InRelease Hit:2 http://us.archive.ubuntu.com/ubuntu disco-security InRelease Hit:3 http://us.archive.ubuntu.com/ubuntu disco-updates InRelease Hit:4 http://us.archive.ubuntu.com/ubuntu disco-backports InRelease Reading package lists... Done # apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages have been kept back: gnome-control-center The following packages will be upgraded: cups cups-bsd cups-client cups-common cups-core-drivers cups-daemon cups-ipp-utils cups-ppdc cups-server-common firefox-locale-ar (...) 74 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. Need to get 243 MB of archives. After this operation, 30.7 kB of additional disk space will be used. Do you want to continue? [Y/n]
Підсумок у нижній частині виведення показує, скільки пакунків буде оновлено, скільки буде встановлено, видалено або залишиться без змін, загальний розмір завантаження та скільки додаткового місця на диску знадобиться для завершення операції. Щоб завершити оновлення, просто дайте відповідь Y
і дочекайтеся, поки apt-get
завершить завдання.
Щоб оновити один пакунок, просто запустіть apt-get upgrade
, а потім введіть назву пакунку. Як і в dpkg
, apt-get
спочатку перевірить, чи встановлено попередню версію пакунка. Якщо так, пакунок буде оновлено до останньої версії, доступної в репозиторії. Якщо ні, буде встановлено нову копію.
Tip
|
Ви також можете використовувати |
Локальний кеш
Коли ви встановлюєте або оновлюєте пакунок, відповідний файл .deb
завантажується до локального каталогу кешу перед встановленням пакунку. За замовчуванням цей каталог /var/cache/apt/archives
. Частково завантажені файли копіюються до /var/cache/apt/archives/partial/
.
Коли ви встановлюєте та оновлюєте пакунки, каталог кешу може стати досить великим. Щоб звільнити місце, ви можете очистити кеш за допомогою команди apt-get clean
. Це видалить вміст каталогів /var/cache/apt/archives
і /var/cache/apt/archives/partial/
.
Tip
|
Ви також можете використовувати |
Пошук пакунків
Утиліту apt-cache
можна використовувати для виконання операцій з індексом пакунків, таких як пошук конкретного пакунку або переліку пакунків, які містять певний файл.
Щоб здійснити пошук, скористайтеся apt-cache search
з наступним шаблоном пошуку. На виході отримаємо перелік всіх пакунків, які містять шаблон пошуку в назві пакунку, описі або його файлах.
# apt-cache search p7zip liblzma-dev - XZ-format compression library - development files liblzma5 - XZ-format compression library forensics-extra - Forensics Environment - extra console components (metapackage) p7zip - 7zr file archiver with high compression ratio p7zip-full - 7z and 7za file archivers with high compression ratio p7zip-rar - non-free rar module for p7zip
У наведеному вище прикладі запис liblzma5 - XZ-format compression library
не відповідає шаблону. Однак, якщо ми покажемо повну інформацію, включаючно з описом, для пакунку за допомогою параметра show
, ми знайдемо там наш шаблон:
# apt-cache show liblzma5 Package: liblzma5 Architecture: amd64 Version: 5.2.4-1 Multi-Arch: same Priority: required Section: libs Source: xz-utils Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Jonathan Nieder <jrnieder@gmail.com> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 259 Depends: libc6 (>= 2.17) Breaks: liblzma2 (<< 5.1.1alpha+20110809-3~) Filename: pool/main/x/xz-utils/liblzma5_5.2.4-1_amd64.deb Size: 92352 MD5sum: 223533a347dc76a8cc9445cfc6146ec3 SHA1: 8ed14092fb1caecfebc556fda0745e1e74ba5a67 SHA256: 01020b5a0515dbc9a7c00b464a65450f788b0258c3fbb733ecad0438f5124800 Homepage: https://tukaani.org/xz/ Description-en: XZ-format compression library XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm compression format, which provides memory-hungry but powerful compression (often better than bzip2) and fast, easy decompression. . The native format of liblzma is XZ; it also supports raw (headerless) streams and the older LZMA format used by lzma. (For 7-Zip's related format, use the p7zip package instead.)
Ви можете використовувати регулярні вирази із шаблоном пошуку, що дозволяє здійснювати дуже складний (і точний) пошук. Однак ця тема виходить за рамки цього уроку.
Tip
|
Ви також можете використовувати |
Список джерел
APT використовує список джерел, щоб знати, звідки отримати пакунки. Цей список зберігається у файлі sources.list
, розташованому всередині каталогу /etc/apt
. Цей файл можна редагувати безпосередньо за допомогою текстового редактору, наприклад vi
, pico
або nano
, або за допомогою графічних утиліт для роботи з текстом, таких як aptitude
або synaptic
.
Типовий рядок всередині `sources.list` виглядає так:
deb http://us.archive.ubuntu.com/ubuntu/ disco main restricted universe multiverse
Синтаксис: тип архіву, URL-адреса, дистрибутив і один або кілька компонентів, де:
- Тип архіву
-
репозиторій може містити пакунки з готовим до запуску програмним забезпеченням (бінарні пакети, тип
deb
) або з вихідним кодом цього програмного забезпечення (вихідні пакунки, типdeb-src
). Наведений вище приклад містить бінарні пакунки. - URL
-
URL-адреса репозиторію.
- Дистрибутив
-
Ім’я (або кодове ім’я) для дистрибутива, для якого надаються пакунки. В одному репозиторії можуть бути розміщені пакунки для кількох дистрибутивів. У наведеному вище прикладі
disco
є кодовою назвою для Ubuntu 19.04 Disco Dingo. - Компоненти
-
Кожен компонент представляє набір пакунків. Ці компоненти можуть відрізнятися в різних дистрибутивах Linux. Наприклад, в Ubuntu і похідних це:
main
-
містить пакунки з відкритим кодом, які офіційно підтримуються.
restricted
-
містить програмне забезпечення із закритим кодом, яке офіційно підтримується, наприклад, драйвери пристроїв для графічних карт.
universe
-
містить програмне забезпечення з відкритим кодом, яке підтримується спільнотою.
multiverse
-
містить програмне забезпечення із закритим кодом або запатентоване, яке не підтримується.
У Debian основними компонентами є:
main
-
складається з пакунків, які відповідають Debian Free Software Guidelines (DFSG), що не покладаються на програмне забезпечення за межами цієї області для роботи. Пакунки, які тут містяться, вважаються частиною дистрибутива Debian.
contrib
-
містить пакунки, сумісні з DFSG, але які залежать від інших пакунків, яких немає в
main
. non-free
-
містить пакунки, які не відповідають DFSG.
security
-
містить оновлення безпеки.
backports
-
містить новіші версії пакунків, які знаходяться в
main
. Цикл розробки стабільних версій Debian досить тривалий (близько двох років), і це гарантує, що користувачі зможуть отримати найновіші пакунки без необхідності змінюватиmain
сховище ядра.
Note
|
Ви можете дізнатися більше про Інструкції з вільного програмного забезпечення Debian на: https://www.debian.org/social_contract#guidelines |
Щоб додати новий репозиторій для отримання пакунків, ви можете просто додати відповідний рядок (зазвичай надається розпорядником репозиторію) в кінець sources.list
, зберегти файл та перезавантажити індекс пакунків за допомогою apt-get update
. Після цього пакунки в новому репозиторії будуть доступні для встановлення за допомогою apt-get install
.
Майте на увазі, що рядки, які починаються з символу #
, вважаються коментарями та ігноруються.
Каталог /etc/apt/sources.list.d
Всередині каталогу /etc/apt/sources.list.d
ви можете додавати файли з додатковими репозиторіями, які будуть використовуватися APT, без необхідності змінювати основний файл /etc/apt/sources.list
. Це прості текстові файли з таким самим синтаксисом, як описано вище, і розширенням файлу .list
.
Нижче ви бачите вміст файлу під назвою /etc/apt/sources.list.d/buster-backports.list
:
deb http://deb.debian.org/debian buster-backports main contrib non-free deb-src http://deb.debian.org/debian buster-backports main contrib non-free
Перелік вмісту пакунку та пошук файлів
Утиліту під назвою apt-file
можна використовувати для виконання більшої кількості операцій в індексі пакунків, наприклад, для виведення вмісту пакунку або пошуку пакунка, який містить певний файл. Ця утиліта може не бути встановлена за замовчуванням у вашій системі. У такому випадку зазвичай ви можете встановити її за допомогою apt-get
:
# apt-get install apt-file
Після встановлення вам потрібно буде оновити кеш пакунків, що використовується для apt-file
:
# apt-file update
Зазвичай це займає лише кілька секунд. Після цього ви готові використовувати apt-file
.
Щоб вивести вміст пакунку, використовуйте параметр list
, за яким слідує ім’я пакунку:
# apt-file list unrar unrar: /usr/bin/unrar-nonfree unrar: /usr/share/doc/unrar/changelog.Debian.gz unrar: /usr/share/doc/unrar/copyright unrar: /usr/share/man/man1/unrar-nonfree.1.gz
Tip
|
Ви також можете використовувати |
Ви можете шукати файл у всіх пакунках, використовуючи параметр search
, за яким слідує ім’я файлу. Наприклад, якщо ви хочете дізнатися, який пакунок містить файл під назвою libSDL2.so
, ви можете використовувати:
# apt-file search libSDL2.so libsdl2-dev: /usr/lib/x86_64-linux-gnu/libSDL2.so
Відповіддю є пакунок libsdl2-dev
, який містить файл /usr/lib/x86_64-linux-gnu/libSDL2.so
.
Різниця між apt-file search
і dpkg-query
полягає в тому, що apt-file search
також шукатиме у видалених пакунках, тоді як dpkg-query
може показувати лише файли, які належать до встановленого пакунку.
Вправи до посібника
-
Яка команда для встановлення пакунку з назвою
package.deb
за допомогоюdpkg
? -
За допомогою
dpkg-query
знайдіть, який пакунок містить файл з іменем7zr.1.gz
. -
Чи можете ви видалити пакунок під назвою
unzip
із системи за допомогоюdpkg -r unzip
, якщо пакунокfile-roller
залежить від нього? Якщо ні, то який би був правильний спосіб зробити це? -
Використовуючи
apt-file
, як можна дізнатися, який пакунок містить файлunrar
? -
Використовуючи
apt-cache
, яка команда для відображення інформації про пакунокgimp
?
Дослідницькі вправи
-
Розглянемо репозиторій із джерелом пакунків Debian для дистрибутиву
xenial
, розміщеним за адресоюhttp://us.archive.ubuntu.com/ubuntu/
та з пакунками для компонентуuniverse
. Який відповідний рядок потрібно додати до/etc/apt/sources.list
? -
Під час компіляції програми ви отримуєте повідомлення про помилку, яке зачначає, що файл заголовку
zzip-io.h
відсутній у вашій системі. Як дізнатися, який пакунок містить цей файл? -
Як можна ігнорувати попередження про залежність і видалити пакунок за допомогою
dpkg
, навіть якщо в системі є пакунки, які залежать від нього? -
Як ви можете отримати більше інформації про пакунок під назвою
midori
за допомогоюapt
? -
Перед встановленням або оновленням пакунків за допомогою
apt
, яку команду слід використати, щоб переконатися, що індекс пакунків є актуальним?
Підсумки
На цьому уроці ми дізналися:
-
Як використовувати
dpkg
для встановлення та видалення пакунків. -
Як вивести встановлені пакунки та їх вміст.
-
Як переналаштувати встановлений пакунок.
-
Що таке
apt
і як за допомогою нього встановлювати, оновлювати та видаляти пакунки. -
Як використовувати
apt-cache
для пошуку пакунків. -
Як працює файл
/etc/apt/sources.list
. -
Як використовувати
apt-file
, щоб показати вміст пакунку, або як знайти, який пакунок містить певний файл.
Обговорювалися наступні команди:
dpkg -i
-
Встановлює один пакунок або список пакунків, розділених пробілами.
dpkg -r
-
Видаляє пакунок або список пакунків, розділених пробілами.
dpkg -I
-
Перевіряє пакунок, надаючи інформацію про програмне забезпечення, яке він встановлює, та будь-які необхідні залежності.
dpkg --get-selections
-
Перелічує всі пакунки, які
dpkg
встановив у системі. dpkg -L
-
Виводить перелік всіх файлів, які встановлює певний пакунок.
dpkg-query
-
Якщо зазначити ім’я файлу, команда виведе пакунок, який встановив цей файл.
dpkg-reconfigure
-
Ця команда повторно запустить сценарій пакунків post-install, щоб адміністратор міг налаштувати конфігурацію інсталяції пакунку.
apt-get update
-
Ця команда оновить локальний індекс пакунків, щоб він відповідав тому, що доступно в налаштованих репозиторіях у каталозі
/etc/apt/
. apt-get install
-
Ця команда завантажить пакунок з репозиторію та встановить його разом із залежностями, також можна використовувати для встановлення пакунку Debian, який уже завантажено.
apt-get remove
-
Ця команда видалить вказаний пакунок(и) із системи.
apt-cache show
-
Так само, як і команду
dpkg -I
, цю команду можна використовувати для відображення інформації про певний пакунок. apt-cache search
-
Ця команда шукатиме певний пакунок у вашій локальній кешованій базі даних APT.
apt-file update
-
Ця команда оновить кеш пакунку, щоб команда
apt-file
могла запитувати про його вміст. apt-file search
-
Ця команда шукатиме, до якого пакунку належить файл. Повертається список усіх пакунків, що містять шаблон.
apt-file list
-
Ця команда використовується для відображення вмісту пакунка, як і команда
dpkg -L
.
Відповіді на вправи до посібника
-
Яка команда для встановлення пакунку з назвою
package.deb
за допомогоюdpkg
?Передайте параметр
-i
доdpkg
:# dpkg -i package.deb
-
За допомогою
dpkg-query
знайдіть, який пакунок містить файл з іменем7zr.1.gz
.Додайте параметр
-S
доdpkg-query
:# dpkg-query -S 7zr.1.gz
-
Чи можете ви видалити пакунок під назвою
unzip
із системи за допомогоюdpkg -r unzip
, якщо пакунокfile-roller
залежить від нього? Якщо ні, то який би був правильний спосіб зробити це?Ні.
dpkg
не вирішує залежності та не дозволить вам видалити пакунок, якщо інший встановлений пакунок залежить від нього. У цьому прикладі ви можете спочатку видалитиfile-roller
(якщо від нього нічого не залежить), а потім видалитиunzip
або видалити обидва одночасно за допомогою:# dpkg -r unzip file-roller
-
Як дізнатися, який пакет містить файл
/usr/bin/unrar
за допомогою утилітиapt-file
?Використовуйте параметр
search
, за яким слідує шлях (або ім’я файлу):# apt-file search /usr/bin/unrar
-
Використовуючи
apt-cache
, яка команда для відображення інформації про пакунокgimp
?Використовуйте параметр
show
, за яким слідує ім’я пакунку:# apt-cache show gimp
Відповіді до дослідницьких вправ
-
Розглянемо репозиторій із джерелом пакунків Debian для дистрибутиву
xenial
, розміщеним за адресоюhttp://us.archive.ubuntu.com/ubuntu/
та з пакунками для компонентуuniverse
. Який відповідний рядок потрібно додати до/etc/apt/sources.list
?Вихідні пакунки мають тип
deb-src
, тому рядок має бути таким:deb-src http://us.archive.ubuntu.com/ubuntu/ xenial universe
Цей рядок також можна додати до файлу
.list
у/etc/apt/sources.list.d/
. Назва залежить від вас, але вона має бути описовою, на зразокxenial_sources.list
. -
Під час компіляції програми ви отримуєте повідомлення про помилку, яке зачначає, що файл заголовку
zzip-io.h
відсутній у вашій системі. Як дізнатися, який пакунок містить цей файл?Використовуйте
apt-file search
, щоб знайти, який пакунок містить файл, відсутній в системі:# apt-file search zzip-io.h
-
Як можна ігнорувати попередження про залежність і видалити пакунок за допомогою
dpkg
, навіть якщо в системі є пакунки, які залежать від нього?Для цього можна використати параметр -force, але цього ніколи не слід робити, якщо ви не знаєте точно, що робите, оскільки існує великий ризик того, що ваша система залишиться в нестабільному або «зламаному» стані.
-
Як ви можете отримати більше інформації про пакунок під назвою
midori
за допомогоюapt-cache
?Використовуйте
apt-cache show
з назвою пакунку:# apt-cache show midori
-
Перед встановленням або оновленням пакунків за допомогою
apt
, яку команду слід використати, щоб переконатися, що індекс пакунків є актуальним?Слід використовувати
apt-get update
. Це завантажить останні індекси пакунків зі сховищ, описаних у файлі/etc/apt/sources.list
або в каталозі/etc/apt/sources.list.d/
.