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
traditionalতিহ্যবাহী দেবিয়ান প্যাকেজিং ফ্রন্ট-এন্ড, ডিলিलेक्ट (1) এর সাথে একত্রে ব্যবহৃত হয়। ডিলেক্ট-আপগ্রেড উপলব্ধ প্যাকেজগুলির স্থিতি ক্ষেত্রে ডিলিলেক্ট (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
পরিবর্তে এক্সিকিউটেবলের মধ্যে রয়েছে কিনা তা পরীক্ষা করুন
দেখুন: বাশ স্ক্রিপ্ট থেকে কোনও প্রোগ্রাম উপস্থিত রয়েছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?