Пакетные менеджеры: apt vs apt-get. В чем разница? Как правильно обновлять систему через терминал в Ubuntu подобных системах.

В данной статье посмотрим на разницу между пакетными менеджерами apt и apt-get. А также рассмотрим вопрос, как правильно обновлять систему через терминал в Ubuntu подобных системах.

Apt (advanced packaging tool) - это программа для работы с пакетами программ в операционных системах Linux Debian, и основанных на них - Ubuntu, Linux Mint и т.д. По сути, apt - это терминальный (консольный) пакетный менеджер.

На данном сайте во всех статьях об установке каких-либо программ используется команда для установки пакетов:

sudo apt-get install <package_name>

Начиная с Ubuntu 16.04 (теперь присуствует и в Ubuntu 14.04) был добавлен новый пакетный менеджер просто "apt" и теперь команда установки пакета выглядит следующим образом:

sudo apt install <package_name>

То есть, кроме знакомой нам apt-get добавился ещё apt. И в этой статье мы подробнее рассмотрим разницу между ними.

Возникает логичный вопрос, зачем нужен новый пакетный менеджер?

У старого apt-* существует достаточно ключей, в которых легко запутаться, особенно новичку:

Пакетный менеджер apt заменяет старые apt-get и apt-cache. Непосредственно, реализованы все самые наиболее используемые команды по установке, удалению пакетов, обновлению системы и поиска пакетов. Кроме того, раскрасили в цветах текст выполнения данных команд.

Давайте же разберем список команд нового пакетного менеджера apt:

Для того, чтобы получить краткую подсказку по данным командам, всегда можно выполнить команду:

apt help

Вот краткое описание команд из справки:

Пройдемся подробнее по каждой команде нового пакетного менеджера apt.

install, remove, purge - используются для установки, удаления, удаления с зависимостями пакетов в системе. Отличие от apt-get что добавился прогресс выполнения операции:

search - команда аналогична apt-cache search, используется для поиска пакета в репозиториях. Разница в том, что эта команда выводит сортированный список по алфавиту.

show - команда, аналогичная apt-cache show, показывает подробную информацию о пакете. Разница в том, что теперь информация более краткая и по существу. Скрыты более технические параметры, такие как хеши.

update - команда, аналогичная apt-get update, обновляет информацию о пакетах в добавленных репозиториях в системе. Разница в том, что текст выполнения стал разноцветным:

* Цвета строк с репозиториями меняются только в момент их обновления.

list - команда, похожая на dpkg list, отображает список пакетов в зависимости от дополнительного ключа.

Ключи могут быть следующими:

--upgradable - просмотр списка пакетов которые могут быть обновлены (есть новые версии в репозиториях)
--installed - просмотр списка всех установленных пакетов в системе
--manual-installed - просмотр списка пакетов, которые устанавливались в ручную пользователем
--all-version - просмотр вообще всех пакетов, описанных выше.
--verbose - отображение краткой информации (что это за пакет программы) по всем пакетам

Также можно указывать часть имени пакетов, по которым нужно получить информацию, указав звездочку на конце, либо непосредственно полное имя пакета. Пример:

apt list zypper* --verbose

Для удобного чтения этого огромного списка, можно его сохранить в файл. Выполнить перенаправление вывода выполнения команды из терминала в файл:

Для удобного чтения этого огромного списка, можно его сохранить в файл. Выполнить перенаправление вывода выполнения команды из терминала в файл:

apt list --manual-installed > manual-installed.txt

После команды указываем одинарную галочку вправо > , а затем название файла текстового файла. Название текстового файла может быть любое, если используете пробел в названии файла, то его нужно экранировать обратным слешем.

Если текстового файла нет в системе с таким именем, то он будет создан. Если есть в системе, то файл будет перезаписан.

Таким же образом можно сохранить в файл и выводы остальных списков для удобного их просмотра в графическом текстовом редакторе:

Как правильно обновлять систему через терминал в Ubuntu подобных системах.

upgrade - команда аналогична apt-get upgrade --with-new-pkgs, то есть обновляет пакеты, которые уже установлены в системе и доставляет новые пакеты-зависимости.

full-upgrade - команда аналогична apt-get dist-upgrade, то есть обновляет пакеты, которые уже установлены в системе, доставляет новые пакеты зависимости и удаляет пакеты, которые устанавливались в систему и уже не используются.

По поводу разницы обновления в терминале, давайте обратимся за более подробной информацией в мануал apt-get.

apt-get upgrade
upgrade используется для установки новейших версий всех установленных пакетов системы из источников, указанных в /etc/apt/sources.list. Будут разысканы новейшие версии установленных в настоящий момент пакетов и произведено обновление; ни в коем случае не будет удалено ни одного установленного пакета или установлено нового пакета, не имеющего уже установленной в системе предыдущей версии. Текущие версии установленных в настоящий момент пакетов, если они не могут быть обновлены новыми версиями без изменения статуса других пакетов, будут оставлены в неизменном виде. Для того, чтобы apt-get узнал о существовании доступных новых версиях пакетов, данной команде должна предшествовать команда update.
apt-get dist-upgrade
dist-upgrade, в дополнение выполняет функцию upgrade, а также разумно управляет изменением зависимостей с новыми версиями пакетов; apt-get имеет «умную» систему разрешения конфликтов и она будет в случае необходимости пытаться произвести обновление наиболее важных пакетов за счет менее важных. Файл /etc/apt/sources.list содержит список источников для получения пакетов, из которых будут получены файлы пакетов.

Таким образом, когда вы обновляете систему с помощью команды:

sudo apt-get upgrade

то у вас только обновляются установленные пакеты, при этом могут возникнуть конфликты и неудовлетворенные зависимости и новые пакеты не будут устанавливаться.

Команда же:

sudo apt-get dist-upgrade

удалит старые пакеты, разрешит конфликты, доставит необходимые зависимости, доставит новые пакеты, если требуется. Более умный и гибкий инструмент обновления системы.

Именно поэтому в случае пакетного менеджера apt-get, я советую пользоваться dist-upgrade для обновления системы, а про upgrade вообще забыть.
С пакетным менеджером  apt можно использовать обе эти команды обновления.

Но в случае использования upgrade, периодически надо будет использовать следующую команду:

autoremove - команда аналогична apt-get autoremove, очищает систему от пакетов, которые были установлены как зависимости других пакетов и уже не используются.

edit-sources - открывает редактор файла со списком системных репозиториев /etc/apt/sources.list. Больше про эту команду сказать и нечего. Огромной полезности в ней не вижу. Этот файл можно отредактировать без данной команды.

Пришло время переходить на пакетный менеджер apt.

Давно пора было разработчикам сделать выполнение таких наиболее используемых команд пакетного менеджера в Ubuntu более лаконичными без постфиксов apt-get, apt-cache и с доработкой скриптов выполнения команд.

В дальнейшем, на данном сайте в статьях будут использоваться команды нового пакетного менеджера.

  • https://ok.ru/profile/556413203584 Валерий Денисов

    Дополнение: есть дистрибутив, не подобный Debian/Ubuntu, но использует apt-get. Это AltLinux.
    Вопрос: А Synaptic — это теперь графическая оболочка чего: apt-get или apt?

    • Кот Бегемот

      Подозреваю, что до сих пор осталось apt-get. Не только же для Ubuntu программа.

  • Power555

    Как правильно обновлять LTS ?
    Что можно делать и что нельзя
    через терминал или через программы обновления