«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.

В моих программах bash,

  • я должен заменить все apt-getкоманды apt?
  • это apt-getопасно?
  • мои программы все еще будут работать?
Skybbles
источник
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следовательно , имеет более высокий уровень, а также теряет некоторые функции обратной совместимости и создания сценариев.

negusp
источник
19
Какие функции отсутствуют в apt-get, а не в apt? А как apt лучше для конечного пользователя?
Анвар
4
Опять же, apt-get не ниже уровня apt. Это вводящая в заблуждение информация. apt находится на том же уровне, что и apt-get, а apt - всего лишь оболочка вокруг apt-get и apt-cache
Anwar
@ Анвар: Есть различия. Один пример: apt upgradeapt-get upgrade, поскольку первый устанавливает новые пакеты, а второй - нет.
Гуннар Хьялмарссон,
26
@Anwar Если aptэто обертка, apt-getто это определенно более высокий уровень.
Тавиан Барнс,
2
@Anwar На самом деле это определение «более высокий уровень» или «более низкий уровень». apt - более высокий уровень, потому что он включает apt-get. Это своего рода тест: если ваш apt испортился, apt-get все равно будет работать, но не наоборот.
Сэр Роберт
47

Нет, apt-getне рекомендуется. На странице руководства aptесть, что сказать о aptпротив apt-getapt-cache):

ИСПОЛЬЗОВАНИЕ СКРИПТА И ОТЛИЧИЯ ОТ ДРУГИХ ИНСТРУМЕНТОВ APT

Командная строка 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в скриптах для обратной совместимости, как предложено на aptman-странице.

edwinksl
источник
7

aptи apt-getв основном это один и тот же менеджер пакетов, что они делают то же самое.

Разница в том, что он aptтакже содержит функции, например, apt-cacheи имеет более приятный внешний вид.

Однако aptне должен использоваться в сценариях, по крайней мере, если вы хотите проанализировать его вывод, потому что он все еще находится в разработке и его формат вывода может все еще измениться. Bash tab-autocomplete также еще не работает со многими aptкомандами.

Вы можете использовать оба, что вы предпочитаете.

Byte Commander
источник
apt предоставляет функции apt-cache с дополнительной задержкой! попробуйте использовать пакет поиска apt и пакет поиска apt-cache. То же самое с использованием политики
Анвар
@ Анвар Я не вижу никакой разницы, используя apt(-cache) policy. С apt(-cache) search, есть разница в скорости, да, но результат aptсортируется и приятно форматируется в ответ.
Byte Commander
-1

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

Так apt-getкак в этих ситуациях было намного лучше, и у него не было недостатков, я отказался aptи продолжал использовать apt-getвместо этого. Это было несколько лет назад, поэтому, возможно, это изменилось, но если вы столкнетесь с подобной ситуацией, вы можете попробовать оба варианта и посмотреть, какой из них лучше разрешит конфликт.

Zoltan
источник