Керування пакетами в Ubuntu та Debian за допомогою Apt-Get та Apt-Cache. Пакетний менеджер APT Apt get y значення команди

Утиліта apt-get – продуктивна вільна консольна програма, яка використовується та працює з бібліотекою APT (Advanced Packaging Tool) для виконання установки нових пакетів з ПЗ, видалення існуючих, оновлення встановлених, а також оновлення всієї операційної системи.

Консольна утиліта apt-cache використовується для пошуку в кеші програмних пакетів APT. Говорячи простими словами, цей інструмент, використовується для пошуку пакетів, збору інформації про пакети та пошуку пакетів, доступних для встановлення в операційні системина основі Debian або Ubuntu.

Як отримати список усіх доступних пакетів?

Щоб побачити всі доступні пакети, виконайте таку команду:

Apt-cache pkgnames

Як знайти ім'я пакета та його опис.

Щоб знайти назву пакета та його опис перед встановленням, скористайтеся прапором «search». Використання “search” c apt-cache відобразить список відповідних пакетів з коротким описом. Наприклад, ви хочете знайти опис пакету vsftpd: щоб зробити це, команда повинна бути такою:

Apt-cache search vsftpd

Щоб знайти та перерахувати всі пакети, ім'я яких починається з vsftpd , можна використовувати наступну команду:

Apt-cache pkgnames vsftpd

Як я можу переглянути інформацію про пакет?

Наприклад, якщо ви хочете ознайомитися з інформацією про пакет, з його коротким описом, що відображає номер версії, контрольні суми, розмір, розмір після встановлення, категорії і так далі, ви можете використовувати підкоманду show, як показано нижче:

Apt-cache show netcat

Як можна перевірити залежність пакета?

Щоб перевірити залежність конкретного пакета, можна використовувати підкоманду showpkg , щоб дізнатися, встановлені ці залежності чи ні. Наприклад, використовуйте команду showpkg разом із назвою пакета.

Apt-cache showpkg vsftpd

Як можна переглянути статистику кешу?

Підкоманда stats відобразить повну статистику про кеш, наприклад, повну кількість пакетів, знайдену в кеші. Використовуйте таку команду:

Apt-cache stats

Як оновити список пакетів у системі?

Команда update використовується для синхронізації та оновлення індексних файлів пакетів. Синхронізація відбувається з джерелами, зазначеними у файлі /etc/apt/sources.list. Цю команду можна використовувати, наприклад, щоб не втрачати важливих оновлень пакетів.

Sudo apt-get update

Як оновити пакети у системі?

Команда upgrade використовується для оновлення всього встановленого на Наразісофту у вашій системі. Іноді може вийти так, що оновлення не можна встановити через будь-який інший пакет, який вимагає стару версію.

Sudo apt-get upgrade

Але якщо ви хочете оновитись незалежно від вимог пакетів, використовуйте підкоманду dist-upgrade:

Sudo apt-get dist-upgrade

Як я можу встановити або оновити конкретний пакет?

Підкоманда install використовується для встановлення чи оновлення будь-якого пакета.

Sudo apt-get install netcat

Як я можу встановити кілька пакетів відразу?

Ви можете ввести назви кількох пакетів, щоб встановити їх одночасно. Наприклад, щоб встановити пакети nethogs і goaccess , можна виконати таку команду:

Sudo apt-get install nethogs goaccess

Як встановити кілька пакетів за маскою назви

За допомогою регулярних виріжних можна додавати кілька пакетів за допомогою спеціальних символів. Наприклад, можна використовувати зірочку, щоб встановити всі пакети, які містять рядок "name" у назві:

Sudo apt-get install *name*

Як інсталювати пакети без оновлення.

Використання прапора –no-upgrade запобігатиме оновлення вже встановлених пакетів.

Sudo apt-get install packageName --no-upgrade

Як оновити певні пакети?

Прапор only-upgrade не встановить нові пакети, а лише оновить існуючі.

Sudo apt-get install имя_пакета --only-upgrade

Як я можу встановити певну версію пакета?

Уявімо, що вам необхідно встановити специфічну версію пакета, просто використовуйте знак разом із ім'ям пакета і припишіть бажану версію.

Sudo apt-get install vsftpd=2.3.5-3ubuntu1

Як видалити пакети без видалення установок?

Щоб видалити програмні пакети без видалення конфігураційних файлів (для подальшого їх використання), використовуйте команду remove як показано.

Sudo apt-get remove vsftpd

Як видалити пакети повністю?

Щоб видалити пакет разом з файлами налаштувань, використовуйте підкоманду purge , як показано нижче.

Sudo apt-get purge vsftpd

Або ви можете об'єднати обидві команди, ось так:

Sudo apt-get remove --purge vsftpd

Як можна очистити місце на диску?

Команда clean використовується для звільнення дискового простору за рахунок видалення отриманих.deb-файлів пакетів у вашому локальному репозиторії.

Sudo apt-get clean

Як завантажити вихідний код пакета?

Щоб тільки завантажити вихідний код пакета, можна використовувати опцію –download-only source з ім'ям пакета, наприклад:

Sudo apt-get --download-only source vsftpd

Як можна завантажити та розпакувати пакет?

Щоб завантажити та розпакувати вихідний код пакета у спеціальну директорію, виконайте таку команду:

Sudo apt-get source vsftpd

Як можна завантажити, розпакувати та скомпілювати вихідний код пакета?

Ви також можете завантажити, розпакувати та скомпілювати вихідний код пакета, використовуючи опцію '–compile', як показано нижче:

Sudo apt-get --compile source goaccess

Як завантажити пакет без встановлення

Використовуючи опцію «download», можна завантажити будь-який пакет, не встановлюючи його. Наприклад, наступна команда лише завантажить пакет nethogs у поточну робочу директорію.

Sudo apt-get download nethogs

Як можна переглянути лог змін (changelog) пакета?

Прапор changelog завантажує лог змін пакета та відображає версію пакета, якщо він встановлений.

Sudo apt-get changelog vsftpd

Як можна виправити зламані залежності?

Команда "check" - інструмент для діагностики, він використовується для оновлення кешу пакетів та перевірки на зламані залежності.

Sudo apt-get check

Як можна знайти та зібрати залежності?

Команда build-dep шукає та встановлює зібрані залежності потрібного пакета. Якщо пакет відсутній у локальному репозиторії, ви отримаєте помилку.

Sudo apt-get build-dep netcat

Як можна автоматично очистити кеш Apt-Get?

Autoclean видаляє все.deb-файли з /var/cache/apt/archives для звільнення вільного місцяна жорсткому диску.

Sudo apt-get autoclean

Як автоматично видалити непотрібні пакети?

Підкоманда autoremove використовується для автоматичного видалення пакетів, які були встановлені в залежності від інших, але зараз вони більше не потрібні. Наприклад, наступна команда видалить встановлений пакет разом із його залежностями.

Sudo apt-get autoremove vsftpd

Інформація люб'язно надана сайтом. Дякую.

| |

Що такеApt-Get?

Apt – програма інтерфейсу користувачакомандного рядка для пакувальної системи dpkg, використання якої є кращим способом управління програмним забезпеченням з командного рядка будь-якого дистрибутива. Це основна система керування пакетами в Debian та дистрибутивах Linux на базі Debian, таких як Ubuntu.

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

Даний посібник говорить про основне використання «apt-get» і «apt-cache» та їхні можливості в управлінні ПЗ. Всі приклади розглядаються на хмарному сервері Ubuntu 12.04, але описані дії та техніки можна виконати на будь-якому дистрибутиві, що базується на Debian.

Оновлення бази даних пакета зAptGet

Apt-get працює з базою даних відомого та доступного програмного забезпечення. Ця команда виконує встановлення, пошук пакетів та інші дії, пов'язані з цією базою даних.

Тому перш ніж розпочати будь-яку пакувальну операцію з apt-get, необхідно переконатися в наявності новітньої локальної копії бази даних.

Оновити базу даних можна за допомогою наступної команди. Apt-get вимагає адміністративних привілеїв у виконанні більшості операцій:

sudo apt-get update

Буде виведено список серверів, із яких витягується інформація. Після цього база даних оновиться.

Оновлення встановлених пакетів за допомогоюAptGet

Пакети системи можна оновити за допомогою наступної команди:

sudo apt-get upgrade

Для більш повного оновленнявикористовуйте аргумент «dist-upgrade», який вирішує інтелектуальні залежності нових пакетів та оновлює необхідні програмиза рахунок менш важливих:

sudo apt-get dist-upgrade

Встановлення нових пакетів зAptGet

Якщо ім'я пакета, який потрібно встановити, відомо, його можна встановити за допомогою наступного синтаксису:

sudo apt-get install package1 package2 package3 ...

Можна також встановити кілька пакетів за один раз, що дозволяє отримати все необхідне проектне програмне забезпечення за один крок.

Важливо розуміти, що apt-get встановлює як запитуване ПЗ, але й програми, необхідних його установки чи запуску.

Наприклад, повний пакет текстового редактора vim можна встановити, ввівши:

sudo apt-get install vim

ВилученняпакетузАpt-Get

Щоб видалити пакет, можна використовувати наступну команду:

sudo apt-get remove package_name

Ця команда видаляє пакети, але зберігає конфігураційний файл, якщо пакет знову буде встановлений. Таким чином, установки залишаться неушкодженими, навіть якщо програма не встановлена.

Якщо конфігураційний файл не потрібно зберігати, його можна видалити разом із програмою, використовуючи синтаксис:

sudo apt-get purge package_name

Ця дія видаляє будь-який конфігураційний файл, пов'язаний із пакетом.

Щоб видалити будь-який непотрібний пакет, встановлений автоматично для підтримки іншої програми, введіть таке:

sudo apt-get autoremove

Також можна вказати ім'я пакета після команди autoremove, щоб видалити пакет і його залежності.

Загальні прапориAptGet

Існує низка різних опцій, які можна вказати за допомогою прапорів. Розглянемо деякі з них.

Щоб здійснити «пробний прогін» процедури з метою дізнатися про її дію, можна використовувати прапор «-s» («simulate»):

sudo apt-get install -s htop
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
strace ltrace
The following NEW packages will be installed:
htop
0 upgraded, 1 uploaded, 0 to remove and 118 not upgraded.
Inst htop (1.0.1-1 Ubuntu:12.04/precise )
Conf htop (1.0.1-1 Ubuntu:12.04/precise )

На місці фактичних дій можна побачити розділи "Inst" та "Conf", які вказують на локацію, куди пакет буде встановлений і налаштований, якщо прибрати прапор "-s".

При необхідності налаштувати автоматичне підтвердження вибору можна використовувати прапор «-у», що автоматично відповідає «так» на всі запитання.

sudo apt-get remove -y htop

Якщо потрібно скачати пакет, але не встановлювати його, можна виконати наступну команду:

sudo apt-get install -d packagename

Дані файли будуть розміщені в "/var/cache/apt/archives".

При необхідності придушити результати можна використовувати прапор «-qq»:

sudo apt-get remove -qq packagename

Пошук пакета за допомогоюAptCache

Інструмент упаковки "apt", насправді, є набором пов'язаних безкоштовних інструментів, які використовуються для керування програмним забезпеченням системи.

У той час як "apt-get" використовується для оновлення, встановлення та видалення пакетів, "apt-cache" використовується для запиту інформації в базі даних пакетів.

Щоб знайти потрібні пакети, можна використати таку команду. Зверніть увагу, apt-cache зазвичай не потребує адміністративних привілеїв.

apt-cache search what_you_are_looking_for

Наприклад, якщо потрібно знайти htop, покращену версію top, можна ввести наступне:

apt-cache search htop
aha - ANSI color to HTML converter
htop - interactive processes viewer

Можна шукати й загальніші поняття. У цьому прикладі потрібно знайти програмне забезпечення перетворення mp3:

apt-cache search mp3 convert
abcde - A Better CD Encoder
cue2toc - converties CUE files to cdrdao's TOC format
dir2ogg - audio файл конвертер в форматі ogg-vorbis
easytag - viewing, editing and writing ID3 tags
hpodder - Tool to scan and download
id3v2 - Command line id3v2 tag editor
kid3 - KDE MP3 ID3 tag editor
kid3-qt - Audio tag editor
. . .

Перегляд інформації про пакет зAptCache

Щоб переглянути інформацію про пакет, включаючи розширений опис, використовуйте наступний синтаксис:

apt-cache show package_name

Це також надасть інформацію про розмір скачування та необхідні для пакета залежності.

Щоб переконатися, що пакет встановлений, і дізнатися, якому сховищу належить, введіть:

apt-cache policy package_name

Підсумки

Цей посібник надає достатньо інформації для управління здебільшого програмного забезпечення на сервері.

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

Tags: ,

У зв'язку з тим, що деякі товариші не розуміють що таке apt і dpkg. Вирішив створити ще один запис про ці утиліти.

APT та все, все, все. Вивчаємо можливості менеджера пакетів APT та супутніх програм

Debian вніс у світ Linux масу позитивних нововведень, багато з яких було прийнято й іншими дистрибутивами. Найзначнішим удосконаленням Debian стала система управління пакетами APT, після її випуску всі інші дистрибутиви перетворилися на застарілий мотлох. Сьогодні APT складна, розумна, гнучка і приховує від необізнаного лінуксоїда безліч секретів.

Просунута система керування пакетами

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

APT включає наступний набір утиліт:

Утиліти пакету apt

apt-cache - маніпулює кешем доступних пакетів, що зазвичай використовується
для пошуку пакета та/або отримання інформації про нього

apt-cdrom - дозволяє додати CD/DVD-диск як джерело пакетів (репозиторія)

apt-config - читає значення опцій, заданих у конфігураційному
файл /etc/apt/apt.conf, використовується іншими APT-утилітами

apt-extracttemplates - витягує конфігураційні файли DebConf
з пакетів, використовується іншими APT-утилітами

apt-ftparchive - створює індексні файли

apt-get – встановлює, видаляє, оновлює список пакетів
та самі пакети, центральна APT-утиліта

apt-key - керує ключами автентифікації, що використовуються для перевірки
автентичності джерел пакетів

apt-secure - перевіряє автентичності цифровий підписпакетів apt, що входять
до складу дистрибутива та репозиторіїв

apt-sortpkgs - сортує індексні файли

Утиліти спираються на такі конфігураційні файли:

Конфігураційні файли APT

/etc/apt/sources.list – список джерел пакетів (репозиторіїв)
/etc/apt/apt.conf - основний файл конфігурації APT
/etc/apt/preferences - файл уподобань, керує тим, яка версія пакета буде
встановлена ​​у разі наявності в репозиторії відразу кількох версій

APT проста і зрозуміла у використанні, середньостатистичного користувача зазвичай достатньо всього шести нижченаведених команд:

Основні команди APT

apt-cache search маска - пошук пакету
apt-cache show пакет - перегляд інформації про пакет
apt-get install пакет - встановлення пакету
apt-get remove пакет - видалення пакету
apt-get update – оновлення кешу доступних пакетів
apt-get upgrade – оновлення всіх пакетів

Останні дві команди зазвичай виконуються одна за одною, в результаті чого встановлюються всі пакети, для яких в репозиторії доступні нові версії. Якщо ж необхідно оновити лише вказаний пакет, то після apt-get update слід виконати команду apt-get install пакет.

Дистрибутив Ubuntu робить процес "спілкування" з APT-утилітами ще більш простим і зводить його до клацання по галочках графічного інтерфейсу. У ньому є власний, гранично простий менеджер пакетів (так і називається "Package Manager"), що запускається по cron"у менеджер оновлень Update Manager, графічний установник вручну завантажених deb-пакетів GDebi та потужніша графічна надбудова над APT-утилітами Synaptic.

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

Сторонні джерела пакетів

Крім головного репозиторію, що містить усі пакети від розробників дистрибутива, існує і безліч інших джерел пакетів, які можуть містити стороннє ПЗ, недоступне з офіційного репозиторію, надавати свіжіші його версії або просто бути швидшим дзеркалом. Репозиторієм може бути і звичайний каталог на жорсткому диску, і компакт-диск.

Щоб навчити APT працювати зі сторонніми репозиторіями, достатньо виконати чотири прості дії:

Поле uri - це адреса репозиторію, яка у більшості випадків є HTTP-адресою, але може бути посиланням на локальний репозиторій (file:/root/repository), адресою репозиторію на FTP або SSH-сервері. У полі дистрибутив вказується ім'я дистрибутива, для якого зібрані пакети. Для Debian ім'я може бути одним із stable, oldstable, unstable, testing, у той час як у випадку Ubuntu слід вказувати лише конкретне найменування дистрибутива (наприклад, jaunty), а також різні позначення на його основі (наприклад, jaunty-updates, jaunty- backports, jaunty-security). Треба сказати, що APT зовсім не проти того, щоб змішувати пакети різних дистрибутивів на одній системі, але за наслідки в цьому випадку відповідатимеш лише ти. Компонент зазвичай має ім'я main, contrib або non-free для Debian і main, universe, multiverse, partner і restricted для Ubuntu. Усе це імена різних репозиторіїв пакетів, які відокремлені лише у тому, щоб розділити пакети з урахуванням будь-яких критеріїв. Наприклад main - це пакети, що збираються групою розробників Ubuntu/Debian, на якість програмного забезпечення, що міститься в них, є певні гарантії, включаючи своєчасні оновленняі багфікси, в той час як contrib і universe - це стороннє програмне забезпечення, яке ти встановлюєш на свій страх і ризик.

2. Додати в apt keyring публічний ключ репозиторію, що використовується для засвідчення його автентичності та надійності. Ключ можна отримати у будь-який спосіб і додати, виконавши команду «apt-key add ключ», але такий спосіб рідко практикується через незручність. У переважній більшості випадків ти матимеш справу з командою

sudo apt-key adv --keyserver сервер-сертифікації --recv-keys ID-ключа
яка запитує ключ безпосередньо у сервера сертифікації (для Ubuntu це keyserver.ubuntu.com). Саме так більшість сторонніх розробників поширюють своє програмне забезпечення для дистрибутивів Debian/Ubuntu (при цьому інші просто викладають пакети та їх контрольні суми). Наприклад, зайшовши на сторінку проекту, що цікавить тебе, на хостингу launchpad.net і натиснувши на посилання "Technical details about this PPA", ти побачиш рядок, який необхідно додати в /etc/apt/sources.list, в "Signing key:" буде вказано ID ключа.

3. Оновити кеш доступних пакетів:

sudo apt-get update
4. Встановити пакет за допомогою команди «apt-get install пакет».

Багато девелоперів розміщують посилання на репозиторій і ID його ключа прямо в deb-пакет, тому після завантаження пакета, установки та виконання команди «apt-get update && apt-get upgrade» пакети будуть оновлені разом з їхніми побратимами, перерахованими в sources.list. Зокрема, так поширюються браузери opera та альфа-реліз google chrome.

Репозиторій на компакт-диску додати в sources.list набагато простіше. Для цього є спеціальна команда apt-cdrom. Ти просто вставляєш CD у привід і виконуєш команду:

sudo apt-cdrom add

Хитрості та нестандартні ситуації

APT є APT, вона зручна і проста, але іноді не обійтися без хитрощів, про найкорисніші з яких ти дізнаєшся з цього розділу.

1. За замовчуванням команда «apt-get remove» видаляє пакет повністю лише в тому випадку, якщо жоден з його файлів не був змінений після інсталяції, інакше змінені файли залишаються недоторканими. Звичайно, конфігураційні файли змінюються в більшості випадків, тому apt-get залишає після себе купу сміття, яку доводиться прибирати руками. Команда "apt-get purge", виконана замість "apt-get remove", вирішує цю проблему.

2. Любителі колупання в системі, а також системні адміністратори, сервери яких зазнали злому, швидше за все, захочуть повернути пакети до початкового стану, в якому вони знаходилися до проведення маніпуляцій. Допоможе в цьому команда:

sudo apt-get install --reinstall пакет
3. Більше низькорівневі утилітиуправління deb-пакетами (такі, як dselect і dpkg) ведуть спеціальний список станів пакетів, який може використовуватися для управління тим, які пакети повинні бути встановлені або видалені пакетному режимі(саме так працює зв'язка dselect + dpkg). Його можна використовувати для багатьох інших цілей, наприклад, для перенесення конфігурації системи на іншу машину. Виконай таку команду:

dpkg --get-selections > file
Перенеси файл на іншу машину та виконай на ній дві команди:

cat file > dpkg --set-selections
apt-get dselect-upgrade

До системи будуть додані всі пакети системи-джерела. Щоб файл стану пакетів також містив інформацію про те, які пакети слід видалити із системи, додай символ "\*" після аргументу "--get-selections". Список станів не містить версії пакетів, це можна використовувати після встановлення новішої версії дистрибутива для приведення його до необхідного стану.

4. Ти вручну наклав латку на файл одного із системних пакетів і не хочеш, щоб цей пакет був оновлений (зі знищенням усіх твоїх змін) після виклику «apt-get upgrade». У цьому випадку тобі допоможе знову прийде список станів. Пакет може бути "заморожений", внаслідок чого apt-get відмовиться його оновлювати та пропустить:

echo -e "coreutils hold" | dpkg --set-selections
Примусово оновити пакет можна за допомогою вказівки прапора "-u" під час виклику apt-get.

5. Як і будь-яка система, що має мережевий функціонал, APT дозволяє використовувати проксі для доступу до репозиторій. Щоб використати цю можливість, пропиши у файл /etc/apt/apt.conf наступний рядок:

Acquire::http::Proxy "http://xxx.xxx.xx:yyyy"

Де xxx.xxx.xx – ім'я твого проксі, yyyy – порт.

6. Зазвичай APT-утиліти запитують найновішу версію пакета з усіх, що знаходяться в його кеші, тому якщо ти додав у sources.list різні експериментальні та unstable-репозиторії, то після оновлення отримаєш дистрибутив, що складається виключно з експериментальних або unstable-пакетів, і купу проблем, спричинених таким станом справ. Однак ситуація легко розрулюється за допомогою приміщення в /etc/apt/apt.conf наступного рядка:

APT::Default-Release "реліз";

Де реліз - це oldstable, stable, unstable, testing або experimental для Debian або ім'я релізу для Ubuntu. Тепер, якщо необхідно встановити пакет із зазначеного дистрибутива, просто пропиши його ім'я після аргументу "-t" при викликі apt-get:

sudo apt-get -t unstable install пакет
7. Усі отримані apt-get deb-пакети зберігаються в каталозі /var/cache/apt/archives, а це означає, що в разі перевстановлення системи ти можеш скопіювати вміст каталогу на інший диск/розділ, а потім відновити його та заощадити час/ трафік на встановленні пакетів. Крім того, це по суті снапшот твоєї встановленої системи (тієї її частини, яку ти встановив сам), який можна віднести до друга (разом із описаним у третьому пункті списком станів) або, при непотрібності, видалити для звільнення місця.

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

sudo dpkg --get-selections | grep-v "deinstall" | \
awk "(print $1)" | xargs dpkg-repack

9. Крім бінарних пакетів, репозиторії Debian/Ubuntu містять пакети з вихідними текстами додатків, які можуть бути отримані та зібрані з використанням наступної команди:

sudo apt-get -b source ім'я пакету

Сторонні утиліти

Система APT пройшла дуже довгий шлях розвитку, тому крім офіційних утиліт, включених у пакет apt, репозиторії Debian та Ubuntu рясніють масою сторонніх утиліт, які можуть бути використані для виконання деяких нестандартних завдань.
Найбільш корисна їх називається apt-file і необхідна, як неважко здогадатися з назви, визначення приналежності тієї чи іншої файлу певному пакету. Встановлюємо:

sudo apt-get install apt-file
Просимо apt-file створити кеш всіх файлів, встановлених у системі пакетів (за ним буде здійснюватися пошук):

apt-file search /usr/bin/apt-get
apt: /usr/bin/apt-get

Запитуємо список усіх файлів пакета:

apt-file list apt

Проста утиліта apt-show-versions покаже, які пакети можна оновити, із зазначенням версій та інших даних. Запусти її з прапором "-u", щоб отримати список тільки пакетів, що підлягають оновленню (замість списку всіх пакетів).

Якщо ти встановив велику кількість різних пакетів і тепер хочеш позбутися непотрібного мотлоху, то в цій справі допоможе утиліта deborphan, яка здійснює пошук пакетів, що не використовуються, і осиротілих залежностей. Просто запусти deborphan без аргументів, і ти побачиш список пакетів, який відразу можна передати на вхід команді «apt-get remove» або просто виконати таку команду:

sudo apt-get remove `deborphan`

За умовчанням deborphan обробляє лише пакети, що містять бібліотеки, але таку поведінку можна змінити, додавши прапор "-a" до виклику команди:

Не варто відразу кидатися видаляти показані утилітою пакети, тому що навіть найпотужніший евристичний алгоритм не здатний визначити твої особисті потреби. Так мені програма показала пакети google-chrome, inkscape і навіть xorg.

Утиліта apt-move дозволить створити локальний репозиторій. Встанови програму, відкрий файл /etc/apt-move.conf, вкажи в опції LOCALDIR шлях до каталогу, в якому повинен розташовуватись репозиторій, і запусти команду:

sudo apt-move update

В результаті всі викачані з Мережі за допомогою apt-get пакети (каталог /var/cache/apt/archives) будуть переміщені до вказаного в конфізі каталогу, для якого буде створено індексний файл. Це зручний спосіб створення внутрішньомережевого репозиторію для тих випадків, коли масу однакових пакетів необхідно встановити на безліч машин.

Для створення локального репозиторію також дуже зручно застосовувати сервер apt-proxy, що дозволяє кешувати deb-пакети, що скачуються з репозиторію, на стороні сервера. Для цього apt-proxy встановлюється на виділеній машині (можливо шлюзі), а sources.list клієнтів модифікується так, щоб як поле uri всіх репозиторіїв було вказано адресу цієї машини. Як результат, всі запити deb-пакетів перенаправляються до apt-proxy, який запитує пакет у головного репозиторію та зберігає його у своєму кеші, а відповідь на всі наступні запити цього пакета буде віддана з кешу.

Для початку встановлюємо apt-proxy на виділеній машині:

sudo apt-get install apt-proxy

Далі відкриваємо файл /etc/apt-proxy/apt-proxy-v2.conf, переходимо в секцію та замінюємо значення опції address на IP-адресу машини, а також описуємо використовувані apt-proxy джерела пакетів, наприклад:

sudo vi /etc/apt-proxy/apt-proxy-v2.conf


backends = http://ua.archive.ubuntu.com/ubuntu/
min_refresh_delay = 1d


backends = http://security.ubuntu.com/ubuntu/
min_refresh_delay = 1d

Зазвичай цих двох адрес достатньо для покриття всього спектру пакетів, що надається розробниками Ubuntu. Перезапускаємо apt-proxy:

sudo invoke-rc.d apt-proxy restart

Щоб перевести клієнтів на використання apt-proxy, беремо стандартний sources.list Ubuntu, замінюємо всі реальні поля uri на "http://IP-адреса-apt-proxy:9999/ubuntu/" та копіюємо цей файл на кожен клієнт.

Існує і безліч інших, менш цікавих утиліт, що працюють у зв'язці з APT. Наприклад, apt-dater дозволяє виконувати оновлення пакетів на великій кількості віддалених вузлів, використовуючи псевдографічний інтерфейс. Програма aptsh реалізує командний інтерфейс, подібний до sh, поверх команд пакету apt, aptfs - віртуальна файлова система для управління APT. Утиліта debdelta, що дозволяє оновлювати пакети за допомогою викачування з Мережі їх дельт, могла б стати темою для окремої статті, якби для неї існував хоча б один репозиторій, що своєчасно оновлюється.

Aptitude

Утиліта apt-get та її родичі - не єдина з доступних для реалізації APT. Ще більш потужна, зручна та універсальна альтернатива їм зветься aptitude і є концентрованим в одному місці функціонал apt-get, apt-cache і dselect.
Aptitude дозволяє встановлювати / видаляти, шукати, оновлювати і робити масу інших дій з пакетами, використовуючи два типи інтерфейсу: командний режим, подібний до apt-get і apt-cache, і режим з псевдографічним інтерфейсом, що зовні нагадує інтерфейс dselect, але набагато більш зручний та функціональний.

У режимі командного рядка можна використовувати aptitude для виконання таких дій, як:

aptitude install - встановлення пакету

aptitude remove - видалення пакету та осиротілих залежностей

aptitude purge - видалення пакету, осиротілих залежностей
і конфігураційних файлів, що залишилися після них.

aptitude search - пошук пакету в кеші (список доступних пакетів)

aptitude update - оновлення кешу

aptitude safe-upgrade – оновлення пакетів

aptitude clean - видалення раніше завантажених пакетів

aptitude full-upgrade - оновлення пакетів,
навіть якщо ця дія вимагає видалення будь-яких пакетів

aptitude show - інформація про пакет

aptitude autoclean - видалення застарілих пакетів

aptitude hold - встановлення заборони оновлення пакета

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

Великодні яйця

Розробники утиліт APT виявилися хлопцями з дещо збоченим почуттям гумору. Чого тільки вартий результат наступної команди:

sudo apt-get moo
Ще більш дико виглядає те, що вбудували у свою програму творці aptitude. Спробуй:

sudo aptitude moo
Таке собі пасхальне яйце без великоднього яйця. Ну добре:

sudo aptitude -v moo
sudo aptitude -vv moo
sudo aptitude -vvv moo
sudo aptitude -vvvv moo
sudo aptitude -vvvvv moo

І фінальний акорд:

sudo aptitude -vvvvvv moo

Корисні команди apt-cache

apt-cache show пакет - детальна інформація про пакет
apt-cache showpkg пакет - загальна інформація про пакет
apt-cache depends пакет - список залежностей пакету
apt-cache rdepends пакет - список зворотних залежностей (кому потрібен зазначений пакет)

Словник APT

Пакет - програма, бібліотека, вихідні файли або будь-які інші файли, а також їх метадані, упаковані в особливим чином сформований архів.

Репозиторій – місце зберігання deb-пакетів.

Кеш доступних пакетів (або просто кеш) - файл, в якому кешується інформація про всі пакети, доступні з джерел, перелічених у /etc/apt/sources.list. Кеш оновлюється під час кожного дзвінка команди «apt-get update».

Індексний файл - головний файл репозиторію, що містить назву, версію, розмір, короткий і повний описта залежності для кожного пакета. Носить ім'я Packages.gz у разі бінарного репозиторію та Sources.gz для репозиторію вихідних текстів. Створюється за допомогою утиліт pkg-scanpackages та dpkg-scansources.

Apt keyring (дослівно: зв'язка ключів apt) – сховище ключів, що засвідчують справжність джерел пакетів (репозиторіїв).

Що всередині?

Відмінною рисою пакетів формату Deb є їхня простота. Будь-який Deb-пакет - це три файли: data.tar.gz, control.tar.gz та debian-binary, запаковані архіватором ar. Файл data.tar.gz - це вміст пакету (бінарники, man"и, документація і т.д.), control.tar.gz - метадані, в найпростішому варіанті два файли: control, що містить опис пакета, залежності, розмір і т.д. .д., і md5sums - контрольні суми всіх файлів пакета.Файл debian-binary містить версію формату Deb-пакета (наприклад, 2.0).Для розпакування пакета можна використовувати команду:

ar -xv пакет.deb && tar -xzf data.tar.gz

Advanced Packaging Tool – високорівневий інструмент для роботи з пакетами.

Робота з пакетами з допомогою dpkg.

dpkg є основною програмою в системі для роботи з пакетами Debian. За наявності пакетів.deb саме dpkg дозволяє їх встановити або проаналізувати вміст. Однак ця програма має лише часткове уявлення про світ Debian: вона знає, що встановлено в системі, а також все, що передано їй у командному рядку, але вона нічого не знає про інші доступні пакети. Тому вона завершиться з помилкою, якщо виявить незадоволену залежність. Такі інструменти, як apt, навпаки, автоматично створять список залежностей, щоб встановити все по можливості автоматично.

dpkg чи apt?

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

Встановлення пакетів

dpkg - це, перш за все, інструмент для встановлення вже доступних пакетів Debian (бо він нічого не завантажує). Для встановлення пакету використовується опція -i або --install.

Встановлення пакету за допомогою dpkg

Dpkg -i man-db_2.7.0.2-5_amd64.deb




Налаштовується пакет man-db (2.7.0.2-5).

Ми можемо бачити кожен етап, що виконується dpkg, тому ми знаємо, де могла статися якась помилка. Установку можна виконати в два етапи: спочатку розпакування, потім конфігурація. Завдяки цьому apt-get робить менше звернень до dpkg (кожен такий запит є дорогою операцією через необхідність завантаження пам'яті бази даних, включаючи весь список вже встановлених файлів).

Роздільна розпакування та налаштування

Dpkg --unpack man-db_2.7.0.2-5_amd64.deb

(Читання бази даних … на даний момент встановлено 86425 файлів та каталогів.)
Підготовка до розпакування man-db_2.7.0.2-5_amd64.deb …
Розпаковується man-db (2.7.0.2-5) на заміну (2.7.0.2-5).
Обробляються тригери для mime-support (3.58).

Dpkg --configure man-db

Налаштовується пакет man-db (2.7.0.2-5).
Застосовуючи database of manual pages ...

Іноді dpkg з тієї чи іншої причини не може встановити пакунок і повертає помилку; якщо користувач дає вказівку проігнорувати цю помилку, буде видано лише попередження; Існують різні опції --force-*. Команда dpkg --force-help або документація цієї команди видасть повний списоктаких опцій. Найчастішою помилкою, з якою вам доведеться рано чи пізно зіткнутися, є конфлікт файлів. Коли пакет містить файл, який вже інстальовано іншим пакетом, dpkg відмовиться встановлювати його, і ми отримаємо таке повідомлення:

Розпаковується пакет libgdm (з файлу.../libgdm_3.8.3-2_amd64.deb) …
dpkg: помилка при обробці параметра /var/cache/apt/archives/libgdm_3.8.3-2_amd64.deb (--unpack):
спроба перезаписати "/usr/bin/gdmflexiserver", який вже є в пакеті gdm3 3.4.1-9

У цьому випадку, якщо ви вважаєте, що заміна цього файлу не становить суттєвої небезпеки для стабільності вашої системи (часто це саме так), ви можете використовувати опцію --force-overwrite, яка повідомить dpkg про необхідність проігнорувати цю помилку та перезаписати файл.
Хоча є багато опцій --force-*, тільки --force-overwrite рекомендується для регулярного використання. Інші призначені тільки для виняткових випадків, і краще не чіпати їх, поки це можливо, щоб дотримуватись правил, закладених при створенні пакета. Не забувайте, що ці правила є гарантією цілісності та стабільності системи.

УВАГА! Ефективне використання --force-*

Якщо ви не обережні, використання опції --force-* може призвести до того, що команди APT перестануть працювати. Деякі з цих опцій дозволяють встановити пакет із незадоволеними залежностями або за наявності конфлікту. В результаті узгодженість системи з точки зору залежностей порушується, і команди APT відмовляться виконувати будь-які дії, крім тих, які повернуть систему в узгоджений стан (це зазвичай зводиться до встановлення відсутньої залежності або видалення проблемного пакета). Ось приклад повідомлення, що сигналізує про таку помилку, отримане після встановлення нової версії rdesktop з ігноруванням залежності від новітньої версії libc6:

apt full-upgrade

Можливо, для виправлення цих помилок ви захочете скористатися apt-get -f install.
Пакети, що мають незадоволені залежності:
rdesktop: Залежить від: libc6 (>= 2.5) але 2.3.6.ds1-13etch7 вже встановлено
E: Незадоволені залежності.

Спробуйте використати -f.
Безстрашні адміністратори, впевнені у правильності свого аналізу ситуації, можуть проігнорувати попередження про проблему залежностями чи конфлікт, використовуючи відповідну опцію --force-*. У цьому випадку, якщо потрібно продовжувати використовувати apt або aptitude, потрібно відредагувати /var/lib/dpkg/status та видалити/змінити залежність або конфлікт.
Редакування цього файлу - це брудний хак, і не варто вдаватися до нього, окрім як у крайніх випадках. Найчастіше найкращим рішенням є перескладання пакета, що викликає проблему. вихідного коду») або використання нової версії (ймовірно виправленої) з такого репозиторію як stable-backports (див. Розділ 6.1.2.4, «Стабільне ПЗ зі зворотною сумісністю»).

Видалення пакету

Запуск dpkg з опцією -r або --remove, за якою слідує ім'я пакета, призведе до видалення цього пакета. Це видалення, однак, не повне: всі конфігураційні файли, сценарії супроводжуючого, файли журналів (системні журнали) та інші дані користувача, що використовуються цим пакетом, залишаться. Таким шляхом легко позбутися програми, деінсталював її, але при цьому зберігається можливість встановити її ще раз з тією ж конфігурацією. Для повного видаленнявсього, пов'язаного з пакетом, використовується опція -P або --purge, що супроводжується іменем пакета.

Повне видалення пакету debian-cd

Dpkg -r debian-cd

(Читання бази даних … на даний момент встановлено 97747 файлів та каталогів.)

Dpkg -P debian-cd

(Читання бази даних … на даний момент встановлено 97401 файл та каталог.)
Видаляється пакет debian-cd (3.1.17) …
Очищаються файли налаштування пакета debian-cd (3.1.17) …

Запити до бази даних dpkg та аналіз файлів.deb

Для більшості опцій існують "довгі" (одне або кілька слів, перед якими ставиться подвійний дефіс) і "короткі" варіанти (одна літера, часто перша літера "довгого" варіанта, після одного дефісу). Ця угода настільки поширена, що вже є стандартом POSIX.
Перш ніж завершити цей розділ, розглянемо налаштування dpkg для запитів до внутрішньої бази даних для отримання різної інформації. При цьому спочатку будуть вказуватися довгі, а потім відповідні короткі опції (які, зрозуміло, приймають самі аргументи). Так, --listfiles пакет (або -L) виводить список файлів, встановлених пакетом; --search файл (або -S) шукає пакет, до якого належить цей файл; --status пакет (or -s) виводить інформацію про той чи інший встановлений пакет; --list (або -l) показує список пакетів, відомих системі, та їх статус; --contents file.deb (або -c) показує список файлів у цьому пакеті; --info file.deb (або -I) показує інформацію про пакет Debian.

Отримання інформації за допомогою dpkg

Dpkg -L base-passwd

/.
/usr
/usr/sbin
/usr/sbin/update-passwd
/usr/share
/usr/share/man
/usr/share/man/uk
/usr/share/man/uk/man8
/usr/share/man/uk/man8/update-passwd.8.gz
/usr/share/man/pl
/usr/share/man/pl/man8
/usr/share/man/pl/man8/update-passwd.8.gz
/usr/share/man/man8
/usr/share/man/man8/update-passwd.8.gz
/usr/share/man/fr
/usr/share/man/fr/man8
/usr/share/man/fr/man8/update-passwd.8.gz
/usr/share/doc-base
/usr/share/doc-base/users-and-groups
/usr/share/base-passwd
/usr/share/base-passwd/passwd.master
/usr/share/base-passwd/group.master
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/base-passwd
/usr/share/doc
/usr/share/doc/base-passwd
/usr/share/doc/base-passwd/copyright
/usr/share/doc/base-passwd/users-and-groups.html
/usr/share/doc/base-passwd/changelog.gz
/usr/share/doc/base-passwd/users-and-groups.txt.gz
/usr/share/doc/base-passwd/README

Dpkg -S /bin/date

coreutils: /bin/date

Dpkg -s coreutils

Package: coreutils
Essential: yes
Status: install ok installed
Priority: required
Section: utils
Installed-Size: 13822
Maintainer: Michael Stone
Architecture: amd64
Multi-Arch: foreign
Version: 8.13-3.5
Replaces: mktemp, timeout
Depends: dpkg (>= 1.15.4) | install-info
Pre-Depends: libacl1 (>= 2.2.51-8), libattr1 (>= 1:2.4.46-8), libc6 (>= 2.7), libselinux1 (>= 1.32)
Conflicts: timeout
Description: GNU core utilities
Цей пакет містить basic file, shell and text manipulation
utilities which є expected до exist on every operating system.
.
Спеціально, цей пакет включає:
arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp
csplit cut date dd df dir dircolors dirname du echo env expand expr
factor false flock fmt fold groups head hostid id install join link ln
logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc od
paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir runcon
sha*sum seq shred sleep sort split stat stty sum sync tac tail tee test
timeout touch tr true truncate tsort tty uname unexpand uniq unlink
users vdir wc who whoami yes
Homepage: http://gnu.org/software/coreutils

Dpkg -l "b*"

Бажаний=невідомо[u]/встановити[i]/видалити[r]/вичистити[p]/зафіксувати[h]
| Стан=не[n]/встановлений[i]/налаштований[c]/розпакований[U]/частково налаштований[F]/
частково встановлений[H]/trig-aWait/Trig-pend
|/ Помилка?=(ні)/потрібна переустановка[R] (верхній регістр
у полях стану та помилки вказує на ненормальну ситуацію)
||/ Ім'я Версія Архітектура Опис
+++-============-==============-==============-================================
un backupninja<нет>(опис недоступний)
un base<нет>(опис недоступний)
un base-config<нет>(опис недоступний)
ii base-files 7.1 amd64 Debian base system miscellaneous
ii base-passwd 3.5.26 amd64 Debian base system master passwo
[...]

Dpkg -c /var/cache/apt/archives/gnupg_1.4.12-7_amd64.deb

drwxr-xr-x root/root 2013-01-02 19:28 ./
drwxr-xr-x root/root 0 2013-01-02 19:28 ./usr/
drwxr-xr-x root/root 0 2013-01-02 19:28 ./usr/share/
drwxr-xr-x root/root 2013-01-02 19:28 ./usr/share/doc/
drwxr-xr-x root/root 2013-01-02 19:28 ./usr/share/doc/gnupg/
-rw-r--r-- root/root 3258 2012-01-20 10:51 ./usr/share/doc/gnupg/TODO
-rw-r--r-- root/root 308 2011-12-02 18:34 ./usr/share/doc/gnupg/FAQ
-rw-r--r-- root/root 3543 2012-02-20 18:41 ./usr/share/doc/gnupg/Upgrading_From_PGP.txt
-rw-r--r-- root/root 690 2012-02-20 18:41 ./usr/share/doc/gnupg/README.Debian
-rw-r--r-- root/root 1418 2012-02-20 18:41 ./usr/share/doc/gnupg/TODO.Debian
[...]

Dpkg -I /var/cache/apt/archives/gnupg_1.4.12-7_amd64.deb

новий пакет debian, версія 2.0.
розмір 1952176 байт (а): керуючий архів довжиною 3312 байт (а).
1449 байт(и), 30 рядків control
4521 байт(и), 65 рядків md5sums
479 байт(и), 13 рядків * postinst #!/bin/sh
473 байт(и), 13 рядків * preinst #!/bin/sh
Package: gnupg
Version: 1.4.12-7
Architecture: amd64
Maintainer: Debian GnuPG-Maintainers
Installed-Size: 4627
Depends: libbz2-1.0, libc6 (>= 2.4), libreadline6 (>= 6.0), libusb-0.1-4 (>= 2:0.1.12), zlib1g (>= 1:1.1.4), dpkg (>= 1.15.4) | install-info, gpgv
Recommends: libldap-2.4-2 (>= 2.4.7), gnupg-curl
Suggests: gnupg-doc, xloadimage | imagemagick | eog, libpcsclite1
Section: utils
Priority: important
Multi-Arch: foreign
Homepage: http://www.gnupg.org
Description: GNU privacy guard - безкоштовно PGP replacement
GnuPG is GNU's tool для надійної комунікації та data storage.
Вона може бути використана для відображення даних і створення цифрових signatures.
It includes an advanced key management facility and is compliant
with proposed OpenPGP Internet standard as described в RFC 4880.
[...]

ПОГЛУБЛЮЄМОСЯ: Порівняння версій

Оскільки dpkg є програмою для роботи з пакетами Debian, вона також містить еталонну реалізацію логіки порівняння номерів версій. Тому вона має опцію --compare-versions, використовувану зовнішніми програмами (переважно - сценаріями налаштування, запускаемыми самої dpkg). Для цієї опції потрібні три параметри: номер версії, оператор порівняння та другий номер версії. Допустимі оператори порівняння - lt (суворо менше), le (менше або дорівнює), eq (рівна), ne (не дорівнює), ge (більше або дорівнює), і gt (строго більше). Якщо порівняння вірне, dpkg повертає 0 (успіх), якщо ні, то ненульове значення (ознака помилки).

$ dpkg --compare-versions 1.2-3 gt 1.1-4
$echo$?
0
$ dpkg --compare-versions 1.2-3 lt 1.1-4
$echo$?
1
$ dpkg --compare-versions 2.6.0pre3-1 lt 2.6.0-1
$echo$?
1

Зверніть увагу на несподіваний збій останнього порівняння: для dpkg літери pre, що позначають, як правило, попередній випуск, не має жодного особливого значення, і літерні символи порівнюються так само, як і числа (a< b < c ...), в алфавитном порядке. Именно поэтому dpkg считает, что «0pre3» больше, чем «0». При необходимости указать в номере версии, что она относится к предварительному выпуску, используется символ тильды «~»:

$ dpkg --compare-versions 2.6.0~pre3-1 lt 2.6.0-1
$echo$?
0

Файл журналу dpkg

dpkg зберігає журнал всіх своїх дій у /var/log/dpkg.log. Цей журнал є надзвичайно докладним: у ньому задокументовані всі етапи обробки пакетів dpkg. Цей журнал допомагає не тільки відстежити поведінку dpkg, але й зберегти історію змін у системі: можна знайти точний момент, коли кожен пакет було встановлено або оновлено, і ця інформація може бути надзвичайно корисною при з'ясуванні причин зміни поведінки системи в цілому. Крім того, ведеться запис інформації про всі версії, її легко звірити з changelog.Debian.gz з відповідного пакета або зі звітами про помилки онлайн.

Підтримка мультиархітектури

Усі пакети Debian мають поле Architecture у своїх метаданих. Це поле може містити або значення «all» (для пакетів, які не залежать від архітектури), або назва конкретної архітектури, для якої пакет призначений (наприклад, «amd64», «armhf», …). В останньому випадку dpkg за промовчанням допустить інсталяцію пакета лише в тому випадку, якщо його архітектура відповідає архітектурі системи, що повертається dpkg --print-architecture.
Це обмеження гарантує, що в системі не буде двійкових файлів, скомпілованих для неправильної архітектури. Все було б чудово, але на (деяких) комп'ютерах можна запускати двійкові файли для різних архітектур, нативно (наприклад, на системах «amd64» працюють двійкові файли для «i386») або через емулятори.

Увімкнення мультиархітектури

Підтримка мультиархітектури dpkg дозволяє визначати «чужорідні архітектури», які можуть бути встановлені в системі. Це легко зробити за допомогою dpkg --add-architecture, як показано нижче. Існує і відповідна команда dpkg --remove-architecture для відключення підтримки чужорідної архітектури, але її можна використовувати тільки в тому випадку, коли в системі не залишилося жодного пакету цієї архітектури.

dpkg --print-architecture
amd64

dpkg: error processing archive gcc-4.9-base_4.9.1-19_armhf.deb (--install):
package architecture (armhf) does no match system (amd64)
Errors були відзначені при процесуванні:
gcc-4.9-base_4.9.1-19_armhf.deb

dpkg --add-architecture armhf
dpkg --add-architecture armel
dpkg --print-foreign-architectures
armhf
armel

Dpkg -i gcc-4.9-base_4.9.1-19_armhf.deb

Selecting спочатку невибраний пакет gcc-4.9-base:armhf.
(Reading database ... 86425 files and directories currently installed.)
Preparing to unpack gcc-4.9-base_4.9.1-19_armhf.deb ...
Unpacking gcc-4.9-base:armhf (4.9.1-19) ...
Setting up gcc-4.9-base:armhf (4.9.1-19) ...

Dpkg --remove-architecture armhf

dpkg: error: cannot remove architecture "armhf" currently in use by the database

Dpkg --remove-architecture armel
dpkg --print-foreign-architectures
Підтримка мультиархітектури в APT

APT автоматично визначить, якщо dpkg буде налаштований на підтримку чужорідних архітектур, і розпочне завантаження відповідних файлів Packages у процесі оновлення.
Чужорідні пакети можна встановити за допомогою apt install пакет:архітектура.

Використання власних двійкових файлів i386 у системах amd64

Є кілька випадків, коли може стати в нагоді мультиархітектура, але найпоширенішим з них є забезпечення можливості запуску 32-бітних файлів (i386) на 64-бітових системах (amd64), зокрема тому що деякі популярні власницькі програми (на зразок Skype) доступні тільки у вигляді 32-розрядні версії.

Зміни, пов'язані з мультиархітектурою

Щоб зробити мультиархітектурну підтримку по-справжньому корисною, бібліотеки потрібно було перепакувати, перемістивши їх у каталог, що відповідає архітектурі, щоб можна було встановити кілька копій (для різних архітектур) одночасно. Такі оновлені пакети містять заголовок "Multi-Arch: same", що вказує на систему управління пакетами, що різні архітектури пакетів можна встановлювати спільно (і що ці пакети можуть задовольняти залежності тільки пакетів тієї ж архітектури). Оскільки підтримка мультиархітектури була додана лише у Debian Wheezy, ще не всі бібліотеки перетворені.

Dpkg -s gcc-4.9-base

dpkg-query: помилка: --status вимагає коректне ім'я пакета, але "gcc-4.9-base" таким не є: неоднозначне ім'я пакета "gcc-4.9-base" з більш ніж одним встановленим екземпляром

Використовуйте --help для виведення довідки за запитами пакетів.

Dpkg -s gcc-4.9-base:amd64 gcc-4.9-base:armhf | grep ^Multi

Multi-Arch: same
Multi-Arch: same

Dpkg -L libgcc1:amd64 | grep .so

/lib/x86_64-linux-gnu/libgcc_s.so.1

Dpkg -S /usr/share/doc/gcc-4.9-base/copyright

gcc-4.9-base:amd64, gcc-4.9-base:armhf: /usr/share/doc/gcc-4.9-base/copyright

Варто зазначити, що для пакетів із полем Multi-Arch: same слід вказувати імена з назвою архітектури, щоб їх можна було однозначно ідентифікувати. Вони також можуть мати спільні файлиз іншими екземплярами того самого пакета; dpkg у разі гарантує, що це пакети мають біт-в-біт ідентичні спільні файли. Усі екземпляри пакета повинні бути однієї і тієї ж версії, так що і оновлюватися вони повинні разом.
Підтримка мультиархітектури також привносить деякі цікаві особливості механізм обробки залежностей. Для задоволення залежності потрібно або пакет, позначений «Multi-Arch: foreign», або пакет з такою ж архітектурою (при вирішенні залежності архітектурно-незалежні пакети вважаються такими, що мають ту ж архітектуру, що і система). Залежність може також бути ослаблена, щоб дозволити пакету будь-якої архітектури задовольняти її, за допомогою синтаксису пакет: any, але чужорідні пакети можуть задовольняти таку залежність, тільки якщо вони позначені «Multi-Arch: allowed».

Використані матеріали.

Іноді виникають ситуації, коли потрібно дізнатися, які пакети встановлені в системі. Це може знадобитися, якщо ви хочете зробити резервну копію встановлених пакетів, перевірити їх цілісність, перенести всі пакети в іншу систему і вирішити багато інших завдань. У Debian можна використовувати кілька методів.

У сьогоднішній статті ми розглянемо як переглянути список встановлених пакетів Debian за допомогою терміналу, в інтерфейсі curses, а також графічний інтерфейс. Такі списки можна використовувати не тільки для резервного копіювання, але й для того, щоб просто перебрати та видалити непотрібні програми, тим самим очистивши систему від сміття.

Найперший спосіб подивитися встановлені пакети Debian, це утиліта dpkg. Вона може застосовуватися не тільки в Debian, але й у всіх, заснованих на ньому дистрибутивах:

dpkg --get-selections | grep -v deinstall

dpkg --get-selections | grep -v deinstall > mylist.txt

Можна також прибрати всю зайву інформацію та зберегти лише імена пакетів:

dpkg-l | grep ^ii | awk "(print $2)" > mylist.txt

Наступний спосіб вирішення цього завдання - використання утиліти dpkg-query. Вона схожа на попередній варіант, але трохи простіша. Така команда відобразить усі встановлені пакети разом із інформацією про них:

Тут також можна вибрати тільки імена пакетів за допомогою опції -f:

dpkg-query -f "$(binary:Package)\n" -W

Третій метод - це утиліта apt, якою ми звикли користуватися для встановлення додатків, вона має команду list:

apt list --installed

apt list --installed | grep python

Ми більш детально розглядали apt у статті. Ще одна цікава можливість apt – подивитися які пакети були встановлені вручну. Для цього наберіть:

apt-mark showmanual

І ще один варіант з використанням apt:

apt-cache pkgnames

Утиліта для керування пакетами aptitude також дозволяє вивести список встановлених пакетів:

aptitude search "~i!~M"

Також aptitude може працювати в режимі curses, що дуже зручно:

Останній спосіб переглянути список встановлених пакетів - це файл /var/lib/apt/extended_states. Це база даних, яка містить встановлені програми debian у такому форматі:

Package: имя_пакета
Architecture: архітектура
Auto-Installed: 0_або_1

cat /var/lib/apt/extended_states

Відновлення списку встановлених пакетів

Багато користувачів створюють список пакетів не просто, щоб подивитися, а для майбутнього відновлення. Якщо ви робили список за допомогою dpkg, його можна дуже просто відновити в системі за допомогою аналогічної команди:

sudo dpkg --clear-selections
$ sudo dpkg --set-selections< mylist.txt

Все дуже просто. Щоб встановити пакети після додавання їх до списку, використовуйте команду:

sudo apt dselect-upgrade

Якщо ж у вас є список імен пакетів, то відновлювати його потрібно трохи по-іншому. Просто передайте всі ці імена команді apt для встановлення:

xargs< mylist.txt apt install -y

Висновки

У цій статті ми розглянули, як переглянути список встановлених пакетів Debian. Це може бути дуже корисним і виконується досить просто. Сподіваюся, що ця інформація була корисною для вас.

Довгий час мене гладив незнання того, як зробити деякі елементарні речі в дебіановських менеджерах пакетів, але, як часто буває, запитати поряд було не в кого, а до написання будь-куди руки не доходили. І ось нарешті питання визріли і я написав своє запитання у дебіанівську розсилку. Природно виявилося, що пропустив щось очевидне, але й дізнався багато неочевидних корисностей, тому вирішив накидати шпаргалку, може кому знадобиться.

Коротка довідка Debian адміністратора

Основне та загальновідоме
Отримання інформації про нові/оновлені пакети
sudo aptitude update
Оновлення
sudo aptitude safe-upgrade
Пошук пакету за іменами пакетів
aptitude search key_word
Пошук пакету за точною назвою
aptitude search "^name$"
Пошук за описом
aptitude search "?description("key_word")"
Інформація про пакет
aptitude show package_name
Встановлення
sudo aptitude install package_name
Вилучення
sudo aptitude remove package_name
Повне видалення (разом із конфігами)
sudo aptitude purge package_name
Очистити кеш завантажених пакетів (звільнити місце)
aptitude autoclean # видаляться лише пакети неактуальних версій aptitude clean # очиститься весь кеш
Встановлення окремо завантаженого/створеного пакета (для створення пакету зі сторонніх вихідних джерел потрібно використовувати утиліту checkinstall з прапором -D)
sudo dpkg -i /path/to/package.deb
Для отримання додаткової інформації
man aptitude sudo aptitude install aptitude-doc-en
і дивимося документацію (/usr/share/doc/aptitude/html/en/index.html), кому швидку довідку за пошуковими шаблонами, тому сюди - /usr/share/doc/aptitude/html/en/ch02s04.html. Якщо ліньки ставити доку, то в мережі вона є .
Вступна на Debian Wiki: wiki.debian.org/Aptitude
А тепер те, що не очевидно чи вимагає повного прочитання документації
1. Як після update подивитися, які пакети будуть оновлені?
aptitude search ?upgradable
також можна юзати (якщо поставити)
sudo daptup
але після його встановлення точно буде поводитися і звичайний update

2. Як дізнатися, що змінилося в пакетах, які будуть оновлені?
Можна пробувати
sudo aptitude changelog package_name
для кожного пакета.
Але краще поставити apt-listchanges, тоді перед будь-якою установкою оновлень буде показаний список змін, за замовчуванням налаштування не дуже зручні, тому краще переналаштувати під себе, наприклад, вибрати формат виводу (поки використовую текст, при великих оновленнях напевно pager краще), не надсилати листів, питати підтвердження, виводити всю інформацію. Для цього потрібно запустити
sudo dpkg-reconfigure apt-listchanges
3. Що робити, якщо оновлення щось поламало і потрібно відкотитися?
Відкату немає, можна спробувати знайти попередню версію пакету
sudo aptitude version package_name
та встановити її
sudo aptitude install package_name=version
4. Як знайти всі пакети, встановлені вручну?
є варіант команди (aptitude search "~i!~M"), але на жаль він не дає бажаного результату, тому питання залишається відкритим, є купа способів заснованих на аналізі логів
/var/log/aptitude (+ ротовані шматки) /var/log/installer/initial-status.gz /var/log/dpkg.log (+ ротовані шматки)
але простого і готового рішення немає, так інформація теоретично може бути втрачена при ротаціях, потрібно конфігурувати

5. Як переглянути список файлів у пакеті?
якщо пакет встановлений
dpkg -L package_name
для будь-яких пакетів поставити apt-file та
apt-file list package_name
6. Як подивитися, якому пакету належить файл?
dpkg -S file_name
7. Як видалити всі пакети, де є key у назві пакета?
sudo aptitude purge ~ikey
8. Як видалити конфіги, що залишилися, від видалених пакетів?
sudo aptitude purge ~c
9. Як знайти пакет пакет, в якому міститься файл lib.so:
apt-file search lib.so
10. Як конвертувати rpm пакету deb?
alien --to-deb /path/to/file.rpm
11. Як знайти перелік встановлених ядер?
dpkg --list linux-* | grep ii
12. Як встановити пакет testing або experimental?
На цю тему потрібно писати окремо (наприклад так), але якщо коротко, команди для цього є
sudo aptitude -t testing package_name
або
sudo aptitude package_name/testing
13. Як видалити метапакет, але залишити одну із залежностей?
доведеться почитати документацію про ключ unmarkauto або глянути сюди.

14. Як дізнатися що потрапило в файлову системуповз систему управління пакетами?
Є утиліта cruft, хоча питання інтерпретації результатів (файлу report) поки що відкрите
sudo cruft -d / -r report --ignore /home --ignore /var --ignore /tmp
15. Які є додаткові репозиторії?
Debian - wiki.debian.org/UnofficialRepositories
Ubuntu - безліч всяких



Завантаження...
Top