dpkg -s
स्वचालित उपयोग के साथ प्रोग्रामेटिक उपयोग
मुझे पसंद है dpkg -s
क्योंकि यह स्थिति के साथ बाहर निकलता है 1
यदि कोई भी पैकेज स्थापित नहीं है, तो इसे स्वचालित करना आसान है:
pkgs='qemu-user pandoc'
if ! dpkg -s $pkgs >/dev/null 2>&1; then
sudo apt-get install $pkgs
fi
man dpkg
दुर्भाग्य से बाहर निकलने की स्थिति का दस्तावेज नहीं है, लेकिन मुझे लगता है कि इस पर भरोसा करने के लिए यह उचित रूप से सुरक्षित होना चाहिए:
-s, --status package-name...
Report status of specified package.
एक बात ध्यान देने योग्य है कि यह चल रहा है:
sudo apt remove <package-name>
जरूरी नहीं कि कुछ पैकेजों के लिए तुरंत सभी फाइलों को हटा दें (लेकिन दूसरों के लिए, निश्चित रूप से क्यों नहीं?), और सिर्फ हटाने के लिए पैकेज को चिह्नित करता है।
इस स्थिति में, पैकेज अभी भी उपयोग करने योग्य प्रतीत होता है, और जैसा कि इसकी फ़ाइलें अभी भी मौजूद हैं, लेकिन इसे बाद में हटाने के लिए चिह्नित किया गया है।
उदाहरण के लिए यदि आप चलाते हैं:
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
फिर:
पहले दो echo $?
आउटपुट 0
, केवल तीसरा एक आउटपुट1
पहले के लिए आउटपुट dpkg -s certbot
में शामिल हैं:
Status: deinstall ok installed
जबकि दूसरा कहता है:
Status: deinstall ok config-files
और यह केवल शुद्ध होने के बाद गायब हो जाता है:
dpkg-query: package 'certbot' is not installed and no information is available
फ़ाइल /etc/logrotate.d/certbot
अभी भी सिस्टम में मौजूद है apt remove
, लेकिन उसके बाद नहीं --purge
।
हालाँकि, फ़ाइल के /usr/lib/python3/dist-packages/certbot/reporter.py
बाद भी मौजूद है --purge
।
मुझे समझ में क्यों नहीं आता है, लेकिन hello
पैकेज के साथ दूसरे के dpkg
बाद apt remove
पता चलता है कि वह पैकेज पहले ही बिना हटा दिया गया है --purge
:
dpkg-query: package 'hello' is not installed and no information is available
दस्तावेज भी बहुत अस्पष्ट हैं, उदाहरण के लिए:
sudo apt dselect-upgrade
certbot
जब इसे चिह्नित किया गया था, तब भी हटाया नहीं गया था, deinstall
हालांकि man apt-get
यह इंगित करता है कि:
dselect-upgrade
पारंपरिक डेबियन पैकेजिंग फ्रंट-एंड, डेसेलेक्ट (1) के साथ संयोजन में उपयोग किया जाता है। dselect-upgrade उपलब्ध संकुल के स्थिति क्षेत्र में dselect (1) द्वारा किए गए परिवर्तनों का अनुसरण करता है, और उस स्थिति को महसूस करने के लिए आवश्यक क्रिया करता है (उदाहरण के लिए, पुराने को हटाने और नए पैकेजों की स्थापना)।
यह सभी देखें:
उबंटू 19.10 पर परीक्षण किया गया।
अजगर का apt
पैकेज
एक पूर्व-स्थापित पायथन 3 पैकेज है जिसे apt
उबंटू 18.04 में बुलाया गया है जो पायथन एप्ट इंटरफेस को उजागर करता है!
एक स्क्रिप्ट जो चेक करती है कि क्या पैकेज स्थापित है और इसे स्थापित किया गया है यदि नहीं देखा जा सकता है: अजगर-एप एपीआई का उपयोग करके पैकेज कैसे स्थापित करें
यहाँ संदर्भ के लिए एक प्रति है:
#!/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
इसके बजाय है
देखें: यदि कोई प्रोग्राम बैश स्क्रिप्ट से मौजूद है तो मैं कैसे जांच सकता हूं?