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 ^.igenellikle yeterlidir (ve hatırlanması kolaydır).