Tidak ada definisi formal dari metapackage. Definisi informal adalah bahwa metapackage adalah salah satu yang hanya dimaksudkan untuk diinstal untuk dependensinya dan tidak mengandung file yang berguna.
Anda dapat mendefinisikan metapackage sebagai paket yang tidak mengandung file. Tidak ada cara untuk menentukan ini dari basis data paket. Anda dapat menggunakan basis data file dan memeriksa bahwa paket hanya berisi direktori (banyak paket semacam itu mengandung beberapa direktori). Bahkan, sebagian besar metapackage berisi beberapa file di /usr/share/doc/<package name>
: copyright
file, changelog, kadang-kadang beberapa file lagi. Berikut ini perkiraan yang mendefinisikan metapackage sebagai hanya berisi file di /usr/share/doc/<some directory>
(bukan dalam subdirektori dari itu) dan direktori utama:
if ! apt-file -F list $package | grep -qvE '^/(usr(/share(/doc(/[^/]*(/[^/]*)?)?)?)?)?$'; then
echo "$package looks like a metapackage"
fi
Pendekatan lain adalah untuk mencari tag paket dengan debtags
. Ada beberapa tag yang biasa digunakan pada metapackages.
debtags tag ls $package | grep -x -e 'role::metapackage' -e 'role::dummy' -e 'special::meta'
Pendekatan lain adalah mencari paket dengan ukuran kecil. Setiap direktori dihitung sebagai 4 kB, jadi rencanakan sesuai saat memilih ambang (sekali lagi, ini adalah perkiraan).
aptitude -F '%I %p' search "~n^$package\$"
Setelah refleksi, saya bertanya-tanya apakah maksud Anda paket virtual daripada metapackages. Paket virtual sebenarnya bukan paket tetapi nama paket yang digunakan dalam Provides:
bidang. Anda dapat mendaftarkannya dengan aptitude search '~v'
. Berjalan apt-cache show
pada satu tampilan "Tidak dapat memilih versi dari paket 'zcav' karena ini murni virtual". Menjalankan aptitude show
daftar paket-paket yang menyediakannya. Cara mudah untuk menunjukkan paket virtual adalah dengan apt-cache
: ini mencetak satu baris untuk paket non-virtual dan berpotensi beberapa baris (satu untuk setiap penyedia) untuk paket virtual - Anda dapat mengetahui apakah paket tersebut virtual bahkan jika ada satu penyedia karena nama penyedia berbeda.
apt-cache -n search "^$package\$"