dpkg-query
Bağlantılı postanızdaki gibi, örneğin, kullanmanız dışında iş için en doğru araç gibi görünüyor. Böyle bir betik bağlamında doğrudan APT sistemine bağlanmak için mevcut Python kütüphaneleri.
İle dpkg-query
:
dpkg-query -Wf'${db:Status-abbrev}' package-name 2>/dev/null | grep -q '^i'
True döndürür (çıkış durumu 0
Kabuk komut dosyasında) paket kuruluysa false (çıkış durumu) 1
) aksi takdirde.
-W
"Göster" anlamına gelir ( dpkg-query
İstenilen bir işlem yapılması gerekir).
-f
çıktının biçimini değiştirir.
db:Status-abbrev
paket durumunun kısa şeklidir.
2>/dev/null
sessizlikler dpkg-query
geçersiz bir paket adı verilirse. Bunun nasıl ele alınması gerektiği, durumdan davaya bir sorun olabilir.
grep -q
Bir eşleşme varsa true, aksi takdirde false döndürür.
Sık kullanılırsa, basit bir fonksiyon yapılabilir:
#!/bin/sh
debInst() {
dpkg-query -Wf'${db:Status-abbrev}' "$1" 2>/dev/null | grep -q '^i'
}
if debInst "$1"; then
printf 'Why yes, the package %s _is_ installed!\n' "$1"
else
printf 'I regret to inform you that the package %s is not currently installed.\n' "$1"
fi
ya da sadece basit
#!/bin/sh
if dpkg-query -Wf'${db:Status-abbrev}' "$1" 2>/dev/null | grep -q '^i'; then
printf 'Why yes, the package "%s" _is_ installed!\n' "$1"
else
printf 'I regret to inform you that the package "%s" is not currently installed.\n' "$1"
fi
dpkg-query -l "$package" | grep -q ^.i
genellikle yeterlidir (ve hatırlanması kolaydır).