2007-01-30
Одна из недавних заметок была посвящена использованию программы aptitude в командном режиме. Тем не менее, традиционно основной способ ее применения - интерактивный. И потому в нынешней заметке речь пойдет именно о нем. Правда, именно интерактивному режиму aptitude была посвящена прекрасная статья Тихона Тарнавского "Aptitude - превосходная степень apt", опубликованная в журнале Linuxformat #5(79), 2006, с 68-71. Это избавляет меня от необходимости подробного описания программы, позволяя сконцентрировать внимание на трех слабо освещенных аспектах - установке метапакетов, фиксации версий пакетов и настройке интерактивного режима. Все три эти вопроса рассмотрены применительно к дистрибутивам семейства Ubuntu. Но сначала -
Для запуска aptitude в интерактивном режиме достаточно дать одноименную команду без опций, операторов и аргументов. Причем для ознакомления с возможностями программы это можно сделать и от лица обычного пользователя - во избежание случайных ошибок. Разумеется, чтобы произвести реальные действия по установке или удалению пакетов, права администратора необходимы. Но их можно получить и в ходе сеанса работы с aptitude (чуть ниже будет показано, как).
После запуска aptitude перед нами предстает ее интерактивный текстовый интерфейс, основанный на библиотеке ncurses (рис. 1). Рабочее пространство программы разбито по умолчанию на три части: вверху - строка меню и краткая справка по наиболее употребимые горячим клавишам, в середине - разворачиваемый список категорий, внизу - поле описания пакетов и их категорий.
Доступ к пунктам меню, развертывание списков и тому подобные манипуляции осуществляются с клавиатуры. Однако, если aptitude собрана с поддержкой gpm (а в Ubuntu и, насколько я знаю, также и в Debian так оно и есть), то все управление можно выполнять и посредством мыши, причем при запуске в окне иксового терминала работает и колесо прокрутки.
Для начала ознакомимся с категориями пакетов. Это - совсем не те категории, о которых шла речь в заметке про устройство репозиториев, но за неимением лучшего термина придется воспользоваться этим. Список категорий включает следующие пункты:
Каждая категория разворачивается в список секций по назначению: программы для администрирования, базовые пакеты, текстовые редакторы, и так далее (рис. 2). Каждая секция разделяется на категории - main, restricted, universe, multivers, - о которых шла речь в заметке про устройство репозиториев. А уже категории содержат списки индивидуальных пакетов (рис. 3).
Каждый пакет списка имеет основной статус, а некоторые - еще и статус дополнительный (первое и второе поле каждой строки, соответственно). В число основных статусов входят:
Дополнительные статусы включают в себя:
В сущности, все действия в aptitude сводятся к изменению статуса пакетов. Сделать это можно двояким образом: через меню или посредством горячих клавиш. Второй способ, конечно, быстрее, но требует соответствующих навыков. Поэтому при эпизодическом применении (а я, например, пользую интерактивный режим именно эпизодически) действия через меню могут оказаться предпочтительными. Поэтому скажу несколько слов про
Главное меню aptitude в интерактивном режиме выглядит следующим образом (см. рис. 1):
При правильной локализации интерфейс программы почти полностью русскоязычный. Если это почему-либо раздражает (а надо признать, что перевод сделан не без юмора, но не вполне адекватно смыслу), то запустить aptitude можно таким образом:
$ LANG="POSIX" aptitude
В меню Действия имеются такие пункты (рис. 4):
Смысл пункта Откат понятен скорее по английски - только не подумайте, ради Бога, что тут вам заплатят какие-то деньги.
Смысл большинства пунктов меню Пакет вполне очевиден (рис. 4):
О фиксации версий и маркировании автоматически установленных пакетов мы еще поговорим. А пока зачему только, что отметка пакетов как устанавливаемых или удаляемых не предполагает никаких необратимых действий: они произойдут только после выбора в меню Действия пункта Установить/удалить пакеты.
Пункт меню Решатель вызывает у меня некоторое недоверие, я им никогда не пользовался, и потому изучение его возможностей оставляю на усмотрение заинтересованных лиц.
О пункте Поиск особо много говорить не приходится - легко догадаться, что через него осуществляется поиск пакетов вперед, назад (рис. 5). Здесь же можно отыскать и так называемые "сломанные пакеты" - этой теме много внимания уделено в упомянутой выше статье Тихона.
Пункт же Параметры будет предметом специального рассмотрения в заключительном разделе этой заметки.
Смысл пунктов меню Окна понятен без комментариев (рис. 6), и на них я останавливаться не буду.
Пункт Помощь очень важен: в нем можно не только получить краткие подсказки по статусу пакетов, доступным действиям, горячим клавишам, но и прочитать весьма подробное руководство пользователя, правда, англоязычное, а также ознакомиться со списком часто задаваемых вопросов (рис. 7).
Практически все действия через меню могут быть выполнены и с помощью горячих клавиш. Они очень подробно рассмотрены в статье Тихона, и потому я ограничусь краткой шпаргалкой для наиболее употребимых из них:
О прочих горячих клавишах можно прочитать в стать Тихона, встроенной справке или документации (man aptitude). Мы же перейдем к вопросу
В списке категорий Задачи (Tasks) стоят на последнем месте, однако по значению эта категория далеко не последняя - именно выбором из нее определяется своеобразие каждого представителя семейства дистрибутивов Ubuntu.
К категории Задачи нередко применяется также термин метапакет - и мне он кажется предпочтительным. Понятие это пришло из FreeBSD, где под метапакетом (или метапортом) понимался просто список пакетов, вместе составляющих единый пакетный комплекс, и установка которого влекла за собой инсталляцию всех его компонентов. Например, установка метапакета KDE (или сборка одноименного метапорта) автоматически вызывает установку (сборку) всех пакетов этой системы - от kdelibs и kdebase до kdeedu, kdetoys и бессчетного числа пакетов интернационализации (kde-i18n-??).
В Ubuntu метапакеты также представляют собой списки пакетов реальных, однако собираются они по целевому назначению (рис. 8), чем и обусловлено их второе название - Задачи (Tasks).
В число метапакетов входят:
Как я уже сказал, именно установка соответствующего метапакета определяет специфику данного представителя семейства Ubuntu. Причем по умолчанию соответствующий метапакет (ubuntu-desktop, kubuntu-desktop, xubuntu-desktop, edubuntu-desktop) устанавливается на стадии начальной инсталляции с носителя одноименного дистрибутива (собственно Ubuntu, Kubuntu, Xubuntu, Edubuntu), делая его "самим собой".
Однако, если при инсталляции ограничиться минимальным набором (Install on command line System), а в дальнейшем доустановить один из метапакетов, то результат будет идентичный. Более того, если после обычной установки, скажем, Kubuntu, удалить метапакет kubuntu-desktop, заменив его на xubuntu-desktop, то мы получим систему, неотличимую от свежеинсталлированной Xubuntu.
Сама по себе установка метапакета происходит просто. Для этого достаточно через меню или клавишей "+" отметить нужный метапакет для установки и дважды нажать клавишу "g". Удаление метапакета осуществляется обратным порядком: отмечаем его клавишей нижнего подчеркивания (для "чистого" удаления" и опять дважды долбим по "g".
Список пакетов, устанавливаемых для каждой задачи, можно просмотреть, развернув соответствующий пункт списка метапакетов (рис. 9). Если не полениться и пролистать весь список, можно убедиться, что, за буквально единичными исключениями, пакеты в нем маркированы как автоматически установленные (то есть имеют дополнительный статус A).
Это очень важно в концепции метапакетов. С одной стороны, именно благодаря автоматической связанности так легко можно сменить дистрибутив, просто удалив один метапакет и установив другой. Или - просто дополнить рабочее окружение еще одним вариантом (а то и всеми тремя, помимо текущего).
С другой стороны, связанность компонентов метапакета требует осторожного обращения с ними. Например, попытка избавиться "в лоб" (то есть обычной деинсталляцией типа remove или purge) от всякого рода экзотических шрифтов типа Деванагари, Теллугу и прочих (чрезвычайно востребованных, как вы понимаете, в наших широтах), или от столь же экзотических, сколь же необходимых, пакетов локализации на всех мыслимых и немыслимых языках Земного шара, приведет к тому, что, в случае с Kubuntu, например, вы лишитесь всего KDE, OOo и прочего, оставшись с "голым Васей", то есть метапакетом minimal. Пользователям Ubuntu и Xubuntu просьба не обольщаться - у них получится то же самое...
Конечно, в принципе проблема излишних локалей (и вообще удаления заведомо неиспользуемых компонентов метапакета) решаема, хотя и требует изрядного времени, терпения и аккуратности. И потому я, например, с этим просто примирился: диски нынче большие, ну лежит там где-то тамильская или зулусская локаль - ну и ладушки, есть не просит, ничему вроде не мешает. Однако бывают и более актуальные случаи, когда разруливание автоматически установленных пакетов оказывается важным, что и будет предметом следующего раздела, тема которого -
Рассмотрение этой темы проще всего провести на реальном примере, возникающем в конкретном же дистрибутиве - Kubuntu. Не секрет, что русификация KDE и его приложений в нем, мягко говоря, оставляет желать лучшего, существенно отставая по качеству от официального пакета русификации проекта KDE. На причинах этого останавливаться не буду, но столь прискорбный факт имеет место быть. И с ним остается либо смириться, либо попытаться исправить ситуацию.
Смириться - просто: достаточно переключить язык интерфейса KDE на English, чтобы избавиться от лицезрения смеси оксфордского с албанским.
Исправление же ситуации требует некоторых не совсем тривиальных действий. Напрашивающееся решение - подменить родной пакет kde-i18n-ru, установленный из репозитория Ubuntu, одноименным пакетом из Debian (где он собран на основании официального авторского пакета проекта KDE. Ну и зафиксировать его версию - дабы не произошло обратной замены при ближайшем же тотально апгрейде пакетов.
Но не тут-то было. Конечно, после этого мы получаем качественно русифицированное KDE и его приложения. Но удаление оригинального пакета kde-i18n-ru повлечет за собой и удаление ряда пакетов, связанных с ним автоматическими зависимостями - начиная с локально-зависимых компонентов OpenOffice.org и кончая даже пакетами базовой русификации - language-pack-ru, language-pack-ru-base, language-support-ru, результаты чего могут оказаться непредсказуемыми, вплоть до порчи локали.
Поэтому правильный порядок действий будет примерно таков:
Стоит ли овчинка выделки, и не проще ли остаться с полупереведенным KDE-интерфейсом (а то и просто с английским) - решать пользователю.
Другой способ избежать удаления пакетов русификации, связанных автоматическими зависимостями с kde-i18n-ru, будет рассмотрен в следующем разделе, в котором говорится
Как уже говорилось, за интерактивные настройки aptitude отвечает меню Параметры (Options), включающее следующие пункты (рис. 10):
Через пункт настройки интерфейса (рис. 11) можно включить или выключить строку подсказки в верхней части экрана, скрыть меню, использовать (например, при поиске) строку ввода внизу экрана вместо отдельной панели, скрыть область описания категорий и пакетов.
Пункт Работа с зависимостями собственно и определяет поведение aptitude по умолчанию (рис. 12), каковые включают:
Снятием или установкой соответствующих переключателей все или некоторые из этих умолчаний можно заменить на противоположные.
Кроме того, можно отключить автоматическое удаление некоторых, задаваемых маской, неиспользуемых пакетов. И это - второй способ сохранения пакетов русификации, связанных зависимостями с kde-i18n-ru, упомянутый в прошлом разделе. То есть нужно просто сконструировать маску (вроде *-ru*), под которую он подпадут - и никакие апгрейды им будут не страшны. Правда, некоторые пакеты охватить такой маской не удастся - и их придется все равно спасать вручную, как было описано выше.
В части Разное (рис. 13) можно установить автоматическое обновление кэша пакетов, удаление из кэша устаревших пакетов после загрузки новых, и, наконец, избавиться от необходимости двойного нажатия на клавишу "g" для выполнения заказанных действий над отмеченными пакетами (переключатель Показать, что будет сделано, перед тем, как делать).
Наконец, если вы совсем запутались с опциями из предыдущих пунктов, пункт Отменить настройки позволит восстановить умолчальное состояние aptitude.
Кстати, настройки, выполненные в интерактивном режиме, имеют силу и для режима командного, поскольку отражаются в том же конфигурационном файле ~/.aptitude/config, о котором шла речь в соответствующей заметке. Так что оба способа использования этой программы не только идентичны по возможностям, но и могут быть настроены практически одинаковым способом. Ну а какой из них применять - дело вкуса, индивидуальных предпочтений, а также обстоятельств.