Как определить, является ли пакет метапакетом из командной строки, возможно, через apt-get, aptitude или apt-cache?
Я пытался:
apt-cache show texlive-full
apt-cache showpkg texlive-full
но единственный способ, которым я могу сказать этот пакет, является мета, читая поле "en-description".
Есть ли более автоматический способ сделать это, который даст мне ответ «да» или «нет», или, по крайней мере, есть поле, такое как «en-description», посвященное этому?
package-management
metapackages
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件
источник
источник
Ответы:
Формального определения метапакета не существует. Неформальное определение заключается в том, что метапакет предназначен для установки только для его зависимостей и не содержит собственного полезного файла.
Вы можете определить метапакет как пакет, который не содержит файла. Нет способа определить это из базы данных пакета. Вы можете использовать файловую базу данных и проверить, что пакет содержит только каталоги (многие такие пакеты содержат несколько каталогов). Фактически, большинство метапакетов содержат несколько файлов
/usr/share/doc/<package name>
:copyright
файл, журнал изменений, иногда еще несколько. Вот приближение, которое определяет метапакет как содержащий только файлы в/usr/share/doc/<some directory>
(не в подкаталогах этого) и ведущие каталоги:Другой подход заключается в поиске тега пакета с помощью
debtags
. Есть несколько тегов, которые обычно используются в метапакетах.Другой подход заключается в поиске пакетов небольшого размера. Каждый каталог считается 4 КБ, поэтому планируйте соответственно при выборе порога (опять же, это приблизительное значение).
Подумав , интересно, вы имеете в виду виртуальные пакеты, а не метапакеты? Виртуальные пакеты на самом деле не пакеты, а имена пакетов, используемые в
Provides:
полях. Вы можете перечислить их сaptitude search '~v'
. При запускеapt-cache show
на одном экране отображается сообщение «Невозможно выбрать версии из пакета« zcav », поскольку он является чисто виртуальным». Запускaptitude show
перечисляет пакеты, которые предоставляют его. Удобный способ показать виртуальные пакеты с помощьюapt-cache
: это печатает одну строку для не виртуального пакета и потенциально несколько строк (по одной для каждого поставщика) для виртуального пакета - вы можете сказать, является ли пакет виртуальным, даже если есть один поставщик потому что имя провайдера другое.источник
apt-get autoremove
,aptitude (un)markauto
, тоM
команда в профпригодности интерактивного интерфейса.apt-get install texlive-full
,apt-get purge texlive-full; apt-get autoremove
не удалил все установленные зависимости. Я где-то читал, что это потому, что texlive-full был метапакетом, и что это было нормальное поведение метапакета, но, возможно, это было неправильно. С другой стороны, aptitude, похоже, удалял автоматически установленные зависимости.Вы можете попробовать войти
который даст вам длинный список, а затем использовать
grep
, скажем, показать все связанные с наукой метапакеты сЭто вернет длинный список (я сократил его здесь)
Вы можете использовать любое количество альтернатив для науки, например,
KDE
чтобы найти всеKDE
метапакеты.Вероятно, это лучшее из того, что вы можете сделать
apt-cache
, но он должен быстро найти большинство метапакетов, которые вы хотите найти. Если он не находит именно то, что вы искали, проще всего заглянуть в раздел метапакетов вSynaptic
.источник