dpkg -s otomatik kurulum ile programlı kullanım
Paketlerin herhangi biri yüklü değilse dpkg -sdurumla çıkmayı seviyorum , bu 1da otomatikleştirmeyi kolaylaştırıyor:
pkgs='qemu-user pandoc'
if ! dpkg -s $pkgs >/dev/null 2>&1; then
sudo apt-get install $pkgs
fi
man dpkg çıkış durumunu maalesef belgelemiyor, ancak bence buna güvenmek oldukça güvenli olmalı:
-s, --status package-name...
Report status of specified package.
Unutulmaması gereken bir şey, koşmanın:
sudo apt remove <package-name>
bazı paketler için tüm dosyaları derhal kaldırmaz (ancak diğerleri için neden emin değilim?) ve yalnızca kaldırılmak üzere paketi işaretler.
Bu durumda, paket hala kullanılabilir gibi görünür ve dosyaları hala mevcut olduğundan, daha sonra kaldırılmak üzere işaretlenir.
Örneğin;
pkg=certbot
sudo apt install -y "$pkg"
dpkg -s "$pkg"
echo $?
sudo apt remove -y "$pkg"
dpkg -s "$pkg"
echo $?
ls -l /usr/lib/python3/dist-packages/certbot/reporter.py
sudo apt remove --purge certbot
dpkg -s "$pkg"
echo $?
ls -l /usr/lib/python3/dist-packages/certbot/reporter.py
sonra:
ilk iki echo $?çıkış 0, sadece üçüncü çıkış1
ilk çıktı dpkg -s certbot:
Status: deinstall ok installed
ikincisi derken:
Status: deinstall ok config-files
ve sadece tasfiyeden sonra kaybolur:
dpkg-query: package 'certbot' is not installed and no information is available
dosya /etc/logrotate.d/certbothala sistemde sonra var apt removeama sonra yok --purge.
Ancak, dosya /usr/lib/python3/dist-packages/certbot/reporter.pydaha sonra bile kullanılabilir --purge.
Nedenini anlamıyorum, ama sonra hellopaketi ile o paket zaten kaldırılmış olduğunu gösterir :dpkgapt remove--purge
dpkg-query: package 'hello' is not installed and no information is available
Belgeler de çok net değil, örneğin:
sudo apt dselect-upgrade
certbotolarak belirtilse de deinstall, olarak işaretlendiğinde kaldırılmadı man apt-get:
dselect-upgradegeleneksel Debian ambalaj ön ucu, dselect (1) ile birlikte kullanılır. dselect-upgrade, dselect (1) tarafından mevcut paketlerin Durum alanında yapılan değişiklikleri izler ve bu durumu gerçekleştirmek için gerekli eylemleri gerçekleştirir (örneğin, eski paketin kaldırılması ve yeni paketlerin yüklenmesi).
Ayrıca bakınız:
Ubuntu 19.10'da test edildi.
Python aptpaketi
aptUbuntu 18.04'te Python apt arabirimini ortaya çıkaran önceden yüklenmiş bir Python 3 paketi var !
Bir paketin kurulup kurulmadığını kontrol eden ve eğer kurulmuyorsa yükleyen bir komut dosyası şu adreste görülebilir: Python-apt API'sini kullanarak bir paket nasıl kurulur
İşte referans için bir kopyası:
#!/usr/bin/env python
# aptinstall.py
import apt
import sys
pkg_name = "libjs-yui-doc"
cache = apt.cache.Cache()
cache.update()
cache.open()
pkg = cache[pkg_name]
if pkg.is_installed:
print "{pkg_name} already installed".format(pkg_name=pkg_name)
else:
pkg.mark_install()
try:
cache.commit()
except Exception, arg:
print >> sys.stderr, "Sorry, package installation failed [{err}]".format(err=str(arg))
PATHBunun yerine yürütülebilir dosyanın olup olmadığını kontrol edin
Bakınız: Bir programın Bash betiğinden olup olmadığını nasıl kontrol edebilirim?