web-dev-qa-db-ja.com

コマンドラインからパッケージがメタパッケージであるかどうかを判断する方法は?

パッケージがメタパッケージであるかどうかをコマンドラインから、おそらくapt-get、aptitude、またはapt-cacheを使用して判断するにはどうすればよいですか?

私が試してみました:

apt-cache show texlive-full
apt-cache showpkg texlive-full

しかし、このパッケージにメタを伝える唯一の方法は、「en-description」フィールドを読むことです。

これを行うためのより自動化された方法はありますか?それは私にyes/no応答を与えますか、または少なくともこれに専用の「en-description」などのフィールドがありますか?

メタパッケージの正式な定義はありません。非公式の定義は、メタパッケージは依存関係のためにのみインストールされることを意図したものであり、独自の有用なファイルが含まれていないということです。

ファイルを含まないパッケージとしてメタパッケージを定義できます。パッケージデータベースからこれを判断する方法はありません。 ファイルデータベース を使用して、パッケージにディレクトリのみが含まれていることを確認できます(このようなパッケージには、いくつかのディレクトリが含まれています)。実際、ほとんどのメタパッケージには、/usr/share/doc/<package name>にいくつかのファイルが含まれています。copyrightファイル、変更ログ、さらにいくつかのファイルがあります。以下は、メタパッケージが/usr/share/doc/<some directory>(そのサブディレクトリではなく)のファイルと主要なディレクトリのみを含むと定義する近似です。

if ! apt-file -F list $package | grep -qvE '^/(usr(/share(/doc(/[^/]*(/[^/]*)?)?)?)?)?$'; then
  echo "$package looks like a metapackage"
fi

別のアプローチは、 debtagspackage tag を探すことです。メタパッケージで一般的に使用されるタグがいくつかあります。

debtags tag ls $package | grep -x -e 'role::metapackage' -e 'role::dummy' -e 'special::meta'

別のアプローチは、サイズの小さいパッケージを探すことです。各ディレクトリは4µkBとしてカウントされるため、しきい値を選択する際にそれに応じて計画してください(これも概算です)。

aptitude -F '%I %p' search "~n^$package\$"

熟考すると、メタパッケージではなく 仮想パッケージ を意味しているのだろうか。仮想パッケージは実際にはパッケージではなく、Provides:フィールドで使用されるパッケージ名です。 aptitude search '~v'でリストできます。 1つでapt-cache showを実行すると、「パッケージ 'zcav'は純粋に仮想であるため、バージョンを選択できません」と表示されます。 aptitude showを実行すると、それを提供するパッケージがリストされます。仮想パッケージを表示する便利な方法はapt-cacheを使用することです。これにより、非仮想パッケージの場合は1行、仮想パッケージの場合は複数行(プロバイダーごとに1行)が出力されます。プロバイダーの名前が異なるため、単一のプロバイダーがあります。

apt-cache -n search "^$package\$"
7
Gilles

入ってみてください

apt-cache search 'metapackage | meta-package'

長いリストが表示され、grepを使用して、科学関連のすべてのメタパッケージを表示します。

apt-cache search 'metapackage | meta-package' | grep -i science

これは長いリストを返します(ここではshortened itを持っています)

science-astronomy - Debian Science Astronomy packages
science-astronomy-dev - Debian Science Astronomy-dev packages
science-biology - Debian Science Biology packages
science-chemistry - Debian Science Chemistry packages
science-dataacquisition - Debian Science data acquisition packages
science-dataacquisition-dev - Debian Science data acquisition development packages
science-distributedcomputing - Debian Science Distributed Computing packages
science-electronics - Debian Science Electronics packages
science-electrophysiology - Debian Science packages for Electrophysiology
science-engineering - Debian Science Engineering packages
science-engineering-dev - Debian Science Engineering-dev packages
science-geography - Debian Science Geography packages
science-highenergy-physics - Debian Science High Energy Physics packages

すべてのKDEメタパッケージを見つけるために、KDEなどの科学の代替をいくつでも使用できます。

これはおそらくapt-cacheでできる最善の方法ですが、探したいメタパッケージのほとんどをすばやく見つける必要があります。探しているものがすべて正確に見つからない場合、最も簡単なことは、Synapticのメタパッケージセクションを調べることです。

2
user76204