Чи застаріле значення "apt-get"?


54

Останнім часом я бачив, як багато людей використовують

sudo apt

замість

sudo apt-get

Також Ubuntu постійно повідомляє мені встановлювати речі sudo apt

The program 'foo' is currently not installed. You can install it by typing:
sudo apt install foo

(пам'ятайте, foo - це заповнювач, а не додаток)

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

У моїх програмах баш,

  • чи потрібно мені замінювати всі apt-getкоманди apt?
  • це apt-getнебезпечно?
  • чи все ще працюватимуть мої програми?

7
Дивіться цей пов’язаний пост: askubuntu.com/q/445384/295286
Сергій Колодяжний

Apt гарніший ніж apt-get
WinEunuuchs2Unix

2
Причина, чому деякі користувачі (наприклад, я) користується aptтим, що вона коротша, ніж apt-get. Менше натискань клавіш, менше витраченого часу. Я використовую apt-getдля таких речей, як checkхоча.
Галліфрейян

Відповіді:


36

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

Обидва цілком чудово. apt-getне застаріло, але ваша 15.10 установка :)

Редагувати: зі сторінки чоловіка apt (8)

Команда apt призначена для приємного для кінцевих користувачів і не повинна бути сумісною назад, як apt-get (8).

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


19
Які функції не в apt-get не в apt? І як підходить краще кінцевому користувачеві?
Анвар

4
Знову ж, apt-get - не нижчий рівень, ніж apt. Це оманлива інформація. apt знаходиться на такому ж рівні, як apt-get і apt - це не що інше, як обгортка навколо apt-get і apt-cache
Anwar

@Anwar: Існують відмінності. Один із прикладів: apt upgradeapt-get upgrade, оскільки перший встановлює нові пакети, а останній - ні.
Gunnar Hjalmarsson

26
@Anwar Якщо aptце обгортка, apt-getто вона, безумовно, вищого рівня.
Тавіан Барнс

2
@Anwar Це власне визначення "вищого рівня" або "нижчого рівня". apt вищого рівня, тому що він завершує apt-get. Своєрідне випробування полягає в тому, що якби ваш підліток зіпсувався, apt-get все одно працював би, але не навпаки.
Сер Роберт

47

Ні, apt-getне застаріла. Людина сторінка aptмає це сказати про aptVS. apt-getapt-cache):

ВИКОРИСТАННЯ СКРИПТУ І РАЗЛИЧНІ ВІД ІНШИХ APT TOOLS

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

Усі функції apt (8) доступні також у спеціалізованих інструментах APT, таких як apt-get (8) та apt-cache (8). apt (8) просто змінює значення за замовчуванням для деяких параметрів (див. apt.conf (5) та конкретно область Binary). Тому вам слід віддавати перевагу використанню цих команд (можливо, з увімкненими деякими додатковими параметрами) у своїх сценаріях, оскільки вони максимально зберігають зворотну сумісність.

apt також дає попередження, яке говорить

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

якщо він виявить, є труба. Наприклад:

$ apt show python | grep Package

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Package: python
APT-Sources: http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages

Що стосується ваших питань,

чи потрібно мені замінювати всі команди apt-get apt?

Ні, ви не повинні замінити apt-getз apt. Якщо ви використовували його в сценаріях, вам слід дотримуватися цього, apt-getоскільки він має стабільний API CLI та гарантовану зворотну сумісність.

це apt-getнебезпечно?

aptтак само небезпечно, як apt-get: встановлювати програмне забезпечення слід лише з джерел, яким ви довіряєте.

Чи можу я використовувати aptв Ubuntu 15.10?

Так, можна. Проблема тут у тому, що ви все ще використовуєте Ubuntu 15.10, який зараз не підтримується! Оновіть до 16.04, що є версією LTS.

чи все ще працюватимуть мої програми?

Під програмами я припускаю, що ви маєте на увазі сценарії. Так, вони все ще працюватимуть, оскільки apt-getне застаріли. Насправді, вам слід віддати перевагу використанню apt-getв скриптах для зворотної сумісності, як це запропоновано на aptсторінці man.


7

aptі apt-getв основному той же менеджер пакунків, те, що вони роблять, те саме.

Відмінність полягає в тому, що він aptтакож містить функції, наприклад, apt-cacheі має вигідніший вигляд.

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

Ви можете використовувати і те, і інше.


apt надає функції apt-кешу з додатковою затримкою! спробуйте використати пакет пошуку apt і пакет пошуку apt-cache. Те саме з використанням політики
Anwar

@Anwar я не бачу різниці в використанні apt(-cache) policy. З apt(-cache) search, є різниця у швидкості, так, але вихід aptвідсортований і добре відформатований у відповідь.
Байт командир

-1

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

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

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