Apt install f що робить. Система керування пакетами APT

Іноді виникають ситуації, коли потрібно дізнатися, які пакети встановлені в системі. Це може знадобитися якщо ви захочете зробити резервну копіювстановлених пакетів, перевірити їхню цілісність, перенести всі пакети в іншу систему і для вирішення багатьох інших завдань. У 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. Це може бути дуже корисним і виконується досить просто. Сподіваюся, що ця інформація була корисною для вас.

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

Загальна структура команди apt-get

apt-get [опції] команда пакет1 пакет2 … пакетN

Наведені нижче опції можуть бути корисними при роботі з apt-get:

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

Виконується дана дія за допомогою команди:

Apt-get update

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

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

Для того, щоб встановити пакет, використовується команда:

Apt-get install packagename

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

[email protected]:~# apt-get install aee Reading package lists... Done Building dependency tree Reading state infor... aee libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 0 upgraded, 6 включено нещодавно, 0 до remove and 44 not upgraded. Необхідно отримати 181 KB/1297 KB архівів. Після цієї операції, 4366 kB додаткового дискового простору буде використано. Do you want to continue?

У разі відсутності залежностей процес установки відбудеться автоматично без виведення будь-яких питань.

Також, в момент введення команди для встановлення пакетів можна вказати назви пакетів, які потрібно видалити. Для цього в кінці імені пакета, що видаляється, необхідно додати дефіс. Приклад такого способу встановлення/видалення наведено нижче:

[email protected]:~# apt-get install aee htop- Reading package lists... Done Building dependingy tree Reading state information... Done : htop Докладніше Нові пакети будуть налаштовані: aee libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 0 upgraded, 6 newly installed, 1 to remove and 43 not upgraded. Необхідно отримати 1297 kB of archives. Після цієї операції, 4157 kB додаткового дискового простору буде використано. Do you want to continue?

Як бачимо з прикладу, пакет aee підготовлений для установки, а пакет htop – для видалення.

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

При необхідності переустановки пакета (пошкодження файлів, поява більше нової версії), її можна виконати за допомогою наступної команди:

Apt-get --reinstall install packagename

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

Є два варіанти видалення пакетів:

  • Видалення пакета, за винятком конфігураційних файлів (якщо є).

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

Apt-get remove packagename

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

  • Повне видалення пакету

На відміну від першого способу, будуть видалені всі файли, які мають відношення до пакета, що видаляється, включаючи і конфігураційні. У цьому випадку використовується команда:

Apt-get --purge remove packagename

Пакети, які позначені для повного видалення, мають наприкінці своєї назви символ "*"

  • Видалення та встановлення в одній команді

Крім цього, при видаленні можна відзначити список пакетів для установки. Для цього необхідно вказати “ + ” наприкінці назви пакет. Приклад такої команди наведено нижче:

[email protected]:~# apt-get --purge remove aee screen+ Reading package lists... 1 Building dependency tree Reading state information... Done The following Packages will be REMOVED: aee 1 наново налаштований, 1 до remove and 43 не upgraded. Потрібно отримати 624 kB архівів. Після цієї операції, 975 кБ додаткового дискового простору буде використано. Do you want to continue?

Оновлення пакетів

Apt-get update

Це дозволить актуалізувати інформацію про доступні пакети та їх версії. Після виконання цієї команди можна приступити безпосередньо до оновлення встановлених пакетів у системі. Робиться це командою:

Apt-get-u upgrade

Вказаний параметр -uвикористовується для отримання повного списку пакетів, які будуть підготовлені для оновлення.

Оновлення версії дистрибутива

У разі появи нової версії встановленого у вас ОС, можна виконати «апгрейд» повністю всієї системи за допомогою команди.

Утиліта 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

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

Advanced Packaging Tool– набір утиліт для керування програмними пакетами в операційних системах на основі Debian. APT надає дружню надбудову над DPKG і дозволяє:

    Встановлювати, видаляти та оновлювати пакети

    Вирішувати залежності

    Шукати пакети за заданими критеріями

    Переглядати детальну інформацію про пакет

    Маніпулювати ключами від репозиторіїв

APT є однією з базових програмта включена до складу Ubuntu.

Налаштування

Усі файли налаштувань APT зберігаються у директорії /etc/apt.

apt.conf

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

man apt.conf

apt.conf.d

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

auth.conf

sources.list

sources.list.d

Директорія з файлами репозиторій за призначенням аналогічних sources.list. Кожен репозиторій описується окремому файлі.

Використання

В APT входить кілька утиліт, які виконують окремі завдання.

Починаючи з версії Ubuntu 16.04 доступна нова утиліта apt , яка містить команди, що найчастіше використовуються, з apt-get і apt-cache . Утиліта apt призначена для користувачів, тоді як apt-get можна розглядати як інструмент нижчого рівня.

apt-get

apt-getце утиліта керування пакетами. apt-get вимагає прав суперкористувача для своєї роботи.

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

    Update - Оновити інформацію про пакети, що містяться у репозиторіях.

    Install foo - Встановити пакет foo. Завантаження, встановлення та налаштування відбуваються автоматично. Якщо для налаштування пакета foo потрібна додаткова інформація, буде відображено запит до користувача.

    Upgrade – Оновлення пакетів, для яких у репозиторії доступні нові версії.

    Dist-upgrade - Оновлення пакетів, які потребують дозволу залежностей (встановлення додаткових або видалення пакетів, що конфліктують).

    Remove foo - Видалення пакета foo із системи.

    Purge foo - Видалення пакета foo та очищення системи від конфігураційних файлів. Файли налаштувань у домашніх каталогах користувачів видалені не будуть.

    Autoremove - Видалення пакета, який більше не потрібний у системі. Використовується для чищення системи від непотрібних пакетів. Факт, що пакет більше не потрібен, визначається так: якщо пакет був встановлений не сам по собі, а як залежність для іншого пакета, який згодом був видалений, значить цей пакет теж не потрібен у системі.

    Source foo - Отримання вихідних текстівпакет foo.

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

Коротка довідка 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 - безліч всяких

mob_info