Aptitude vs. apt-get: Який рекомендований (він же «правильний») інструмент використовувати?


94

Деякий час тому я прочитав, що aptitudeце кращий інструмент для установки на системи на базі Debian. Але коли ви шукаєте навколо того, як адмініструвати систему на базі Debian, то здатність рідко згадується. Більшість людей, здається, віддають перевагу apt-get- і це навіть справедливо для вікі-сторінок Debian!

Таким чином, мені цікаво, чи я щось пропустив. Який правильний інструмент використовувати?


Цікаво, що Ubuntu більше не встановлюється aptitudeза замовчуванням.
Механічний равлик

2
Єдиною найважливішою для мене різницею є те, що після ретельного ознайомлення з документами я не можу знайти спосіб отримати джерело пакету через здатність. apt-get source package-nameзроблять це, але я не бачив еквіваленту придатності
EricR

2
Одна справа, що aptitude search package-nameпрацює на здібності. Інша aptitude why package-nameтакож корисна, але не в apt-get. Я також зауважую, що командний рядок aptitudeдещо очищено порівняно з apt-get. Але, як ви помітили, є, aptitude build-dep package-nameале немає aptitude source package-name.
Андерс

Відповіді:


73

aptitudeі apt-getпрацюйте так само для багатьох завдань, але для найскладніших випадків, таких як оновлення дистрибуції ( apt-get dist-upgradeпорівняно aptitude full-upgrade), вони мають різні правила, і правила працездатності майже завжди кращі на практиці там, де вони не згодні.

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

Нещодавно я потрапив в точку , де я зазвичай іду aptз , iа не -коли я друкую.

Постскрипт Зауважте, що правила, які використовуються apt-getта aptitudeє рухомими цілями - як зазначає Хуберт у коментарях, зараз використовується шлях оновлення, рекомендований від Дебіана Ленні apt-get, а не aptitude. Це відображає той факт, що apt-getслідкує за меншим станом щодо поточного пакету aptitude, і тому не потрібно турбуватися про те, що стан APT не є "чистим", а тому, що apt-getправила розумніші, ніж раніше. Я все ще використовую і рекомендую aptitudeбільше apt-get, але це більш нюансована рекомендація


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

20
apt-getмає перевагу в тому, що є більш ефективною пам'яттю. Це навряд чи буде помітно для більшості користувачів; Я не дуже знав про це, поки не спробував оновити пакети на повній установці Debian з 32 Мб оперативної пам’яті. aptitudeзакінчилися обмолоту в свопі приблизно годину за пробіг; apt-get був значно швидшим.
інтуїтивно,

4
В офіційній документації на видавлювання Debian чітко зазначено, що не використовувати aptitudeдля оновлення від Ленні, навіть якщо вона підтримувалася попередніми оновленнями, тому я не думаю, що це лише інерція ...
Hubert Kario

@HubertKario - Так, справді. Я оновив свою відповідь.
Чарльз Стюарт

Я можу лише сказати, що apt-getмайже завжди видає помилки (досвід із сервера Ubuntu 12.10, 14.04), хоча aptitudeнасправді може щось робити. Я до сих пір не розумію, як досі існує придатність.
Totty.js

20

aptitudeзручно показувати, які програми в пошуку ви вже встановили в системі (за допомогою grep):

aptitude search flash | grep ^i

Насправді aptitudeпошук набагато потужніший, ніж те, що ви отримуєте через протокол grep, оскільки він підтримує контекстний пошук:

наприклад, це знайде всі пакунки із "flash" у встановленому імені пакета:

aptitude search '~iflash'

Еквівалентна "довга форма" "короткої форми" ~i:

aptitude search '?installed(flash)'

Зауважте, що шаблони пошуку за замовчуванням є вільними (не закодовані). Щоб закріпити їх, потрібно використовувати якірні схеми ' ^' (початок рядка) та / або ' $' (кінець рядка).

Щоб знайти всі пакунки, імена яких починаються з 'ttf' або 'font':

aptitude search '(^ttf|^font)'

(Примітка. Це помилка для помилки aptitude, оскільки правильний регулярний вираз '^(ttf|font)'не працює належним чином - він знаходить пакунки, імена яких починаються з 'ttf' або містять 'шрифт'.)

Інші вишукані aptitudeособливості:

Покажіть всі пакети з "прошивкою" на їх ім'я, що ТАКОЖ у своєму описі "бездротовий":

aptitude search 'firmware ~dwireless'

або довга форма:

aptitude search '?and(?name(firmware),?description(wireless))'

(Примітка: у короткій формі аргументи з обмеженим пробілом розміщуються в лапках; якщо вони передаються як окремі аргументи командного рядка argv [], вони ORE.)

p   atmel-firmware       - Firmware for Atmel at76c50x wireless networking chips.
p   firmware-atheros     - Binary firmware for Atheros wireless cards
...
p   libertas-firmware    - Firmware for Marvell's libertas wireless chip series
p   zd1211-firmware      - Firmware images for the zd1211rw wireless driver

~U показує всі пакунки, які можна оновити з їх поточних версій з новими версіями:

# aptitude update ; aptitude versions '~U'
Package virtualbox-4.1:            
i   4.1.18-78361~Debian~squeeze                       100
p   4.1.20-80170~Debian~squeeze     <NULL>            500

Показати пакети, які рекомендують 'gcc-multilib'

$ aptitude search '~DRecommends:gcc-multilib'
i   libc6-dev-i386   - Embedded GNU C Library: 32-bit development libraries for AMD64

Поясніть, чому може знадобитися встановлення «запобіжників»

$ aptitude why fuse-utils
i   xorg           Depends    xterm | x-terminal-emulator
pi  gnome-terminal Provides   x-terminal-emulator
pi  gnome-terminal Recommends gvfs
pi  gvfs           Depends    libgdu0 (>= 2.29.90)
pi  libgdu0        Depends    udisks (< 1.1.0)
pi  udisks         Recommends ntfsprogs
pi  ntfsprogs      Depends    fuse-utils (> 2.5.0)

(Цей приклад показує деяку шаленість, що виникає за замовчуванням з моменту встановлення (?) Встановлення всіх пакетів "Рекомендує". Встановлення gnome-terminal закінчується установкою ntfsprogs та fuse-utils, наприклад! Я думаю, що більшість людей просто хочуть перспективу терміналу і не вбудована інтеграція NTFS, яка є необов'язковою, якщо вони не вказали її.)

Знайдіть усі пакети, що надають послугу "поштовий транспорт-агент":

$ aptitude search '?provides(mail-transport-agent)'
p   citadel-mta          - complete and feature-rich groupware server (mail transport agent)
...
p   nullmailer           - simple relay-only mail transport agent
p   postfix              - High-performance mail transport agent
i   sendmail-bin         - powerful, efficient, and scalable Mail Transport Agent
p   ssmtp                - extremely simple MTA to get mail off the system to a mail hub
p   xmail                - advanced, fast and reliable ESMTP/POP3 mail server

Показати всі встановлені назви пакетів, які не встановлюються залежно від Essential або Автоматично:

$ aptitude search '~i!(~E|~M)' -F '%p'

На жаль, цей матеріал є доволі погано задокументованим і важко знайти, але ось найкраща довідка (від підтримуючого "працездатності").


4
Функції пошуку доступні apt-getчерез:apt-cache search NAME
EricR

@EricR правда, але я не знайшов таких можливостей пошуку
niceman

4

Відповідно до поширених запитань Debian GNU / Linux щодо управління пакетами , здатність складніша, ніж apt-get, і залежить від менш складних інструментів управління пакетами apt-get і dpkg.

Тому для більш простих потреб можна використовувати більш прості інструменти, тоді як для більш складних потреб можна розраховувати на більш складний інструмент (апітія).

Цитується з питань поширених питань Debian: "здатність забезпечує функціональність dselect і apt-get, а також багато додаткових функцій, які не зустрічаються в жодній програмі."


3

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

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


Цитування потрібно, але це було б переконливою різницею.
Kzqai


Насправді apt-getце теж добре, з apt-get autoremove <package-name>. Обидва apt-getі aptitudeвідзначають автоматично встановлені пакети
Legionair

Але aptitudeчистіть автоматичні пакети щоразу, коли це використовується. Поки apt-getпотрібно починати це явне.
Андерс

2

Немає правильного інструменту, ви можете змішувати та співставляти обидва, залежно від того, який вам зручніший для завдання. здатність - це чудовий інструмент для тестування / sid користувачів, але він, як правило, менш надійний для дист-модернізації від одного стабільного до іншого. Дивіться мою статтю apt-get, здатність,… підберіть потрібний менеджер пакунків для вас .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.