Настройка списка пакетов

Настройка того, как отображаются пакеты
Настройка иерархии пакетов
Настройка того, как сортируются пакеты

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

Настройка того, как отображаются пакеты

Этот раздел описывает то, как настроить содержание и формат списка пакетов, строку статуса и строку заголовка, а также вывод командыaptitude search.

Формат каждой из этих ячеек определяется «форматной строкой». Форматная строка представляет собой строку текста, содержащую %-экранирование, например, %p, %S и так далее. Окончательный вывод создается путем принятия текста и замены %-экранирований согласно их значениям (приведенным ниже).

%-экранирование может иметь либо фиксированный размер, в этом случае оно будет заменено тем же количеством текста (с дополнительными символами пробела, добавленными для полного заполнения этого размера, если это необходимо), или оно может быть «расширяемым», последнее означает, что оно примет размер не затребованный столбцами с фиксированным размером. Если имеются несколько расширяемых столбцов, дополнительные пробелы распределяются между ними поровну.

Все %-экранирования имеют размер по-умолчанию и/или возможность растяжения. Размер %-экранирования может быть изменен путем ввода соответствующего числа между % и символом, определяющим экранирование; например, %20V создает вывод версии-кандидата пакета шириной 20 символов. Помещение знака вопроса (?) между % и символом, определяющем экранирование, приведёт к тому, что «базовая» ширина столбца будет изменяться в зависимости от его содержания. Заметьте, что получившиеся столбцы могут быть не выравнены по вертикали!

Если вы хотите, чтобы определенное %-экранирование было расширяемым, даже несмотря на то, что обычно оно имеет фиксированную ширину, поместите непосредственно после него знак решётки (то есть, «#»). Например, чтобы отобразить версию-кандидат некоторого пакета, не важно, какой длины, используйте форматную строку %V#. Вы также можете поместить # после того, что не является %-экранированием; aptitude «растянет» текст, предшествующий #, вставив после него дополнительные пробелы.

Таким образом, синтаксис %-экранирования таков:

%[ширина][?]код[#]

Переменные настройки Aptitude::UI::Package-Display-Format, Aptitude::UI::Package-Header-Format и Aptitude::UI::Package-Status-Format определяют соответственно формат списка пакетов по умолчанию, заголовка в верхней части списка пакетов и строки состояния в нижней части списка пакетов. Для изменения того, как отображатся результаты выполнения команды aptitude search, используйте опцию -F.

В форматных строках доступны следующие %-экранирования:

[Примечание]Примечание

Некоторые описания, приведенные ниже, указывают на «пакет». В графическом интерфейсе это либо отображаемый пакет, либо пакет, выбранный в текущий момент; при поиске через командную строку, это отображаемый пакет.

ЭкранированиеИмяРазмер по-умолчаниюРасширямостьОписание
%%Литерал %1Нет В действительности, это не экранирование; оно просто вставляет знак процента в вывод в том месте, где вы его поставите.
%#числоЗамена параметраПеременнаяНет В некоторых обстоятельствах строка формата отображения будет иметь «параметры»: например, при поиске в командной строке, группы, соответствующие поиску, используются в качестве параметров при отображении результата поиска. Этот код формата будет заменен параметром, обозначенным числом.
%aФлаг действия1Нет Флаг в один символ длинной, резюмирующие любое действие, выполняемое над пакетом, описание в Рисунок 2.10, «Значения флага «действие»».
%AДействие10Нет В некотором смысле более подробное описание действия, которое будет выполнено над пакетом.
%BСчетчик сломанных пакетов12Нет Если сломанных пакетов нет, не выводит ничего. В противном случае, вызывает строку вида «Сломано: 10», характеризующую число сломанных пакетов.
%cФлаг текущего состояния1Нет Флаги в один символ длинной, резюмирующие текущее состояние пакета, описание в Рисунок 2.9, «Значения флага «текущее состояние»».
%CТекущее состояние11Нет Более подробное описание текущего состояния пакета.
%dОписание40Да Короткое описание пакета.
%DРазмер пакета8Нет Размер пакетного файла, содержащего пакет.
%EАрхитектура10Нет Выводит строку с архитектуров, например, «amd64».
%eПакет с исходным кодом30Нет Выводит пакет с исходным кодом, например, «aptitude» для «aptitude-doc-en».
%HИмя узла15Нет Имя компьютера, на котором запущен aptitude.
%iPin-приоритет4Нет Отображает наивысший приоритет, назначенный версии пакета; для пакетов, отображает приоритет версии, которая будет установлена (если таковая имеется).
%IРазмер в установленном виде8Нет (Предполагаемое) количество места, занимаемое пакетом на диске.
%mСопровождающий30Да Сопровождающий пакета.
%MФлаг автоматической установки1Нет Если пакет установлен автоматически, выводит «A»; в противном случае, не выводит ничего.
%nВерсия программыДлина «0.8.13».Нет Выводит версию aptitude, работающую в настоящий момент, в настоящее время «0.8.13».
%NИмя программыДлина имени.Нет Выводит имя программы; обычно «aptitude».
%oРазмер для загрузки17Нет Если ни один пакет не будет установлен, не выводит ничего. В противном случае, выводит строку, характеризующую общий размер всех пакетных файлов, которые будут установлены (приблизительный подсчет того, сколько должно быть загружено); например, «DL размер: 1000B».
%OИсточник30Нет Выводит строку с источником пакета, например, «Debian:unstable [amd64]».
%pИмя пакета30Да Выводит имя пакета. Когда пакет отображается в контексте дерева, имя пакета будет выделено отступом, если это возможно, в соответствии с глубиной его положения в дереве.
%PПриоритет9Нет Выводит приоритет пакета.
%rЧисло обратных зависимостей2Нет Выводит приблизительное число установленных пакетов, зависящих от данного пакета.
%RПриоритет в сокращенном виде3Нет Выводит сокращенное описание приоритета пакета: например, «Important» заменяется на «Imp».
%sРаздел10Нет Выводит раздел пакета.
%SСтатус доверия1Нет Если пакет ненадежен, отображает символ "U".
%tАрхив10Да Архив, в котором находится пакет.
%TФлаг метки (также пользовательские метки)30Нет

Выводит «*», если пакет отмечен тегом, в противном случае не выводит ничего.[19]

Данное поле также включает в себя пользовательские метки.

%uИзменение использования диска30Нет Если запланированные действия изменят количество места на диске, выводит характеристику изменения дискового пространства; например, «Будет использовано 100MB дискового пространства.»
%vТекущая версия14Нет Выводит версию пакета, установленную в настоящий момент, либо выводит <none>, если пакет не установлен.
%VВерсия-кандидат14Нет Выводит версию пакета, которая была бы установлена, если бы была выполнена команда ПакетУстановить (+) на данном пакете, либо выводит <none>, если пакет в настоящее время недоступен.
%ZИзменение размера9Нет Выводит количество дополнительного дискового пространства, которое будет использовано, либо освобождено установкой, обновлением или удалением пакета.

Настройка иерархии пакетов

Иерархия пакетов создаётся политикой группировки: правилами, описывающими то, как должна строится иерархия. Политика группировки описывает «конвейер» правил; каждое правило может отбрасывать пакеты, создавать иерархии нижнего уровня, внутрь которых помещаются пакеты, или, в противном случае, управлять деревом пакетов. Пункты настройки Aptitude::UI::Default-Grouping и Aptitude::UI::Default-Preview-Grouping устанавливают политики группировки для заново создаваемых списков пакетов и, соответственно, экранов предварительного просмотра. Вы можете установить политики группировки для текущего списка пакетов, нажав G.

Политики группировки описываются списком правил, разделенных запятыми: правило1,правило2,.... Каждое правило состоит из имени правила, за которым, возможно, следуют аргументы: например, версии или раздел(подкаталог). Требуются ли аргументы и то, сколько их требуется (либо возможно), зависит от типа правила.

Правила могут быть нетерминальными или терминальными. Нетерминальное правило обработает пакет, создав некоторую часть иерархии, и передаст потом пакет следующему правилу. Терминальное правило, с другой стороны, также создаст часть дерева (обычно пункты, соответствующие пакетам), но не передаст после этого пакет следующему правилу. Если ни одно терминальное правило не определено, aptitude будет использовать правило по-умолчанию, которое должно создать стандартные «пакетные пункты».

action

Группирует пакеты соответственно действию, запланированному для выполнения на них; пакеты, которые не могут быть обновлены и останутся неизменёнными, будут проигнорированы. Это группировка, использующаяся в деревьях предварительного просмотра.

architecture

Группирует пакеты согласно их архитектуре.

deps

Это терминальное правило.

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

filter(шаблон)

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

Если шаблон «отсутствует», ни один пакет не будет отброшен. Эта особенность нужна для обратной совместимости и может быть удалена в будущем.

firstchar[(режим)]

Группирует пакет, основываясь на первом символе их имени.

Если быть точным, то это не всегда первая буква — для пакетов, начинающихся на lib* именем группы будет liba, libb, ... как в FTP-архиве Debian.

режим может быть одним из следующих:

binary

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

Пример 2.7. Правило группировки firstchar или firstchar(binary)

Если взять пакет с исходным кодом dpkg в качестве примера, то двоичные пакеты, dselect, dpkg и dpkg-dev, будут помещены в группу d, а двоичные пакеты libdpkg-dev и libdpkg-perl будут добавлены в группу libd.


source

Группировка по именам пакетов с исходным кодом.

Полезно добавлять промежуточные шаги группировки, например, когда просматриваются пакеты, созданные из одного и того же пакета с исходным кодом (правило группировки source), в больших наборах пакетов (примеры: все установленные пакеты, все пакеты с доступными обновлениями, все пакеты их раздела «main»). Так можно, например, эмулировать иерархию FTP-архива (попробуйте группировку "section(topdir),firstchar(source),source").

Пример 2.8. Правило группировки firstchar(source)

Опять же, при выборе пакета с исходным кодом dpkg все двоичные пакеты, dselect, dpkg, dpkg-dev, libdpkg-dev и libdpkg-perl, будут сгруппированы в d.


pattern(шаблон [=> заголовок] [{ правило }] [, ...])

Настраиваемая политика группировки. Каждая версия всякого пакета проверяется относительно данного шаблона. Первое найденное соответствие используется для того, чтобы назначить заголовок пакету; затем пакеты группируются по их заголовкам. Строки вида \N, встречающиеся в заголовке будут удалены N-ым результатом соответствия. Если заголовок отсутствует, считается, что он равен \1. Заметьте, что пакеты, которые не соответствуют ни одному шаблону вообще не будут отображены в дереве.

Пример 2.9. Использование pattern для группировки пакетов по сопровождающему

pattern(?maintainer() => \1)


Пример, приведенный выше группирует пакеты согласно их полю Сопровождающий. Правило pattern(?maintainer()) сделает то же самое, так как отсутствующий параметр title по-умолчанию принимается равным \1.

Вместо => заголовок, запись может заканчиваться ||. Это показывает, что пакеты, подпадающие под соответствующий шаблон будут вставлены в дерево того же уровня, что группирующий шаблон, а не будут помещены в поддеревья.

Пример 2.10. Использование pattern с некоторыми пакетами, помещенными на верхний уровень

шаблон(?action(remove) => Удаляемые пакеты, ?true ||)


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

По-умолчанию все пакеты, соответствующие каждому шаблону группируются согласно правилам, которые следуют за политикой pattern. Чтобы определить отличную политику для некоторых пакетов, введите эту политику в скобки ({}) после заголовка группы, после ||, или после шаблона, если и то, и другое отсутствует. Например:

Пример 2.11. Использование политики группировки pattern с подполитиками

pattern(?action(remove) => Удаляемые пакеты {}, ?action(install) => Устанавливаемые пакеты, ?true || {status})


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

  • Удаляемые пакеты помещаются в поддерево, обозначенное «Удаляемые пакеты»; политика группировки для этого поддерева пуста, поэтому пакеты помещаются в него в виде обычного списка.

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

  • Все оставшиеся пакеты помещаются на верхний уровень дерева и группируются в соответствии с их статусом.

Дополнительную информацию о формате pattern см. в разделе «Поисковые шаблоны» .

priority

Группирует пакеты согласно их приоритету.

section[(режим[,passthrough])]

Группирует пакеты согласно их полю Раздел

режим может быть одним из следующих:

none

Группа основывается на всем поле Раздел, поэтому будут созданы такие категории как «non-free/games». Если режим не определен, данный режим используется по умолчанию.

topdir

Группа основывается на части поля Раздел до первого символа /; если эта часть Раздела не распознана, или если её нет /, будет использоваться первая запись в списке Aptitude::Sections::Top-Sections.

subdir

Группа основывается на части поля Раздел после первого символа /, если она содержится в списке Aptitude::Sections::Top-Sections. Если же нет, или если отсутствует /, группа основывается на всем поле Раздел.

subdirs

Группа основывается на части поля Раздел после первого символа /, если часть поля, предшествующая ей содержится в списке Aptitude::Sections::Top-Sections; если нет, или если отсутствует /, используется все поле. Если имеют место несколько символов / в части используемого поля, будет сформирована иерархия групп. Например, если «games» не является членом Aptitude::Sections::Top-Sections, то пакеты с разделом «games/arcade» будут помещены подзаголовок высшего уровня «games», в подраздел, названный «arcade».

Если имеет место passthrough, пакеты, которые по какой-то причине не имеют действительного Раздела (например, виртуальные пакеты), будут переданы напрямую следующему уровню группировки без размещения их по подкатегориям.

status

Группирует пакеты по следующим категориям:

  • Обновления, связанные с безопасностью

  • Обновляемые

  • Новый

  • Установленные

  • Не установленные

  • Устаревшие и пакеты, созданные локально

  • Виртуальные

source

Группирует пакеты, согласно имени пакета с исходным кодом.

tag[(аспект)]

Группирует пакеты в соответствии с теговой информацией, хранящейся в пакетных файлах Debian. Если задан аспект, то будут отображены только теги, соответствующие этому аспекту, а пакеты, не имеющие этого аспекта, будут скрыты; в противном случае, все пакеты будут отображены по меньшей мере один раз (безтеговым списком пакетов отдельно от пакетов, имеющих теги).

Дополнительную информацию о debtags см. на http://debtags.alioth.debian.org.

task

Создает дерево с названием «Задачи», содержащее доступные задачи (информация о задачах считывается из файла debian-tasks.desc в пакете tasksel). Правило, следующее за задачей создает категорию задачи в качестве потомка дерева Задач.

versions

Это терминальное правило.

Создает стандартный пакетный объект, который может быть расширен для показа версий пакета.

Настройка того, как сортируются пакеты

По-умолчанию пакеты в списке пакетов или в выводе команды aptitude search сортируются по имени. Тем не менее, часто полезно сортировать их в соответствии с другими критериями (например, размером пакета), и aptitude позволяет вам это делать путем изменения политики сортировки.

Подобно политике группировки, описанной в предыдущем разделе, политика сортировки представляет собой список, в котором элементы разделены запятыми. Каждый объект в списке является именем правила сортировки; если пакеты «идентичны» согласно первому правилу, используется второе правило для сортировки этих пакетов, и так далее. Помещение символа тильды (~) перед правилом, обращает обычное значение этого правила. Например, priority,~name отсортирует пакеты по приоритету, но пакеты с одним и тем же приоритетом будут помещены в обратом порядке относительно имени.

Чтобы изменить политику сортировки активного списка пакетов, нажмите S. Чтобы изменить сортировку по-умолчанию для всех списков пакетов, установите опцию настройки Aptitude::UI::Default-Sorting. Чтобы изменить политику сортировки aptitude search, используйте опцию командной строки --sort.

Доступные правила таковы:

installsize

Сортирует пакеты по приблизительному размеру, необходимому после установки.

installsizechange

Сортирует пакеты по изменению размера в установленном виде (приблизительный размер места на диске, который будет занят после выполнения установки), сравнивая текущую версию (если она установлена) и версию-кандидата, которая будет установлена, обновлена или удалена.

debsize

Сортирует пакеты по размеру пакета.

name

Сортирует пакеты по имени.

priority

Сортирует пакеты по приоритету.

version

Сортирует пакеты согласно номеру их версии.



[19] В настоящий момент отметки тегами не поддерживаются; для будущего использования.