Яка різниця між apt-get і здатністю?


56

Я не розумію, чому для встановлення програмного забезпечення є дві різні програми з мінімальною установкою. Хіба вони не роблять те саме? Чи є велика різниця? Я читав усюди, щоб використовувати здатність над apt-get, але я досі не знаю різниці

Відповіді:


48

aptitude - це обгортка для dpkg так само, як apt-get / apt-cache, але це єдиний інструмент для пошуку / встановлення / видалення / запитів. Кілька прикладів, які може не надати:

$ aptitude why libc6
i   w64codecs Depends libc6 (>= 2.3.2)
$ aptitude why-not libc6
Unable to find a reason to remove libc6.

$ aptitude show libc6
Package: libc6
State: installed
Automatically installed: no
Version: 2.9-4ubuntu6
Priority: required
Section: libs
Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
Uncompressed Size: 12.1M
Depends: libgcc1, findutils (>= 4.4.0-2ubuntu2)
Suggests: locales, glibc-doc
Conflicts: libterm-readline-gnu-perl (< 1.15-2), 
tzdata (< 2007k-1), tzdata-etch, nscd (< 2.9)
Replaces: belocs-locales-bin
Provides: glibc-2.9-1
Description: GNU C Library: Shared libraries
 Contains the standard libraries that are used by nearly all programs 
 on the system. This package includes shared versions of the standard 
 C library and the standard math library, as well as many others.

10
не кажучи вже про: $ aptitude changelog bash
pgs

Інші хитрощі, які aptitudeзнають, що навіть новітні aptне можуть зробити: aptitude search '~i linux'пошук встановлених пакетів з linuxназвою чи описом; aptitude search '~o'перелічує застарілі пакети (встановлені пакети, які більше не надаються жодним сховищем); aptitude search '!~M ~i'показує пакети, які не позначені автоматично встановленими; aptitude search '~i lib.*-dev'шоу встановлені бібліотеки розвитку , і ви можете замінити searchз markautoабо unmarkautoпозначити ці пакети , як автоматично або вручну встановити.
Мікко Ранталайнен

44
mikeage@linode ~$ aptitude -h | tail -n 1
              This aptitude does not have Super Cow Powers.
mikeage@linode ~$ apt-get -h | tail -n 1
                   This APT has Super Cow Powers.
mikeage@linode ~$ aptitude moo
    There are no Easter Eggs in this program.
mikeage@linode ~$ apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~
...."Have you mooed today?"...
mikeage@linode ~$ aptitude -v moo
There really are no Easter Eggs in this program.
mikeage@linode ~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
mikeage@linode ~$ aptitude -vvv moo
Stop it!
mikeage@linode ~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
mikeage@linode ~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
mikeage@linode ~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course. 

19

Офіційним інструментом, який зараз використовується в інсталяторі Debian та рекомендований у примітках до випуску, є aptitude.

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

Але здатність базується на бібліотеці libapt (це не пряма обгортка dpkg), і як така вона залежить від aptпакету, тому ви не можете встановити здатність без apt-get (що також є в apt-пакеті).

$ dpkg --status aptitude| grep Depends
Depends: libapt-pkg-libc6.9-6-4.7, [...]
$ dpkg --status apt|grep Provides
Provides: libapt-pkg-libc6.9-6-4.7
$ dpkg --search /usr/lib/libapt-pkg-libc6.9-6.so.4.7 /usr/bin/apt-get
apt: /usr/lib/libapt-pkg-libc6.9-6.so.4.7
apt: /usr/bin/apt-get

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

Ви також можете прочитати мою статтю apt-get, здатність,… вибрати правильний менеджер пакунків для вас


7

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

aptitudeшвидко стане незамінним інструментом після використання різних сховищ з різними версіями пакета. Уявіть, що ви працюєте з backports.org або неофіційними сховищами на зразок debian-multimedia.org . Потім aptitudeвідобразиться (внизу сторінки деталей певного пакета) номер доступної версії та дозволить вибрати її.

Якщо ви потрапите в ситуацію, коли програми конфліктують через таке використання неофіційних сховищ, у верхній частині ви побачите дисплей "Зламано: ..." . Ви можете ввести l ~ b (ліміт / прапор / зламаний) і просто отримати список пакетів, які конфліктують між собою. Значно полегшує вирішення конфлікту вручну.

Крім того, ви можете використовувати " l" обмеження списку пакунків. Уявіть, що ви шукаєте пакунки, які починаються з " openoffice ", потім натисніть " l" і введіть " ^openoffice" (це регулярний вираз), і ви побачите саме ці пакунки. Виберіть у меню "плоский список пакетів", і ви швидко досягнете своєї мети.

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

aptitude install ... (install or upgrade a package)
aptitude remove ... (remove the binary portions of a package but preserve your /etc configuration)
aptitude purge ... (remove the package completely including your configuration)

2
Насправді, як і у Ленні, apt-get також відслідковує пакети, встановлені лише як залежність від того, про що ви явно просили. Я використовую здатність сам, але apt-get autoremoveтепер видаляє пакунки, які були встановлені як залежності пакету, який з тих пір був видалений.
Телемах

Nowdays ви можете також використовувати просто , aptі це може зробити суміш матеріал , який apt-getі apt-cacheвикористовується , щоб зробити. Наприклад, apt search fooбуде вказано пакунки, що містять fooім’я чи опис. apt install fooвстановить пакет під назвою fooякщо такий є і apt policy fooперерахує встановлену версію і всі доступні версії пакета foo.
Мікко Ранталайнен

Все aptitudeще можна зробити більше, aptале звичайна aptчасто набагато швидша.
Мікко Ранталайнен

5

Окрім надання гарного консольного інтерфейсу, коли ви aptitudeне працюєте з аргументами, він поєднує різні apt-*команди (та dselect) в одну утиліту.

Для пошуку пакета та встановлення його за допомогою apt-get:

apt-cache search somepkg
apt-get install somepkg

..але з придатністю це та сама команда:

aptitude search somepkg
aptitude install somepkg

aptitudeмає деякі додаткові функції, наприклад, такі aptitude changelog somepkgяк тримання пакетів (щоб зупинити їх оновлення) - нічого, чого не вдалося досягти за допомогою інших команд / методів, це просто більш уніфіковано і приємно використовувати.


3
занадто погано, що у нього немає еквівалента "політики кеш-кешу".
hayalci

4

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

схоже, останні версії apt-get мають подібний функціонал: http://www.psychocats.net/ubuntu/aptitude


aptitudeабо aptнасправді не зберігає список пакунків, які були встановлені як залежності для будь-якого пакета. Він просто відстежує, чи встановлено пакет вручну або автоматично. І якщо пакет був позначений як автоматично встановлений, і жоден інший пакет не залежає або рекомендує його, він буде видалений за допомогою apt autoremoveабо aptitude dist-upgrade.
Мікко Ранталайнен

3

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


1

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

Це дійсно робить дивовижне управління пакетами.


1

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

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

Ви можете натиснути "g", щоб переглянути зміни, змінити доповнення та видалення пакетів, якщо це необхідно, та застосувати всі очікувані операції.

Чудовий візуальний спосіб управління пакетом через ssh-з'єднання або звичайний старий термінал.

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