Хинты aptitude

Изображение пользователя Soi-Fong.

Чем aptitude лучше apt-get и даже adept? А вот чем!
При более детальном изучении манов по аптитуду, выявились удобные хинты для работы с пакетами. Речь пойдет об интерфейсе командной строки, а не о псевдографическом интерфейсе, второй я считаю неудобным. Я тут расскажу только о некоторых фичах, которые могут понадобиться в повседневной жизни линуксойда, это будет всего лишь малая часть того, что умеет всемогущий аптитуд :)

Для удобного поиска аптитуд использует что-то смахивающее на функции (начинаются на "?"), которые в краткой форме имеют вид префиксов (начинаются на "~") к поисковым запросам. Рассмотрим только краткую форму, она наиболее применима:
~nимя - ищет пакеты, в имени которых есть слово "имя"
~dописание - ищет пакеты, в описании которых есть слово "описание"
~iимя - ищет среди установленных пакетов
~Vверсия - ищет пакеты, в версии которых есть слово "версия" (V - здесь именно большая)
!запрос - ищет пакеты, в которых отсутствует данный запрос
~iзапрос - ищет среди установленных пакетов. Можно искать среди неустановленных, используя отрицание '!~iзапрос'.
~Rзапрос - показывает зависимости пакетов, которые попали в запрос.
~sкатегория - ищет в определенной категории
'один два' - ищет пакеты, которые содержат слова "один" и "два", к этим словам так же применимы вышеописанные префиксы.
'один | два' - ищет пакеты, которые содержат слова "один" или "два", префиксы тоже применимы.
Надо заметить, что при использовании некоторых символов, например, скобок или |, баш будет воспринимать их как свои операторы, поэтому запросы с такими символами надо заключать в кавычки, так же пробел, чтобы не играл роль разделителя, а по назначению использовался в поисковом запросе, поисковый запрос надо заключать в кавычки. В общем, всегда используйте кавычки, при чем одинарные. Опускать стоит только для удобства при простых односложных запросах, или запросах вида ~nодин~nдва, здесь пробел не обязателен.
Предположим, нам надо найти ftp-сервер без поддержки ssl из репозитория ubuntu, а у нас подключено много репозиториев (обычно в версии указывается репозиторий, например acetoneiso_2.0.2-0~getdeb1_i386.deb).

aptitude search '~nftpd ~d!ssl ~Vubuntu'

Кстати, при установке и удалении пакетов тоже можно использовать эту систему запросов.
Давайте установим все возможные игрушки О_О

aptitude install ~sgame

Для удобного вывода результата аптитуд использует шаблоны, которые указываются в параметре -F:
%p - имя пакета
%d - описание пакета
%V - версия пакета в репозитории
%v - версия установленного у вас пакета
%D - размер пакета
%I - размер пакета после установки
%M - показывает, что пакет был установлен автоматически

Если параметр -F не указан, то используется стандартный шаблон: '%c%a%M %p# - %d#', символ # расширяет вывод на всю ширину консоли
Описание флага %c на английском (первая колонка в выводе списка пакетов):
i - the package is installed and all its dependencies are satisfied.
c - the package was removed, but its configuration files are still present.
p - the package and all its configuration files were removed, or the package was never installed.
v - the package is virtual.
B - the package has broken dependencies.
u - the package has been unpacked but not configured.
C - half-configured: the package's configuration was interrupted.
H - half-installed: the package's installation was interrupted.

Описание флага %a на английском (вторая колонка):
i - the package will be installed.
u - the package will be upgraded.
d - the package will be deleted: it will be removed, but its configuration files will remain on the system.
p - the package will be purged: it and its configuration files will be removed.
h - the package will be held back: it will be kept at its current version, even if a newer version becomes available, until the hold is cancelled.
F - An upgrade of the package has been forbidden.
r - the package will be reinstalled.
B - the package is “broken”: some of its dependencies will not be satisfied. aptitude will not allow you to install, remove, or upgrade anything while you have broken packages.

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

aptitude -F '%p' search '!~i~Rkubuntu-desktop'

Можно сказать аптитуду автоматически положительно отвечать на возникающие во время установки вопросы с помощью параметра -y, хотя, я бы не рисковал так делать на рабочей системе, но для экспериментов на виртуалке подойдет.

aptitude -y install gnome

Можно посмотреть детальную информацию о пакете:

aptitude show apache2

Если в имени пакета есть спецсимволы, то надо использовать экранирование, при чем кавычки обязательны:

aptitude search 'g\+\+'

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

Аптитуд еще много чего умеет, умеет работать с переменными, так даже можно найти пакеты, которые конфликтуют сами с собой :) пример из документации:

aptitude search '?for x: ?conflicts(?=x)'

Если кто-то хочет использовать всю мощь этого менеджера пакетов, то рекомендую к изучению его документацию, которая находится в пакете aptitude-doc-en (русского нету :( ) и после установки будет доступна по адресу: file:///usr/share/doc/aptitude/html/en/index.html
Ну и конечно, man aptitude

Комментарии (2)

+3
Condor - 10 Январь, 2009 - 00:52
Изображение пользователя Condor.

aptitude install ~sgame
Делать не надо! 00
Половину нужных пакетов потрёт из-за конфликтов при попытке ставить пакеты под 3 кеды %0((

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры