Утилита apt: новшества версии 1.20

Алексей Федорчук

Поводом для этой заметки послужил вопрос в обном из обсуждений на форуме Matuntu: чем команда apt отличается от apt-get. Я по привычке написал, что первая не поддерживает некоторые субкоманды второй, такие, как autoremove и purge. Но оказалось, что отстал от жизни…

Утилита apt, появившись в составе одноимённого семейства 1 апреля 2014 года, до недавнего времени имела статус не вполне стабильной, о чём при каждом её запуске выводилось соответствующее предупреждение. А список её субкоманд, выдаваемый голой командой apt, сводился к приведённому в одной из первых моих заметок на эту тему. Таких часто требуемых субкоманд, как autoremove, clean и purge, в нём действительно не было. Как отсутствовали они и в man (8) apt.

Это положение сохранялось как минимум вплоть до apt версии 1.10, включённой в состав Ubuntu 15.10. Однако в последние полгода утилита apt неожиданно стала довольно активно развиваться, что нашло отражение в версии версии 1.2.X, включённой в состав тестовых сборок будущей Ubuntu 16.04. Поскольку именно на последней я сейчас и тренируюсь по части сборки Cintu, то решил поглядеть, что нового появилось в текущей реализации команды apt.

Для начала выяснилось, что она стала правильно реагировать на опцию --version. Раньше команда apt воспринимала её как ошибочную и выводила краткую справку по субкомандам (хотя и номер версии тоже давала). Ныне же в ответ на неё последует только то, что и должно быть по правилам опций для утилит GNU:

$ apt --version
apt 1.2.10 (amd64)

Вывод для команды apt без опций будет тем же, что и прежде. Но это как раз тот случай, когда верить своим глазам не следует. А нужно обратиться к тёте Мане. Ибо в выводе команды

$ man apt

ныне обнаруживаются и autoremove, и purge. Фактически из важных субкоманд в текущей версии apt’а отсутствует только clean — для выполнения очистки системы от скачанных deb-пакетов по прежнему придётся обращаться к утилите apt-get. Также как и для проверки приоритета пакетов из разных репозиториев и их версий потребуется команда apt-cache policy.

Однако это — чуть ли не единственные (и надеюсь, временные) «прорехи» в функционале текущей версии apt. И в большинстве случаев из обыденной жизни она уже вполне заменяет связку из apt-get и apt-cache. Кстати, и предупреждение о «неполноценноти» apt‘а из её вывода также исчезло. Так что пользоваться этой командой можно безбоязненно. Особенно если не забывать о том, что она поддерживает те же опции субкоманд, что и предшественники, например, --reinstall для apt install.

Правда, пока apt версии 1.20 имеется только в тестовых сборках Xenial’а. А установить соответствующий пакет в более ранних релизах «в лоб» не получится из-за нарушения зависимостей. Можно только надеяться на обновление версии apt в репозитории backports «долгоиграющего» релиза 14.04, который по идее должен поддерживаться до весны 2019 года.

Утилита apt: новшества версии 1.20: 8 комментариев

  1. Приятная новость: меньше букв вводить в командах :)

  2. Vita, ага :)
    Я именно потому его и применяю прямо со второго апреля 2014-го.
    А поскольку в Zsh есть ещё и глобальные псевдонимы, то и все install, search etc. свёл к in, se и так далее.
    PS это не реклама Zsh, а так, намёк :)

  3. Простите подскажите пожалуйста, как установить apt 1.2 , на debian 8, вернее на MX Linux 15,там замшелая1.09(понимаю дань стабильности), спросил у гугля а он в ответ загадочно молчит.

  4. упсс вопрос снят,извините невнимательно читал, в конце статьи все обьясняется.

  5. Vlad, в MX Linux как раз относительно просто: подключите репозиторий Sid и установите apt командой вроде
    # apt install -t unstable apt
    По идее, единственная зависимость — libapt, так что всё должно разрулиться без проблем.

  6. Если б только libapt, оно вдруг захотело обновить много чего, и я решил не рисковать,но вот если б знать как обновить лишь только этот пакет из Sid, а остальные не обновлять, утилита apt уж очень удобная, чем то pacman и yaourt из arch-a напомнило, думаю можно и в таком ограниченом виде попользоватся.

  7. Но я пытался обновить из Synaptic ,а не командой которй вы привели выше,бегу читать что значит аргумент -t для apt.Спасибо еще раз!

Добавить комментарий