Моя дорогая Betsy. Управление пакетами: aptitude в интерактивном режиме

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

Программа aptitude — пакетный менеджер, функционально примерно соответствующий как паре утилит apt-get и apt-cache, так и утилите apt из пакета mintsystem. Однако по сравнению с обоими инструментами управления пакетами она предоставляет некоторые дополнительные возможности, и потому заслуживает отдельного рассмотрения, причём именно в рамках этой книги.

Общее вступление

Программа aptitude была создана в 1999 году Дэниелом Барроузом (Daniel Burrows) в качестве замены dselect — архаичной и неудобной в использовании надстройки над утилитами семейства dpkg. Впервые она была включена в Debian 2.2 (так называемый potato), и с тех пор утвердилась в этом дистрибутиве в качестве штатного средства управления пакетами.

Существует мнение, что aptitude выступает в качестве фронт-энда по отношению к утилитам семейства APT. Однако это не совсем так: aptitude и APT независимы друг от друга, но основаны на одном и том же наборе библиотек libapt.

Программа aptitude представлена во всех deb based дистрибутивах. Она рекомендуется к употребелнию в собственно Debian’е, а в ткаих его клонах, как Siduction и Aptosid выступает пакетным менеджером по умолчанию. Теоретически работает она и в Ubuntu со всеми его производными, и почти всегда присутствует в установке по умолчанию. Однако здесь главным средством управления пакетами в командной строке является семейство утилит APT И на практике оказывается, что совместное использование apt и aptitude не целесообразно. И потому резонные люди не рекомендуют применение последней в системах, основанных на Ubuntu, в том числе и в Linux Mint. Именно поэтому о ней не говорилось в книге, посвящённой этому дистрибутиву. А вот в LMDE, базовая часть которой целиком заимствована из Debian’а, никаких препятствий к применению aptitude не просматривается. Хотя, честно говоря, имея в руках Mint-реализацию утилиты apt, я ни разху не ощутил потребности в ней.

Как известно, полный набор утилит семейства APT обеспечивает весь мыслимый комплекс действий с пакетами — от установки единичного пакета с отслеживанием всех его зависимостей до полной пересборки системы из исходников, подобно тому, как это делается в дистрибутивах Source Based.

Программа aptitude не столь универсальна по своему назначению. Функции ее сводятся к установке и удалению пакетов и получению информации о них. Однако и то, и другое она делает не просто хорошо, а очень хорошо. Она хорошо показывает себя в отслеживании зависимостей и разрешении связанных с ними коллизий, в том числе и в нетривиальных случаях. А главная её сила — в гемоглобине возможностях поиска пакетов по шаблонам — здесь она просто не имеет себе равных.

Программа aptitude работает в текстовом режиме и предполагает два метода использования – интерактивный, через основанный на ncurces интерфейс, и командный — непосредственно из строки шелла. Поскольку предполагается, что интерактивный метод проще в использовании, с него мы и начнём, перейдя затем к методу командному.

Обзор интерфейса

Для запуска aptitude в интерактивном режиме достаточно дать одноименную команду без опций, операторов и аргументов. Причем для ознакомления с возможностями программы это можно сделать и от лица обычного пользователя — во избежание случайных ошибок. Когда же потребуется выполнить реальные действия над пакетами — пароль администратора будет запрошен.

После запуска aptitude перед нами предстает ее интерактивный текстовый интерфейс, основанный на библиотеке ncurses. Рабочее пространство программы разбито по умолчанию на три части: вверху — строка меню и краткая справка по наиболее употребимые горячим клавишам, в середине — разворачиваемый список категорий, внизу — поле описания пакетов.

aptitude_001
Доступ к пунктам меню, развертывание списков и тому подобные манипуляции осуществляются с клавиатуры. Однако, если aptitude собрана с поддержкой gpm (а в LMDE так оно и есть, ножно только не забыть установить соответствующий пакет), то те же действия можно выполнять и посредством мыши. Причем при запуске её в окне иксового терминала работает и колесо прокрутки, правда, довольно странно, построчно.

Организация главного меню интерактивной aptitude, как мы скоро убедимся, не являет собой торжества логики. Активизация выполняется по комбинации клавиш Control+T, после чего в нём можно видеть следующие пункты:

  • Действия (Actions) — выполнение действий, «заказанных» в пункте Пакет;
  • Откат (Undo) — отмена выполненных действий;
  • Пакет (Package) — «заказ» действий с пакетами для выполнения в пункте Действия;
  • Решатель (Resolver) — здесь решаются проблемы с зависимостями;
  • Поиск (Search) — предлагается догадаться самим;
  • Параметры (Options) настройка интерфейса, работы с зависимостями и кое-какие прочие;
  • Окна (Views) — открытие и закрытие новых «окон» (которые правильней назвать вкладками);
  • Справка (Help) — она же Помощь.

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

$ LANG="POSIX" aptitude

Перемещение по пунктам — стрелками управления курсором или мышью, деактивизация меню — клавишей Escape.

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

А на практике работу aptitude надо начинать с её настройки (что верно и для подавляющего большинства программ), для чего предназначен пункт Параметры. Однако как раз это дело мы оставим напоследок — после обзора остальных пунктов меню, иначе непонятно будет, что тут настраивать.

Так что в реальности для знакомства с возможностями программы первым нам потребуется пункт Пакет, в котором пакеты отмечаются для того, чтобы в дальнейшем с ними выполнить заказанные действия с помощью подпунктов одноимённого пункта меню. Смысл большинства подпунктов пункта Пакет вполне очевиден:

aptitude_002
Тем не менее, пробежимся по ним беглой рысью.

  • в пунктах Установить (Install), Удалить (Remove) и Удалить полностью (Purge) отмечаются пакеты, предназначенные для установки, удаления с сохранением конфигов и удаления «вчистую», соответственно;
  • пункты Оставить (Keep) и Удержать (Hold)— фиксирую версии пакетов при единичном ближайшем апгрейд и навеки (или до принудительной отмены фиксации);
  • пункты Отметить как установленные автоматически и Отметить как установленные вручную принудительно задают пакетам соответствующий статус, вне зависимости от того, как они были установлены на самом деле.

Как уже говорилось, отметка пакетов не влечёт пока никаких необратимых последствий. И потому для предназначения пакетов к установке или удалению достаточно прав пользователя. Но фиксация версий и изменение дополнительного статуса вносят изменение в локальный кэш пакетов, что требует прав администратора, о чём и выводится соответствующее предупреждение.

aptitude_003
Так что, закончив развлекуху с предопределением судьбы пакетов, самое время отправиться в пункт Действия главного меню. Где мы видим следующую картину:

aptitude_004
Назначение подпункта Установить/удалить пакеты очевидно — это реальное выполнение соответствующих действий над отмеченными в пункте Пакет пакетами. А также приводит к исполнению всх прочих заказов.

Подпункт Обновить список пакетов вызывает обновление локального кэша пакетов, необходимое при подключении новых репозиториев. А подпункт Отметить обновляемые помечает в локальном кэше пакеты, для которых доступны обновления; само по себе обновление будет выполнено при переходе к первому подпункту.

Подпункт Забыть о новых пакетах заставляет не учитывать категорию New Packages. А Очистить кэш пакетов приводит к удалению файлов пакетов, скачанных в процессе жизнедеятельности aptitude, находящихся в каталоге /var/cache/apt/archives/. Действие подпункта Очистить устаревшие файлы сходно, но он вызывает удаление файлов, соответствующих только пакетам устаревших версий.

Подпункт Играть в сапёра позволяет убить время в ожидании скачивания и установки пакетов.

Наконец, Стать суперпользователем именно это и означает, если aptitude была запущена от пользователя обычного. Все пункты из меню Действия требуют прав администратора (кроме игры в сапёра — это баловство доступно и простому юзеру). Так что в этом пункте будет выведено приглашение sudo ввести пароль пользователя:

[sudo] password for alv:

Права администратора можно получить и иным путём — выбором одного из действий в этом пункте, что вызовет предложение Стать суперпользователем:

aptitude_005
И при согласии опять же последует приглашение sudo:

aptitude_006
Мы рассмотрели два наиболее востребованных пункта главного меню, остальные затронем уж совсем вкратце и по порядку.

Смысл пункта Откат понятен скорее по английски (Undo) — не ожидайте от его выбора каких-либо денег.

Пункт меню Решатель вызывает у меня некоторое недоверие, я им никогда не пользовался, и потому изучение его возможностей оставляю на усмотрение заинтересованных лиц.

В пункте Поиск, как легко догадаться, осуществляется поиск пакетов вперед и назад, причём по умолчанию инкрементно:

aptitude_007
Здесь же, через подпункт Найти неработоспособные можно отыскать и так называемые «сломанные пакеты» — на скриншоте они выделены кумачом:

aptitude_008
Приведённый пример взят из моей самосборной Pure Betsy, и таких кумачовых строк в довольно много. Они не означают, что в моей системе что-то неправильно: они вызваны удалением ряда метапакетов, которые мне по жизни не нужны, и жить это не мешает ни в малейшей степени.

Пункты меню Окна позволяют создавать несколько вкладок разного назначения, например, для списка пакетов, их категорий, рекомендаций и так далее. Разумеется, в каждый момент можно видеть только что-то одно, но между этими списками легко переключаться в любом направлении:

aptitude_009
Некоторые вкладки возникают как бы самопроизвольно. Так, при обращении к пункту Параметры, доступный для настройки их список выводится в новой вкладке. Открытие каждого подпункта меню Справка также создаёт отдельную вкладку. И подчас нужно довольно долго переключаться между открытыми вкладками, чтобы добраться, наконец, до списка пакетов, нуждающихся в окучивании. И делать это удобнее не через меню, а горячими клавишами (см. далее). Или — мышью через собственно tab-подобные вкладки.

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

aptitude_010
Перемещению по меню стрелками управления курсором или мыши, что не всегда оказывается быстро, есть альтернатива — использование горячих клавиш.

Горячие клавиши

Практически все действия, доступные через главное меню aptitude, могут быть выполнены и с помощью горячих клавиш. Что, учитывая изрядную тормознутость интерфейса, может быть предпочтительным. Полный комментированный (на русском языке) список хоткеев можно посмотреть через пункт Справка -> Справка:

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

Хоткеи для отметки

  • + — отметить пакет для установки (или снять фиксацию версии);
  • — отметить пакет для удаления с сохранением конфигов;
  • _ — отметить пакет для удаления «вчистую»;
  • : — зафиксировать версию пакета для ближайшего обновления;
  • = — зафиксировать текущую версию пакета навеки (или до снятия фиксации);
  • M — отметить пакет как установленный автоматически;
  • m — отметить пакет как установленный вручную.

Хоткеи для действий

  • g — выполнение заказанных действий над отмеченными пакетами; на самом деле по первому нажатию клавиши «g» только выводится список «заказанных» пакетов; сами по себе установка, удаление и т.д. начнутся после повторного нажатия той же клавиши; впрочем, это можно изменить в настройках;
  • U — обновление локального кэша пакетов;
  • V — отметка обновляемых;
  • f — забыть о новых пакетах;
  • q — выход из aptitude или её Справки.

Хоткеи для поиска

  • / — прямой поиск;
  • \ — обратный поиск;
  • n — повторный прямой поиск;
  • N — повторный обратный поиск;
  • b — поиск «сломанных» пакетов.

Хоткеи для вкладок

  • F6 — переключение на следующую вкладку;
  • F7 — переключение на предыдущую вкладку;
  • q — закрытие вкладки.

Кроме того, не вредно помнить, что комбинация клавиш Control+T активизирует меню, комбинация Control+U отменяет последнее действие, а горячая клавиша ? вызывает ту справку, которая внутри пункта Справка.

Настройка интерфейса

Кое-какие вещи в умолчальном интерфейсе интерактивной aptitude могут показаться непривычными и (или) неудобными. Честно говоря, автору этих строк в ней кажется непривычным и неудобным почти всё. Но его примирение с этой программой обусловлено, во-первых, удобством её командной ипостаси (о чём речь впереди) и, во-вторых, тем, что некоторые возможности настройки интерфейса таки имеют место быть.

Как нетрудно догадаться, они выполняются через главное меню: Параметры -> Предпочтения, после чего в новой вкладке выводится список доступных для изменения параметров, объединённых в три секции:

  • Настройки интерфейса;
  • Работа с зависимостями;
  • Разное.

aptitude_012
В настоящий момент нас будет интересовать только первая секция, касающаяся интерфейса. Как можно видеть из следующего скриншота, тут всё довольно просто, потому что каждый настраиваемый параметр прокомментирован, причём при нашей умолчальной локали — по русски:

aptitude_013
Так что я вкратце изложу свои соображения по поводу включения или выключения отдельных пунктов. Разумеется, всё сказанное ниже — не более чем ИМХО.

  • Показывать некоторые из доступных команд вверху экрана — по первости лучше оставить в умолчальном (то есть включённом) состоянии; но при регулярном использовании интерактивной aptitude надобность в этой подсказке быстро исчезает;
  • Скрывать строку меню, когда она не используется — эту опцию (по умолчанию она отключена) я включил бы сразу, ибо действия через меню, как уже говорилось, довольно медленны; да и при необходимости вызвать его всегда можно комбинацией клавиш Control+T;
  • По возможности использовать строку ввода внизу экрана — при включении этой опции строка ввода будет расположена внизу экрана, в выключенном состоянии (по умолчанию) ввод будет показан в виде всплывающего диалогового окна; дело вкуса, для меня удобнее первый вариант;
  • Показывать результаты частичного поиска (инкрементный поиск) — единственным аргументом против этой опции (включённой по умолчанию) может быть только ну исключительная слабость машины;
  • Завершать работу программы при закрытии последнего окна — учитывая следующий пункт, ничему не мешает;
  • Запрашивать подтверждение при выходе — если включена предыдущая опция, лучше оставить во избежание случайного выхода из программы;
  • Пауза после скачивания файлов — имеет смысл сохранить умолчальное состояние, то есть При возникновении ошибки;
  • Использовать индикатор скачивания «status-line» для всех скачиваний — по умолчанию выключено, но мне кажется удобным;
  • Показывать область информации по умолчанию — включено по умолчанию, и лучше оставить по крайней мере до окончания настроек зависимостей, а там — как больше понравится; я оставляю;
  • Показывать закладки для доступных окон — безусловно, лучше оставить включённым, ибо наглядно и проще переключаться;
  • Показывать закладки для области информации — в отличие от предыдущей опции, эта по умолчанию выключена, и вроде не особенно нужна;
  • Перейти к следующему элементу после изменения состояния пакета — по умолчанию по выполнении действия с пакетом происходит возврат к исходному списку категорий, если включить эту опцию — к следующему пакету из списка; в чем необходимости не вижу, поскольку с пакетами редко приходится работать по их порядку в списках;
  • Автоматически показывать причину неработоспособности пакетов — при включении (как по умолчанию) для «сломанных» пакетов в области информации будут показаны зависимости, которые не могут быть удовлетворены;
  • При запуске показывать список пакетов вместо стандартного дерева — включение опции выводит при запуске программы «плоский» список всех пакетов в алфавитном порядке, без всякого структурирования, что мне кажется неудобным.

Остальные пункты секции настройки интерфейса касаются методов группировки экрана пакетов, формата представления окон пакетов, строки состояния и заголовка. Через пунктменю Параметры выполнить их нельзя, комментарий отсылает к чтению руководства по aptitude, куда и я пошлю любознательных читателей (сам, каюсь, этих разделов руководства не читал за неактуальностью).

Настройки интерфейса интерактивной aptitude выполняются от лица обычного пользователя и, соответственно, имеют силу только в его сеансе, ибо отражены в файле ~/.aptitude/config — обычном текстовом файле, доступном и для прямого редактирования.

aptitude и зависимости

Настройка работы с зависимостями в aptitude не обязана сводиться к установке соответствующих параметров интерактивного меню, но может потребовать и правки конфигурационного файлв. Который. напомню, называется ~/.aptitude/config и по умолчанию выглядит так:

aptitude "";
aptitude::Ignore-Recommends-Important "true";
aptitude::Keep-Unused-Pattern "";
aptitude::Delete-Unused-Pattern "";
(END)

То есть — почти никак: все умолчальные параметры считываются сначала из файла /usr/share/aptitude/aptitude-defaults, а затем из конфиголв в каталоге /etc/apt/apt.conf.d. Из всего, что имеет отношение к зависимостям, можно видеть только строку игнорирования рекомендаций. Так что продолжим наши развлечения с зависимостями, перейдя к соответствующей секции:

aptitude_014
Здесь всё происходит точно так же, как и при настройке интерфейса: каждая опция прокомментирована, и остаётся только решить, нужна ли она именно вам.

Для первых двух опций, Автоматически разрешать зависимости выбираемого пакета и Автоматически исправлять пакеты с ошибками… умолчальное, то есть положительное, решение напрашивается, иначе использование aptitude (как и любого другого менеджера пакетов) утрачивает смысл.

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

Apt::Install-Recommends "false";

С другой стороны, для графических фронт-эндов к APT, таких, как Symantic и Muon Package Manager, напротив, рекомендованные зависимости устанавливают. Подозреваю, что и Центр приложений ведёт себя аналогично. Так что может понадобиться вернуть умолчальное значение. В этом случае та же строка приобтетёт вид:

Apt::Install-Recommends "true";

В общем, тут следует принимать волевое решение в соответствие со своими наклонностями. И при этом не следует забывать, что каково бы ни было значение этой опции в конфиге, при установке единичного пакета оно всегда может быть инвертировано опциями кмоандной строки, о чём будет сказано на соответствующей странице.

Возможно, что читатель, помимо рекомендованных зависимостей, пожелает по умолчанию устанавливать также и предлагаемые. Сделать это через интерактивное меню нельзя, но легко решается добавлением в ~/.aptitude/config одной строки:

$ echo 'Apt::Install-Suggests "true";' >> .aptitude/config

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

Опция Автоматически удалять неиспользуемые пакеты включена по умолчанию — и, полагаю, таковой должна и оставаться, иначе система будет захламлена неиспользуемыми библиотеками и тому подобным мусором.

Что же до пункта Пакеты, которые никогда не будут автоматически удалены, то, как нетрудно понять, он содержит список шаблонов имён пакетов, «неудаляемых» при установке новых их версий. По умолчанию в этот список включены маски имён образов ядра и его модулей:

^linux-image.*$ | ^linux-restricted-modules.*$ | ^linux-ubuntu-modules.*$

И трогать их не надо. А вот чем дополнить список — решать пользователю (при условии, что он знает, что делает).

Опция Позволить разрешение зависимостей не обращая внимание на фиксации и запрещения по умолчанию отключена — и это правильно: не для того фиксируются версии некоторых пакетов и запрещается их обновление, чтобы это отменять.

Вообще-то опций конфигурирования для aptitude предусмотрено великое множество. Ознакомиться с полным их набором и их умолчальными значениями можно, прочитав файл /usr/share/aptitude/README. Это английская версия, существуют пего переводы на ряд других языков, русского среди которых нет.

А теперь, покончив со вторым пунктом, который про свободу Африке зависимости, пора завершить тему частью Разное. Где тоже не так много опций:

aptitude_015
И включение/отключение их сугубо субъективно. Разве что опцию Автоматически обновлять установленные пакеты я бы однозначно оставил в умолчальном (то есть отключённом) состоянии. Ну и изменять URL для скачивания списков изменений я бы тоже поостерёгся. Да, Показать, что будет сделано, перед тем как делать — часто раздражает. Но даёт некоторую паузу во времени — чтобы последний раз подумать перед сносом всей системы.

Предварительное оглавление

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