dpkg -s
otomatik kurulum ile programlı kullanım
Paketlerin herhangi biri yüklü değilse dpkg -s
durumla çıkmayı seviyorum , bu 1
da 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/certbot
hala sistemde sonra var apt remove
ama sonra yok --purge
.
Ancak, dosya /usr/lib/python3/dist-packages/certbot/reporter.py
daha sonra bile kullanılabilir --purge
.
Nedenini anlamıyorum, ama sonra hello
paketi ile o paket zaten kaldırılmış olduğunu gösterir :dpkg
apt 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
certbot
olarak belirtilse de deinstall
, olarak işaretlendiğinde kaldırılmadı man apt-get
:
dselect-upgrade
geleneksel 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 apt
paketi
apt
Ubuntu 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))
PATH
Bunun 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?