APT-PATTERNS(Имяреки apt-а)
26 декабря 2021
ИМЯ
apt-patterns - словосочетания и их смысл в поисковых имяреках у apt-а
(apt search patterns).
# Не путать с apt_preferences.
ОПИСАНИЕ
Начиная с версии 2.0, APT получил возможность применять имяреки(patterns), которые могут быть использованы для запроса доступной наличности пакетов в apt(apt-cashe).
Про доступную наличность, читаем выхлоп команды „apt-cache“:
команда apt-cache не подключена постоянно к сети, а подгружает пакеты только по команде apt-cahe update(обновлять), так что перед скачиванием пакетов обновитесь! Это же относится и к команде apt.
ИМЯРЕКИ ЛОГИКИ(LOGIC PATTERNS)
Данные имяреки(patterns) содержат простые значения, которые можно
сочетать в более сложных выражениях. Это такие значения как
?true(правда) и ?false(ложь).
?and(PATTERN, PATTERN, ...), PATTERN PATTERN ...
?и(ИМЯРЕК, ИМЯРЕК, ...) либо ИМЯРЕК ИМЯРЕК ... # пробел, это "и"
Выбор названий согласно всем перечисленным имярекам: и первому и второму и т.д.
?false, ~F ?ложь, ~Л
Ничего не выбирает. Используется с чем-то ещё.
?not(PATTERN), !PATTERN ?не(ИМЯРЕК) , !ИМЯРЕК # !, это "не"
Выбрать названия в которых нет указанного имярека.
?or(PATTERN, PATTERN, ...), PATTERN | PATTERN | ...
?или(ИМЯРЕК, ИМЯРЕК, ...) либо ИМЯРЕК | ИМЯРЕК | ... # |, это "или"
Выбрать названия, в которых есть хоть какой-то из перечисляемых имяреков: или тот, или этот,....
?true, ~T ?правда, ~П
Выбрать все названия. Применяется с чем-то ещё.
(PATTERN) (ИМЯРЕК)
Выбрать точно по имяреку. Можно использовать для поиска в нужном
порядке, например " (~ramd64|~ri386)~nfoo ".
По имени пакета "~n" foo найти его версии по архитектуре "~r": md64 или i386. Описание "~n" и "~r" даны ниже ИМЯРЕКАХ ПАКЕТОВ.
УТОЧНЕНИЯ ИМЯРЕКОВ (NARROWING PATTERNS)
?all-versions(PATTERN) ?все-исполнения(имярек)
Выбрать пакеты, все исполнения(versions), которых соответствуют имяреку(PATTERN). Если указывать номера исполнений, то все пакеты согласно им. Можно использовать с "?widen"(раширять).
?any-version(PATTERN) ?каждое-исполнение(имярек)
Выбрать каждое исполнение(version), если имярек указывает на это исполнение. Повторяет предыдущее. Можно использовать с ?narrow(сужать). Соответствие:
?any-version(pattern1 pattern2) == ?narrow(pattern1, pattern2).
Пример:
?and(?version(1),?version(2) # ищет пакет с исполнениями "1" и "2".
?any-version(?and(?version(1),?version(2))) # заставляет логическое ?and(и) искать только то исполнение в котором есть и "1" и "2".
?narrow(PATTERN...) ?сужать(имярек...)
Выбрать хотя бы одно исполнение, которое соответствует всем имярекам.
Соответствие:
?narrow(PATTERN...) == ?any-version(?and(PATTERN...)).
ИМЯРЕКИ ПАКЕТОВ
Данные имяреки выбирают нужные(specific) пакеты.
?architecture(WILDCARD), ~rWILDCARD
?архитектура(ЗНАЧОК), ~рЗНАЧОК
Выбрать пакеты с соответствующей архитектурой(amd64, i386); можно
дополнительно применять любые значки(wildcards).
?automatic, ~M ?автоматически, ~М
Выбрать автоматически установленные пакеты.
?broken, ~b ?сломанные, ~c
Выбрать пакеты со сломанными зависимостями
?config-files, ~c ?конфигурационные-файлы, ~к
Выбрать пакеты, от которых остались конфигурационные файлы, а
не сами пакеты.
?essential, ~E ?существенные, ~Щ
Выбрать пакеты, у которых прописана строка Essential:yes(да) в их
управляющем файле( control file).
?exact-name(NAME) ?точное-имя(ИМЯ)
Выбрать пакеты строго по указанному имени.
?garbage, ~g ?отходы, ~д
Выбрать пакеты, которые можно удалять автоматически
?installed, ~i ?установленный, ~у
Выбрать установленные у вас пакеты
?name(REGEX), ~nREGEX ?имя(РЕГВЫР), ~яРЕГВЫР
Выбрать пакеты по имени заданном в регулярном выражении.
?obsolete, ~o ?отживший, ~ж
Выбрать пакеты, которых нынче нет в хранилищах(repositories)
?upgradable, ~U ?обновляемые, ~О
Выбрать пакеты, которые можно обновить(есть свежий на замену).
?virtual, ~v ?вируальный, ~в
Выбрать все виртуальные пакеты; что означает пакеты без исполнения(version).
Это возможно, когда на такие пакеты приходят ссылки откуда-то из хранилища; например, какие-то настоящие пакеты зависят от такого, с чистым именем. (Для разрешения конфликтов зависимостей между настоящими пакетами).
ИМЯРЕКИ ИСПОЛНЕНИЙ (VERSION PATTERNS)
Данные имяреки выбирают нужные исполнения пакетов(specific versions).
?archive(REGEX), ~AREGEX ?хранилище(РЕГВЫР), ~ХРЕГВЫР
Выбрать исполнения(versions), которые находятся в том хранилище,
которое указано в записи регулярного выражения(regular expression).
Под хранилищем(archive) здесь подразумевается значение в поле
"a=" в выводе команды: $ apt-cashe policy .
# например: a=stable, a=impish и т.п.
* Это поле указывает к какому выпуску вашего дистрибутива
(распределителя) относятся пакеты в хранилищах(к которым вы подключены); в выводе команды указывается ещё старшинство хранилищ виде цифр и даны ссылки на хранилища.
Команда apt-cache policy для отдельного пакета, например:
$ apt-cache policy nemo
показывает установлен он или нет, какие версии пакета доступны и из каких хранилищ, и старшинство хранилищ(цифры 100, 500 и т.д.).
По умолчанию установленный пакет имеет старшинство 100;
это ваше хранилище, содержимое которого описано в файле
/var/lib/dpkg/status), а неустановленный -500; три звёздочки: ***
указывают на номер исполнения(version) установленного пакета. См. ещё
$ man apt_preferences # это файл /etc/apt/preferences
?codename(REGEX) ?кличкаимя(РЕГВЫР)
Выбрать исполнения пакетов по их кличке, которая указана в записи
регулярного выражения(regular expression).
Под кличкой(codename) здесь подразумевается значение в поле "n=" в
выводе команды: $ apt-cache policy .
# например: n=stable, n=impish и т.п.
* Кличка(codename)-это имя присвоенное выпуску, в котором вы
работаете или подключили в качестве дополнительного хранилища.
**Значения полей "a=" и "n=" могут быть:
"a=stable,n=impish" или "a=impish,n=impish" и т.п.; поле "a=" может
отсутствовать у хранилищ-сайтов.
?origin(REGEX), ~OREGEX ?происхождение(РЕГВЫР) либо ~ПРЕГВЫР
Выбрать исполнения(versions) пакетов·по·их·происхождению(origin),
которое·указано·в·записи регулярного·выражения(regular·expression).
Под происхождением(origin) здесь подразумевается значение в поле
"o=" в выводе команды: $ apt-cache policy .
# например: "o=Ubuntu", "o=LP-PPA..." - для "ppa.launchpad.net" и др.
?section(REGEX), ~sREGEX ?раздел(РЕГВЫР), ~рРЕГВЫР
Выбрать исполнения пакетов(versions) по их разделу(section),
которое указано в записи регулярного выражения(regular expression).
Примеры разделов: doc, net и другие.
Посмотреть разделы можно командой:
$ apt search --display-format '%s' ~T | sed 's/\/.//' | sort | uniq
# Эта команда взята из aptitude:
# $ aptitude search --display-format '%s' \~T | sed 's/\/.*//' | sort | uniq
# Отличие - здесь есть звёздочка „*“ и избегается тильда „\~“.
Про тильду см. „ПЕРЕНОС ИЗ ПОСОБНИКА“;
про звёздочку-проверено на Linux Mint.
Посмотреть вместе с отделом архива в виде area/section
$ apt search --display-format '%s' --disable-columns ~T | sort | uniq
# Эта команда взята из aptitude:
# $ aptitude search --display-format '%s' --disable-columns \~T | sort | uniq
# Отличие - здесь избегается тильда „\~“.
Про тильду см. „ПЕРЕНОС ИЗ ПОСОБНИКА“.
Или на https://www.debian.org/doc/debian-policy/ch-archive.html
# В описании пакетов поле для обозначения раздела(section) каждого пакета содержит:
- название_раздела(section), если пакет относится к главному(main) хранилищу и
- отдел/название_раздела(area/section), если пакет относится к хранилищам contrib и non-free; для Debian.
Для Ubutu это: main, restricted, universe, multiverse.
?source-package(REGEX), ~eREGEX ?исходники-пакета(РЕГВЫР), ~еРЕГВЫР
Выбрать исполнения пакетов(versions) среди их исходников(sourse package), имена которых указаны в записи регулярного выражения (regular xpression).
?source-version(REGEX) ?исходники-исполнение(РЕГВЫР)
Выбрать исполнения пакетов(versions) среди исходников, по иcполнениям пакетов(package version), которое указано в записи регулярного выражения(regular expression).
?version(REGEX), ~VREGEX ?исполнение(РЕГВЫР), ~И(РЕГВЫР)
Выбрать исполнения пакетов(versions) по их исполнению(version),
которое указано в записи регулярного выражения(regular expression).
?priority(NAME), ~pNAME ?важность(ИМЯ) либо ~вИМЯ
Выбрать исполнения пакетов(versions) по их важности(Priority), которая
прописана в имени(name).
** Важность пакетов:
необходимый(required)->обязательный
важный(important)
стандартный(standard)->обычный
дополнительный(optional)->на выбор
необязательный(extra)->добавочный
Неизвестно(Unknown)
Важность пакетов дана в переводе команды aptitude->верный перевод.
Важность(очерёдность) пакетов можно посмотреть в русском переводе:
$ apt search --display-format '%P' ~T | sort | uniq
# Эта команда взята из aptitude:
# $ aptitude search --display-format '%P' \~T | sort | uniq
# Отличие - здесь избегается тильда „\~“. Про тильду см. „ПЕРЕНОС ИЗ ПОСОБНИКА“.
Это связано с тем, что команда aptitude хорошо русифицирована. Чтобы посмотреть соответствующие названия важности(priority) по-английски:
$ env LANGUAGE=en_RU.UTF-8 apt search --display-format '%P' ~T | sort | uniq
# Эта команда взята из aptitude:
# $ env LANGUAGE=en_RU.UTF-8 aptitude search --display-format '%P' \~T | sort | uniq
# Отличие - здесь избегается тильда „\~“. Про тильду см. „ПЕРЕНОС ИЗ ПОСОБНИКА“.
ВЗАИМОСВЯЗИ МЕЖДУ ПАКЕТАМИ в ИМЯРЕКАХ(PACKAGE RELATIONSHIP PATTERNS)
Эти имяреки(patterns) служат для поиска указанных ниже особенностей
исполнений пакетов(package versions), таких как зависит/конфликтует
(depend/conflict) с другими пакетами.
?depends(PATTERN), ~DPATTERN, зависит
?pre-depends(PATTERN),~DPre-Depends:PATTERN, предзависит
?suggests(PATTERN), ~DSuggests:PATTERN, советует
?conflicts(PATTERN), ~DConflicts:PATTERN, конфликтует
?replaces(PATTERN), ~DReplaces:PATTERN, подставляет
?obsoletes(PATTERN), ~DObsoletes:PATTERN, отсутствует
?breaks(PATTERN), ~DBreaks:PATTERN, ограничивает
?enhances(PATTERN), ~DEnhances:PATTERN улучшает
Выбирает исполнения пакетов, когда пакет зависит/предзависит/
советует/конфликтует/и прочее от/с ИМЯРЕКАМИ(PATTERNS) пакетов.
?reverse-depType(PATTERN), ~RDepType:PATTERN
Противоположное ?зависит(?depends) и ?сотоварищи(?friends)
- выбрать все исполнения пакетов, от которых зависит и т.п. пакет
указанный в ИМЯРЕК(PATTERN).
Поскольку видзав(deptype) относится к видам зависимостей, например
"зависит"(depends), то нам не до́лжно заново повторять здесь весь
перечень из первой части данного раздела.(Это по-поводу сотоварищей).
ПРИМЕРЫ(EXAMPLES)
apt remove ?garbage apt удалить ?отходы
# В терминале запись точно такая же.
Удалить все пакеты, которые были установлены автоматически,
но больше не нужны; то же, что и apt autoremove(самоудались).
apt purge ?config-files apt очистить ?конфиг-файлы
Очистить(purge) остатки тех пакетов, от которых остались конфигурационные файлы.
# В терминале запись точно такая же.
# Можно запустить в режиме "понарошку"(simulate):
$ apt purge --simulate ?config-files # или
$ apt purge --dry-run ?config-files # dry run - холостой ход.
# От настоящего исполнения вывод команды будет отличаться
# отсутствием запроса на подтверждение действия:
"Хотите продолжить?". Это идёт от apt-get.
apt list ~i !~M (~slibs|~sperl|~spython)
Просмотреть список(list) всех пакетов установленных вручную,
с выборкой по разделам libs,perl или python.
- # Запись в терминале отличается.
Нужно прикрыть символы, которые воспринимает оболочка командной строки, цитированием или обратной косой чертой, см. про цитирование ниже:
$ apt list ~i \!~M \(~slibs\|~sperl\|~spython\) # или
$ apt list ~i \!~M '(~slibs|~sperl|~spython)' # или для единообразия
$ apt list ~i '!'~M '(~slibs|~sperl|~spython)'
- Ещё примеры записей в терминале:
$ apt search ?virtual # поиск виртуальных пакетов; или
$ apt search ~v # без всякого цитирования и косых черт.
$ apt search ?provides\(rubygems\) # поиск пакетов, которые
# обеспечивают(provides) работу виртуального пакета rubygems.
# Это идёт от aptitude.
$ apt search ~DConflicts:nemo # кто отторгает nemo?
- Цитирование.
Цитирование бывает двух видов строгое, с одинарными кавычками
„''“ и простое с двойными кавычками „""“ .
Строгое цитирование „''“ - в нём утрачивают значение все
- специальные символы вида: ? * . () | \ ~ , - и прочее.
Простое цитирование „""“ - в нём сохраняют своё значение символы
- „$“ „\“ „`“ и всё. В нём пробелы объёдиняют слова в фразы, а не разделяют их.
Обратная косая черта „\“ (Escape-изба́ви) - нужна для цитирования
отдельного символа, в том числе и невидимого, например пробела,
конца строки; запись вида „\033“ - воспринимается целиком как
восьмеричный код символа Escape(изба́ви), т.е. символа „\“.
ПЕРЕНОС ИЗ ПОСОБНИКА(MIGRATING FROM APTITUDE)
Имяреки в apt возникли под сильным влиянием имяреков aptitude
(пособника), но с некоторыми поправками.
Словосочетания(syntax) сделаны единообразными: если вы открываете
скобки после условия(term), то это всегда должно считаться началом
перечня с какими-то значениями.
В aptitude(пособнике) словосочетание "?foo(bar)" может означать
"?и(?foo,bar)", в случае, если для слова "foo" ничего не найдётся.
В APT-е, в таком случае, появится сообщение об ошибке.
* foo - нечто, bar-черта, нечто.
Применяются не все имяреки(patterns) из aptitude.
Из aptitude доступны некоторые из дополнительных имяреков
(patterns), например такие, что нужны для нахождения
gstreamer codecs(кодеков для воспроизведения звука и видео
на основе Gstreamer).
Не применяется аптитьюдовский способ избегания тильды
"~" через "\~" .
Это означает, что аптитьюдовская команда, например "поиск
автоматически установленных пакетов":
$ aptitude search \~M
в APT будет выглядеть так:
$ apt search ~M
хотя и аптитьюдовский способ, тоже работает:
$ apt search \~M
в списке с перечнем допускается замыкающая запятая, например:
" 1, 2 , " .
В ?narrow(?сужение) допускается неграниченный перечень.
Просто слово, например "foo"(нечто) нельзя использовать для замены
?name(foo) ?имя(нечто), так как это может привести к незаметным
опечаткам. Представьте себе запись:
?and(...,~poptional) ?и(...,~одополнительный)
Здесь запрашивается пакет, с указанной важностью, но, если вы не
наберёте "~", то будет запрашиваться пакет по имени, в котором есть
"poptional"(одополнительный).
Объединение имяреков по (...), то есть запись вида
?or(A,B) вместо A|B не поддерживается.
# это означает "или А или Б"
Мы не считаем, что знак "|" так широко распространён, и нет
необходимости совершать объединения без него.
Виды зависимости(dependency types) для ~D и для связанных с ним
значений должны указываться однозначно „в грамотном выражении,
чему мы и следуем“ (in the canonical case).
* Здесь имеется в виду, что в aptitude короткая форма ~D означает
"зависит"(depends), но может писаться и как ~Ddepends.
** Игра слов:
"canonical" - одобренный (церковью)
Canonical — британская компания, основанная Марком Шаттлвортом для развития и популяризации Linux-дистрибутива Ubuntu.
case - падеж; падеж передаёт взаимотношение имярека с глаголом;
canonical case-общепринятый падеж; падежей в английском языке три;
бывают ещё "un-canonical cases" - не общепринятые падежи; смысл в
том, что разные имреки - разные падежные взаимоотношения; скажем
„я завишу“ -можно, „ямне завишу“ - не допустимо.
СМОТРИ ТАКЖЕ(SEE ALSO)
apt-get(8), apt(8)
# Посмотреть полный перечень подкоманд для APT можно из файла, командой:
$ less /usr/share/bash-completion/completions/apt
# Это косвенная возможность, но она пока есть.
# ИМЯРЕКИ ЛОГИКИ(LOGIC PATTERNS)(см. вначале) в этом файле, под
# заголовком "Debian apt(8) completion(довершение)" не представлены.
# См. содержимое файла /usr/share/bash-completion/completions/apt и
# вывод команды cat /usr/local/bin/apt, она показывает как работают
# подкоманды apt в Linux Mint, ниже в Дополнении.
ГЛЮКИ(BUGS)
Страница ошибок APT(APT bug page[1]). Если вы хотите отправить
отчёт об ошибке для APT, пожалуйста, ознакомьтесь с файлом
/usr/share/doc/debian/bug-reporting.tx или просмотрите вывод
команды reportbug(1)(отчёт об ошибках).
АВТОР(AUTHOR)
Пакет APT был написан командой APT <apt@packages.debian.org>.
АВТОРЫ(AUTHORS)
Джейсон Гантзорп(Jason Gunthorpe)(Чейсын Пушкарёв)
Gunthorpe(Пушкарёво)-деревня и гражданский приход
в английском графстве Норфолк(СеверныйНародец).
Команда APT(APT team)
ЗАМЕТКИ(NOTES)
- Страничка ошибок APT(APT bug page)
http://bugs.debian.org/src:apt
ДОПОЛНЕНИЕ
######################
Не существует полного руководства по команде APT. Понимание её всех
возможностей доступно косвенно. Рассмотрим как.
Вывод команды less /usr/share/bash-completion/completions/apt
позволяет увидеть перечень всех подкоманд для apt. Логические имяреки
для or, and, not, true, false - в файле apt в папке bash-completion
представлены в общем виде; неявно. Перечень из этого файла:
# Подкоманды APT
Дополнения:
-d --download-only
-y --assume-yes
--assume-no
-u --show-upgraded
-m --ignore-missing
-t --target-release
--download
--fix-missing
--ignore-hold
--upgrade
--only-upgrade
--allow-change-held-packages
--allow-remove-essential
--allow-downgrades
--print-uris
--trivial-only
--remove
--arch-only
--allow-unauthenticated
--allow-insecure-repositories
--install-recommends
--install-suggests
--no-install-recommends
--no-install-suggests
--fix-policy
Подкоманды:
"list"
"search"
"show" "showsrc"
"install" "remove" "purge" "autoremove" "autopurge"
"update"
"upgrade" "full-upgrade" "dist-upgrade"
"edit-sources"
"help"
"source" "build-dep"
"clean" "autoclean"
"download" "changelog"
"moo"
"depends" "rdepends"
"policy"
-t|--target-release)
Выполняется команда "$(apt-cache policy | egrep -o 'a=[^,]*|n=[^,]*' | cut -f2- -d= | sort -u)"
Дополнения для отдельных команд:
install|remove|purge|upgrade|dist-upgrade|full-upgrade|autoremove)
--show-progress
--fix-broken --purge --verbose-versions --auto-remove
-s --simulate --dry-run
--download
--fix-missing
--fix-policy
--ignore-hold
--force-yes
--trivial-only
--reinstall --solver
-t --target-release
update
--list-cleanup
--print-uris
--allow-insecure-repositories
list
--installed --upgradable
--manual-installed
-v --verbose
-a --all-versions
-t --target-release
show
-a --all-versions
depends|rdepends
-i
--important
--installed
--pre-depends
--depends
--recommends
--suggests
--replaces
--breaks
--conflicts
--enhances
--recurse
--implicit
search
-n --names-only
-f --full
showsrc
--only-source
source
-s --simulate --dry-run
-b --compile --build
-P --build-profiles
--diff-only --debian-only
--tar-only
--dsc-only
-t --target-release
build-dep
-a --host-architecture
-s --simulate --dry-run
-P --build-profiles
-t --target-release
--purge --solver
moo
--color
clean|autoclean)
-s --simulate --dry-run
Как выполняются подкоманды:
remove|purge|autoremove)
либо над DEB-пакетом
либо над RPM-пакетом
show|list|download|changelog|depends|rdepends)
выполняется apt-cache --no-generate pkgnames
install
выполняется apt-cache --no-generate pkgnames
source|build-dep|showsrc|policy)
выполняются apt-cache --no-generate pkgnames
и apt-cache dumpavail
edit-sources
через ls $sourcesdir
moo
через moo.
##############################
В Linux Mint свой APT, который представляет из себя питоновский скрипт.
Дебиано-Убунтовский APT там тоже присутствует. Отличие в том, что для
Linux Mint-овского APT-а запускается скрипт из файла /usr/local/bin/apt, а
для Дебиано-Убунтовского APT-а запускается двоичный файл /usr/bin/apt.
П сути Linux Mint-овский APT, как и весь Linux Mint, представляет из себя
матрёшку, которая вставлена в Дебиано-Убунтовский APT; при этом питоновский скрипт позволяет задействовать другие APT-оподобные команды там, где это даёт лучший резльтат.
Вывод команды cat /usr/local/bin/apt в LinuxMint позволяет увидеть
каким образом команда APT задействует возможности других команд.
---------------------
#!/usr/bin/python3
Расшифровка подкоманд:
"apt"
"Usage: apt command [options]"
" apt help command [options]"
""
"Commands:"
" add-repository - Add entries to apt sources.list"
" autoclean - Erase old downloaded archive files"
" autopurge - Remove packages with their configuration files and automatically remove all unused packages"
" autoremove - Remove automatically all unused packages"
" build - Build binary or source packages from sources"
" build-dep - Configure build-dependencies for source packages"
" changelog - View a package's changelog"
" check - Verify that there are no broken dependencies"
" clean - Erase downloaded archive files"
" contains - List packages containing a file"
" content - List files contained in a package"
" deb - Install a .deb package"
" depends - Show raw dependency information for a package"
" dist-upgrade - Upgrade the system by removing/installing/upgrading packages"
" download - Download the .deb file for a package"
" edit-sources - Edit /etc/apt/sources.list with your preferred text editor"
" dselect-upgrade - Follow dselect selections"
" full-upgrade - Same as 'dist-upgrade'"
" held - List all held packages"
" help - Show help for a command"
" hold - Hold a package"
" install - Install/upgrade packages"
" list - List packages based on package names"
" policy - Show policy settings"
" purge - Remove packages and their configuration files"
" recommends - List missing recommended packages for a particular package"
" rdepends - Show reverse dependency information for a package"
" reinstall - Download and (possibly reinstall a currently installed package"
" remove - Remove packages"
" search - Search for a package by name and/or expression"
" show - Display detailed information about a package"
" showhold - Same as 'held'"
" showsrc - Display all the source package records that match the given package name"
" source - Download source archives"
" sources - Same as 'edit-sources'"
" unhold - Unhold a package"
" update - Download lists of new/upgradable packages"
" upgrade - Perform a safe upgrade"
" version - Show the installed version of a package"
""
Синонимы:
"dist-upgrade": "full-upgrade",
"sources": "edit-sources",
"held": "showhold"
Для подкоманд "install", "remove", "update", "clean"
указание на "-" означает команду = ""
* Здесь "минус" после имени пакета означает "удалить"
*Знак "-" означает стандартный ввод/вывод(можно заменить на /dev/stdin или /dev/stdout).
*Знак "-" означает "все" после list, search.
Первичный экран: 24×80
Подкоманда "help": вызывает help(справку).
Возможно задание псевдонимов с ключами(aliases.keys):
вызываются соответствкющие псевдонимы (aliases).
*Ниже в Записи вида = ["some-subcommand", argcommand] + argoptions;
argcommand переводится как "подкоманда",
argoptions переводится как "дополнения".
При вызове подкоманд ("autoremove", "list", "show", "install", "remove", "purge", "update", "upgrade", "full-upgrade", "edit-sources", "showsrc", "autopurge"):
вызывается команда # apt - дебиановский APT.
= ["/usr/bin/apt", подкоманда] + дополнения
При вызове подкоманд ("clean", "dselect-upgrade", "build-dep", "check", "autoclean", "source", "moo"):
вызывается команда # apt-get
= ["apt-get", подкоманда] + дополнения
При вызове подкоманды ("reinstall", ):
вызывается команда # aptitude
= ["aptitude", подкоманда] + дополнения
При вызове подкоманд ("stats", "depends", "rdepends", "policy"):
вызывается команда # apt-cache
= ["apt-cache", подкоманда] + дополнения
При вызове подкоманды ("changelog", ):
при наличии минтовского скрипта ("/usr/lib/python3/dist-packages/mintcommon/apt_changelog.py"):
исполняется этот скрипт = ["/usr/lib/python3/dist-packages/mintcommon/apt_changelog.py"] + дополнения
либо команда:
= ["aptitude", подкоманда] + дополнения
При вызове подкоманды ("recommends", ):
вызывается минтовский скрипт = ["/usr/lib/linuxmint/mintsystem/mint-apt-recommends.py"] + дополнения
При вызове подкоманд ("showhold", "hold", "unhold"):
вызывается команда # apt-mark
= ["apt-mark", подкоманда] + дополнения
При вызове подкоманд ("markauto", "markmanual"):
вызывается команда # apt-mark
= ["apt-mark", подкоманда[4:]] + дополнения
Если же подкоманда == "contains":
= ["dpkg", "-S"] + дополнения
Если же подкоманда == "content":
= ["dpkg", "-L"] + дополнения
Если же подкоманда == "deb":
= ["dpkg", "-i"] + дополнения
Если же подкоманда == "build":
= ["dpkg-buildpackage"] + дополнения
Если же подкоманда == "version":
= ["dpkg-buildpackage"] + дополнения
с перебором:
version = ("dpkg-query -f '${Version}' -W %s 2>/dev/null" % shlex.quote(" ".join(дополнения)), shell=True).decode("UTF-8")
печать(version)
если же нет:
печать ("")
выход
Если же подкоманда == "download":
вызывается минтовский скрипт = ["/usr/lib/linuxmint/mintsystem/mint-apt-download.py"] + дополнения
Если же подкоманда == "add-repository":
= ["add-apt-repository"] + дополнения
Если же подкоманда == "search":
= ["aptitude", "-w", столбцы(columns), подкоманда] + дополнения
иначе:
применение()
выход(1)
# Как набирается Sudo
При вызове подкоманд ("autoremove", "install", "remove", "purge", "update", "upgrade", "full-upgrade", "edit-sources", "clean", "dselect-upgrade", "build-dep", "check", "autoclean", "reinstall", "deb", "hold", "unhold", "add-repository", "markauto", "markmanual", "autopurge"):
набирается = ["sudo"] + command
# Подсветка цветом (Color highlighting)
При вызове подкоманд ("content", "version", "policy", "depends", "rdepends", "search") и далее(дополнения) >= 1:
подсветка(highlight) = True
# Упорядочивание(Sorting)
При вызове подкоманд ("content", "contains"):
упорядочивать(sort) = True
При показе справки (help):
вывод ("\"apt " + подкоманда + " " + " "(дополнения) + "\" равносильно \"" + " "(команда) + "\"")
иначе:
применение:
упорядочивание(sort) и подсветка(highlight).