- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF83:APTITUDE
Материал из Linuxformat.
Снова aptitude: Режим командной строки
Одна из отличительная особенностей дистрибутивов семейства Debian – разнообразие средств управления пакетами. Однако в последнее время в качестве такового рекомендуется aptitude – надстройка над apt, работающая в текстовом режиме. Она предполагает два метода использования – интерактивный и командный. Первый был подробно описан Тихоном Тарнавским (LinuxFormat, #5(79), 2006). Алексей Федорчук остановится только на командном методе, затронутом в том материале лишь вкратце.
Командный метод использования aptitude будет непривычен тому, кто знаком с утилитами apt-get и apt-cache: конструкция ее директив предполагает наличие оператора и, для некоторых из последних, также аргумента – имени пакета или ключевого слова.
Особенности aptitude в сравнении с утилитами apt проще всего рассмотреть на примереконкретных командных директив.
Резонные люди обычно начинают работу с пакетами поиском нужного для установки. В случае с aptitude это делается так:
$ aptitude search keyword
ответом на что будет список всех пакетов, в названии или описании которых имеется указанное ключевое слово, с краткой характеристикой. Почти как в apt, но вывод aptitude содержит информацию о текущем состоянии пакета. Например:
$ aptitude search term
выдаст примерно такой список (рис. 1)
Пакеты, маркированные литерой 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, требующего запоминания многочисленных горячих клавиш, – это на любителя. Хотя в некоторых случаях – например, при чистке системы от категорий пакетов – и он может оказаться незаменимым.
В заключение я хотел бы выразить признательность Тихону Тарнавскому, благодаря которому я преодолел скептическое отношение к этой замечательной программе.