Алексей Федорчук
Поводом для этой заметки послужил вопрос в обном из обсуждений на форуме 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 года.
Приятная новость: меньше букв вводить в командах :)
Vita, ага :)
Я именно потому его и применяю прямо со второго апреля 2014-го.
А поскольку в Zsh есть ещё и глобальные псевдонимы, то и все install, search etc. свёл к in, se и так далее.
PS это не реклама Zsh, а так, намёк :)
Простите подскажите пожалуйста, как установить apt 1.2 , на debian 8, вернее на MX Linux 15,там замшелая1.09(понимаю дань стабильности), спросил у гугля а он в ответ загадочно молчит.
упсс вопрос снят,извините невнимательно читал, в конце статьи все обьясняется.
Vlad, в MX Linux как раз относительно просто: подключите репозиторий Sid и установите apt командой вроде
# apt install -t unstable apt
По идее, единственная зависимость — libapt, так что всё должно разрулиться без проблем.
Спасибо! Вечером попробую.
Если б только libapt, оно вдруг захотело обновить много чего, и я решил не рисковать,но вот если б знать как обновить лишь только этот пакет из Sid, а остальные не обновлять, утилита apt уж очень удобная, чем то pacman и yaourt из arch-a напомнило, думаю можно и в таком ограниченом виде попользоватся.
Но я пытался обновить из Synaptic ,а не командой которй вы привели выше,бегу читать что значит аргумент -t для apt.Спасибо еще раз!