Книга: Linux и все, все, все... Статьи и колонки в LinuxFormat, 2006-2013

Снова aptitude: режим командной строки

Снова aptitude: режим командной строки

LinuxFormat #83 (сентябрь 2006)

Одна из отличительная особенностей дистрибутивов семейства Debian – разнообразие средств управления пакетами. Однако в последнее время в качестве такового рекомендуется aptitude – надстройка над apt, работающая в текстовом режиме. Она предполагает два метода использования – интерактивный и командный. Первый был подробно описан Тихоном Тарнавским (LinuxFormat, #5(79), 2006). Поэтому я остановлюсь только на командном методе, затронутом им лишь вкратце.

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

Особенности aptitude в сравнении с утилитами apt проще всего рассмотреть на примере конкретных командных директив.

Резонные люди обычно начинают работу с пакетами поиском нужного для установки. В случае с aptitude это делается так:

$ aptitude search keyword

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

$ aptitude search term

даст примерно такой список.

Пакеты, маркированные литерой i (от installed), уже установлены в системе, а помеченные литерой p (от purge) – не установлены или удалены «вчистую» (как – будет говориться далее). Кроме того, в этой колонке могут присутствовать марки c (от clean), которой отмечены пакеты удаленные, следы которых (в виде конфигурационных файлов), однако, сохранились, и v (от virtual), чем обозначаются так называемые виртуальные пакеты, представляющие собой просто списки пакетов реальных.

Для инсталлированных пакетов возможна еще и дополнительная маркировка – литерой A (от automatic); таким образом помечаются пакеты, установленные автоматически в качестве зависимостей других пакетов.

Следующий этап – получение информации о тех пакетах, которые можно заподозрить в полезности. Этой цели служит оператор show, требующий аргумента в виде имени пакета, например:

$ aptitude show mlterm

выведет весьма подробные сведения о пакете mlterm (рис. 2):

   • имя и версия;

   • статус – установлен ли пакет, и если установлен – то как: собственноручно или автоматически, в качестве зависимости;

   • приоритет пакета и раздел репозитория, к которому он приписан;

   • имя и e-mail майнтайнера;

   • размер пакета в распакованном виде;

   • зависимости пакета, предложения по дополнительным компонентам и конфликтующие пакеты;

   • назначение и функциональность.

В aptitude, в отличие от apt, в число зависимостей включаются не только обязательные (depends), но также и рекомендуемые (recommends) пакеты.

Очевидно, что все операторы команды aptitude, служащие получению информации о пакетах, могут выполняться от лица обычного пользователя. Следующие же операторы требуют уже привилегий администратора – в дистрибутивах семейства Ubuntu они получаются посредством команды sudo.

Установка выбранных пакетов осуществляется посредством оператора install, требующем в качестве аргумента имени пакета:

$ sudo aptitude install pkg_name

Оператор install команды aptitude, в отличие от одноименного из apt-get, устанавливает не только «строгие» зависимости пакета (собственно depends), но и часть «мягких» (recommends), то есть все, что перечислено в качестве зависимостей в выводе оператора show. На усмотрение пользователя остается только установка «мягких» зависимостей из категории suggest (то есть «предложений» оператора show). Хотя, как мы увидим далее, такое положение можно изменить.

Установка версий пакетов осуществляется в соответствие с локальным их кешем. Каковой время от времени (а также после подключения дополнительных репозиториев) нуждается в обновлении. Это осуществляется посредством оператора update, в аргументах не нуждающегося.

Пакет, «испорченный» по какой-либо причине (например, неаккуратным вмешательством в конфигурационные файлы) можно «починить». Команда

$ sudo aptitude reinstall pkg_name

вернет его в первозданное состояние.

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

$ sudo aptitude remove pkg_name

удалит указанный в качестве аргумента пакет с сохранением его конфигурационных файлов. Именно такая ситуация и маркируется литерой c в выводе команды aptitude search. Полная же очистка системы от всех следов пакета достигается оператором purge:

$ sudo aptitude purge pkg_name

В этом случае пакет в выводе команды aptitude search маркируется литерой p.

Важно, что оба оператора удаления – и remove, и purge, – денисталлируют не только пакет, указанный в качестве аргумента, но и все те, которые были установлены автоматически в качестве его зависимостей – разумеется, только в том случае, если в системе не осталось других программ, которые от них зависят. Уже одно это является веским аргументом в пользу предпочтения aptitude перед классическими инструментами apt.

aptitude позволяет выполнить и тотальное обновление системы – этой цели служат операторы upgrade и dist-upgrade. Как и в apt-get, первый обновит все установленные пакеты в том случае, если это не влечет за собой новых, противоречащих наличным, зависимостей. Оператор же dist-upgrade выполнит принудительное обновление системы. В обоих случаях удалению подвергнутся также автоматически установленные пакеты, от которых больше ничего не зависит.

Позволяет aptitude избавиться и от промежуточных продуктов собственной жизнедеятельности – скачанных из Сети deb-архивов; для этого предназначены операторы clean и autoclean.

И, наконец, еще пара операторов, не имеющих аналогов в инструментарии apt: markauto и unmarkauto. Первый помечает пакет или их группу как установленные автоматически в качестве зависимостей. Так, командой

$ sudo aptitude markauto ’~slibs’

в качестве автоматически установленных будут помечены все пакеты с компонентом libs в имени – то есть практически все библиотеки. Следствием чего явится автоматическое удаление неиспользуемых библиотек после деинсталляции последнего зависимого от них пакета.

Если же для некоторых библиотек это по каким-либо причинам нежелательно, их можно «размаркировать» командой

$ sudo aptitude unmarkauto pkg_name

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

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

$ man 8 aptitude

Ранее уже говорилось, что по умолчанию при использовании aptitude с любыми операторами инсталляции устанавливаемый пакет тянет за собой не только «жесткие», обязательные, зависимости, но и изрядную часть «мягких» – тех, которые майнтайнер пакета посчитал нужным включить в категорию recommends. Что не всегда желательно.

Избежать принудительного выполнения «рекомендаций» можно с помощью опции -R, данной в командной директиве установки конкретного пакета. Если же игнорирование «рекомендаций» требуется всегда – это можно будет запечатлеть в конфигурационном файле. Как именно – будет сказано чуть ниже. Пока же допустим, что мы уже изменили умолчальное поведение aptitude – теперь операторы инсталляции учитывают только «жесткие» (depends) зависимости.

Однако для некоторых пакетов все же желательно установить все рекомендуемые зависимости – например, в случае малознакомых пакетов, с которыми просто лень разбираться. В этом случае можно прибегнуть к опции -r (--with-recommends), которая инвертирует действие опции -R – то есть заставит установить все рекомендуемые зависимости.

Должен предупредить: применение опции -R к установленной системе Ubuntu/Kubuntu требует осторожности. Базовая ее инсталляция осуществляется по принципу «плюс recommends». И применение к ней aptitude -R делает как бы «ненужными» многие пакеты. Одни из них – действительно (на мой взгляд) лишние. Однако в «черный список» могут попасть и нужные библиотеки. Так что перед тем, как нажать <Enter> в ответ на предложение

Хотите продолжить? [Y/n/?]

внимательно прочтите весь предшествующий ему вывод.

Тем не менее, вполне возможно, что по разрешении указанных противоречий, опцию -R все же захочется сделать умолчальной. Для этого нужно внести изменения в конфигурационные файлы aptitude. Вообще-то aptitude обращается к тем же конфигам, что и apt (/etc/apt/sources.list, /etc/apt/apt.conf),однако имеет и собственный – ~/.aptitude/config. По умолчанию он пуст, но может быть отредактирован по потребностям. В частности, для придания опции -R статуса по умолчанию, в этот файл следует внести такую строку:

aptitude::Recommends-Important «false»;

К слову сказать, можно, напротив, сделать так, чтобы при установке пакета автоматически инсталлировались также и «предлагаемые» (suggest) зависимости. Это достигается строкой

aptitude::Suggests-Important «true»;

Вообще-то опций конфигурирования для aptitude предусмотрено великое множество – и многие из них применимы не только к командному, но и к интерактивному режиму, позволяя настроить внешний вид интерфейса и многое другое. Ознакомиться с полным набором опций конфигурирования aptitude и их умолчальными значениями можно в официальной документации – она влючена в состав дистрибутива и находится в каталоге /usr/share/doc/aptitude/html/{lang}/. Здесь под {lang} подразумевается язык документа – кроме английской (en) версии, в репозитории Ubuntu существуют переводы его на французский, финский и чешский языки; кстати, в репозитории Debian русской версии этого документа также не обнаруживается. А текущие настройки можно посмотреть в файле /usr/share/aptitude/aptitude-defaults.

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

Правда, тут я хотел бы отметить: совместное использование aptitude и apt видится мне нежелательным. То есть, по завершении настройки aptitude и приведении пакетного хозяйства с соответствие с ними к командам apt-get и apt-cache лучше не прибегать. Команда же apt-cache будет выдавать информацию в соответствие с настройками aptitude, а не умолчаниями apt – в частности, зависимости в выводе apt-cache show будут показываться так, как они описаны в файле ~/.aptitude/conf.

Что же до интерактивного режима aptitude, требующего запоминания многочисленных горячих клавиш, – это на любителя. Хотя в некоторых случаях – например, при чистке системы от категорий пакетов – и он может оказаться незаменимым.

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

Оглавление книги


Генерация: 1.193. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз