چگونه میتوان بستههای نصبشده در نسخههای ۶، ۷ و ۸ لینوکس CentOS را بررسی کرد؟ تهیه فهرستی از پکیجهای نصبشده بر روی سرور لینوکس CentOS اینترپرایز به چه صورت انجام میشود؟ در این مطلب قصد داریم نحوه بررسی و فهرستکردن تمام بستههای نصبشده در این سیستمعامل را با استفاده از ابزارها و فرمانهای مختلف بررسی کنیم. چنین لیستی میتواند واقعاً مفید باشد؛ مخصوصاً اگر بخواهید به شرایط نصب قبلی برگردید یا اینکه نسخهای از همین بستهها در سرورهای دیگر CentOS تهیه کنید.
چگونه بستههای نصبشده در CentOS بررسی کنیم؟
روند کار مطابق مراحل زیر است:
۱) باز کردن برنامه ترمینال
۲) برای ورود به سرور ریموت از فرمان ssh استفاده میکنیم:
ssh user@centos-linux-server-IP-here
۳) نمایش اطلاعات تمام بستههای نصبشده بر روی CentOS. برای این منظور دستور زیر را تایپ کنید:
sudo yum list installed
۴) برای شمارش تمام بستههای نصبشده داریم:
sudo yum list installed | wc -l
۵) اگر میخواهیم عنوان تمام بستههای نصبشده را در یک فایل ذخیره کنید، فرمان زیر را امتحان کنید:
sudo yum list installed > my_list.txt
۶) فرمان sudo yum update را اجرا کرده تا پایگاه داده بستهها را بروز رسانی کنید و در صورت لزوم، بستهها را بروز نمایید.
حالا بیایید تمام فرمانها و مثالها را به صورت جزئی بررسی کنیم.
بررسی و فهرستکردن بستههای نصبشده با استفاده از فرمان yum
ابتدا به نقل قولی از صفحه dnf/yum میپردازیم:
فرمان list باعث نمایش فهرست بستههای نصبشده با نسبت ارتباطشان با سیستم میشود. هر بستهای که به صورت RPMDB باشد، نصب شده است. همچنین اگر این بسته نصب نشده، ولی در منبعی که توسط DNF شناخته شده باشد، وجود داشته باشد، به عنوان یک بسته در دسترس درنظر گرفته میشود. همچنین فرمان list میتواند برای محدود کردن نمایش بستهها نسبت به معیارهای مختلف مورد استفاده قرار گیرد؛ مثلاً اینکه تنها بستههایی نمایش داده شوند که حاوی یک بروزرسانی نسبت به یک بسته نصبشده هستند. گزینه exclude در فایل تنظیمات .conf میتواند بر نتایج تأثیر بگذارد؛ این در حالی است که با استفاده از گزینه فرمان خطی –disableexcludes میتوان اطمینان حاصل کرد که تمام بستههای نصبشده لیست شوند.
بنابراین برای فهرست کردن تمام بستههای نصبشده در CentOS، فرمان yum زیر را تایپ کنید:
sudo yum list --installed sudo yum list --installed | more
شاید کسی بخواهد از فرمان grep نیز برای ایجاد فیلتر استفاده کند. به عنوان مثال، فرمان زیر بررسی میکند که آیا nginx نصب شده یا خیر:
sudo yum list --installed | grep nginx
اگر بخواهید تمام بستههای سیستم که در هیچگونه منبعی در دسترس نیستند، فهرست کنید، فرمان زیر به کمک شما میآید:
sudo yum list –extras
نمونه خروجی:
Last metadata expiration check: 0:21:58 ago on Friday 29 November 2019 05:19:57 PM UTC. Extra Packages qemu-guest-agent.x86_64 15:2.12.0-64.module_el8.0.0+44+94c1b039.2 @AppStream
فهرست کردن تمام بستههای شناختهشده
sudo yum list --all
در نهایت، نمایشهای بستههای در دسترس:
sudo yum list –available
امکان شمارش تعداد بستههای نصبشده با استفاده از فرمان wc نیز وجود خواهد داشت:
sudo yum list --installed | wc -l sudo yum list --all | wc -l sudo yum list --available |wc –l
نمایش بستههای که نیاز به بروزرسانی یا تصحیح دارند
حفظ امنیت باکس CentOS یکی از وظایف اساسی شماست. برای این منظور میتوانید لیست تمام ارتقاهایی که برای بستههای نصبشده در دسترس هستند را تهیه کنید:
sudo yum list --upgrades sudo yum list --upgrades | more sudo yum list --upgrades | grep -i kernel
نمونه خروجی:
Available Upgrades bash.x86_64 4.4.19-8.el8_0 BaseOS dracut.x86_64 049-10.git20190115.el8_0.1 BaseOS dracut-config-rescue.x86_64 049-10.git20190115.el8_0.1 BaseOS dracut-network.x86_64 049-10.git20190115.el8_0.1 BaseOS dracut-squash.x86_64 049-10.git20190115.el8_0.1 BaseOS grub2-common.noarch 1:2.02-66.el8_0.1 BaseOS grub2-pc.x86_64 1:2.02-66.el8_0.1 BaseOS grub2-pc-modules.noarch 1:2.02-66.el8_0.1 BaseOS grub2-tools.x86_64 1:2.02-66.el8_0.1 BaseOS grub2-tools-extra.x86_64 1:2.02-66.el8_0.1 BaseOS grub2-tools-minimal.x86_64 1:2.02-66.el8_0.1 BaseOS initscripts.x86_64 10.00.1-1.el8_0.1 BaseOS kernel.x86_64 4.18.0-80.11.2.el8_0 BaseOS kernel-core.x86_64 4.18.0-80.11.2.el8_0 BaseOS kernel-modules.x86_64 4.18.0-80.11.2.el8_0 BaseOS kernel-tools.x86_64 4.18.0-80.11.2.el8_0 BaseOS kernel-tools-libs.x86_64 4.18.0-80.11.2.el8_0 BaseOS kpartx.x86_64 0.7.8-7.el8_0.2 BaseOS libnfsidmap.x86_64 1:2.3.3-14.el8_0.2 BaseOS platform-python.x86_64 3.6.8-4.el8_0 BaseOS python3-libs.x86_64 3.6.8-4.el8_0 BaseOS python3-perf.x86_64 4.18.0-80.11.2.el8_0 BaseOS python3-rpm.x86_64 4.14.2-11.el8_0 BaseOS
تهیه لیست تمام بستههای نصبشده با استفاده از فرمان rpm
برای این منظور، به شکلی ساده از فرمان rpm استفاده میکنیم:
sudo rpm -qa sudo rpm -qa | more sudo rpm -qa | wc -l sudo rpm -qa | grep bash
آیا بسته nginx و bash نصب شدهاند؟ بیایید این موضوع را بررسی کنیم:
sudo rpm -q nginx package nginx is not installed sudo rpm -q bash bash-4.4.19-7.el8.x86_64
کاربرد فرمان repoquery از بسته dnf-utils
ابتدا yum-utils (CentOS 6.x/7.x) یا dnf-utils را در CentOS 8.x نصب کنید:
sudo yum install yum-utils ## centos 6.x/7.x ## sudo yum install dnf-utils ## centos 8.x ##
نمونه خروجی:
Last metadata expiration check: 0:40:40 ago on Friday 29 November 2019 05:19:57 PM UTC. Dependencies resolved. =================================================================================================== Package Arch Version Repository Size =================================================================================================== Installing: dnf-utils noarch 4.0.2.2-3.el8 BaseOS 62 k Transaction Summary =================================================================================================== Install 1 Package Total download size: 62 k Installed size: 18 k Is this ok [y/N]: y Downloading Packages: dnf-utils-4.0.2.2-3.el8.noarch.rpm 11 MB/s | 62 kB 00:00 --------------------------------------------------------------------------------------------------- Total 6.1 MB/s | 62 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : dnf-utils-4.0.2.2-3.el8.noarch 1/1 Running scriptlet: dnf-utils-4.0.2.2-3.el8.noarch 1/1 Verifying : dnf-utils-4.0.2.2-3.el8.noarch 1/1 Installed: dnf-utils-4.0.2.2-3.el8.noarch Complete!
برای بررسی بستههای نصبشده در لینوکس CentOS، فرمان زیر را اجرا کنید:
sudo yum repoquery -a --installed
NetworkManager-1:1.14.0-14.el8.x86_64 NetworkManager-libnm-1:1.14.0-14.el8.x86_64 NetworkManager-team-1:1.14.0-14.el8.x86_64 NetworkManager-tui-1:1.14.0-14.el8.x86_64 acl-0:2.2.53-1.el8.x86_64 audit-0:3.0-0.10.20180831git0047a6c.el8.x86_64 audit-libs-0:3.0-0.10.20180831git0047a6c.el8.x86_64 authselect-0:1.0-13.el8.x86_64 authselect-compat-0:1.0-13.el8.x86_64 authselect-libs-0:1.0-13.el8.x86_64 basesystem-0:11-5.el8.noarch .... .. .... vim-minimal-2:8.0.1763-10.el8.x86_64 virt-what-0:1.18-6.el8.x86_64 which-0:2.21-10.el8.x86_64 xfsprogs-0:4.19.0-2.el8.x86_64 xkeyboard-config-0:2.24-3.el8.noarch xz-0:5.2.4-3.el8.x86_64 xz-libs-0:5.2.4-3.el8.x86_64 yum-0:4.0.9.2-5.el8.noarch zlib-0:1.2.11-10.el8.x86_64
نمایش عنوان، ساختار و محتوای منبع تمام بستههای nginx
sudo yum repoquery --queryformat '%{name}.%{arch} : %{reponame}' nginx
فهرستکردن تمام بستههای تأمینکننده وبسرور
sudo yum repoquery --whatprovides webserver
یا فهرست تمام بستههای تأمینکننده وبسرور که ساختار i686 دارند:
sudo yum repoquery --whatprovides webserver --arch i686 <pre>
توضیحات بیشتر در مورد گزینه repoquery
سفارشیسازی قالب نمایشی با استفاده از -qf %{format} یا –queryformat %{format} صورت میگیرد. %{format} رشتهای برای هر کدام از بستههای متناظر خواهد بود. هر رخدادی درون %{<tag>} با عملکرد بسته متناظر جایگزین میشود. فهرست تمام تگهای شناختهشده میتواند با فرمان زیر نمایش داده شود:
dnf repoquery –querytags
نمونه خروجی:
Available query-tags: use --queryformat ".. %{tag} .." name, arch, epoch, version, release, reponame (repoid), evr, debug_name, source_name, source_debug_name, installtime, buildtime, size, downloadsize, installsize, provides, requires, obsoletes, conflicts, sourcerpm, description, summary, license, url
به عنوان مثال، امکان ساخت یک لیست جالب به صورت زیر وجود خواهد داشت:
repoquery -a --installed \ --queryformat "%{name}-%{arch}-%{version} installed at '%{installtime}' from '%{reponame}'"
نمونه خروجی:
newt-x86_64-0.52.20 installed at '2019-09-25 14:48' from '@System' nftables-x86_64-0.9.0 installed at '2019-09-25 14:48' from '@System' npth-x86_64-1.5 installed at '2019-09-25 14:48' from '@System' numactl-libs-x86_64-2.0.12 installed at '2019-09-25 14:48' from '@System' openldap-x86_64-2.4.46 installed at '2019-09-25 14:48' from '@System' openssh-clients-x86_64-7.8p1 installed at '2019-09-25 14:49' from '@System' openssh-server-x86_64-7.8p1 installed at '2019-09-25 14:49' from '@System' openssh-x86_64-7.8p1 installed at '2019-09-25 14:49' from '@System' openssl-libs-x86_64-1.1.1 installed at '2019-09-25 14:48' from '@System' openssl-pkcs11-x86_64-0.4.8 installed at '2019-09-25 14:48' from '@System' openssl-x86_64-1.1.1 installed at '2019-09-25 14:48' from '@System' os-prober-x86_64-1.74 installed at '2019-09-25 14:48' from '@System' p11-kit-trust-x86_64-0.23.14 installed at '2019-09-25 14:48' from '@System' p11-kit-x86_64-0.23.14 installed at '2019-09-25 14:48' from '@System' pam-x86_64-1.3.1 installed at '2019-09-25 14:48' from '@System' parted-x86_64-3.2 installed at '2019-09-25 14:49' from '@System' passwd-x86_64-0.80 installed at '2019-09-25 14:49' from '@System'
نحوه بررسی بستههای نصبشده بر روی CentOS و پشتیبانگیری از آنها
یکی ازقالبهای فهرستکردن و پشتیبانگیری از تمام بستههای نصبشده به صورت زیر است:
rpm -qa --qf "%{NAME}\n" |\ sort > /nas/installed-software-mm-dd-yyyy.log
استفاده از فرمان cat برای بازخوانی لیست
cat /nas/installed-software-mm-dd-yyyy.log
برای بازیابی تمام این بستهها در صورت لزوم، خواهیم داشت:
yum -y install $(cat /nas/installed-software-mm-dd-yyyy.log)
یادداشتی بر فهرستکردن تمام بستههای نصبشده در CentOS با استفاده از گزینه history در فرمان yum
فرمان yum در آخرین نسخه CentOS و RHEL v6.x یا نسخه بالاتر، دارای گزینه history است. در نتیجه، تاریخچه نصبهای سرور ابری در دسترستان خواهد بود. برای این منظور، فرمان زیر را تایپ کنید تا فهرست و تاریخچه را ملاحظه نمایید:
sudo yum history
نمونه خروجی:
ID | Command line | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 4 | install dnf-utils | 2019-11-29 18:00 | Install | 1 3 | remove dnf-utils | 2019-11-29 18:00 | Removed | 1 2 | install yum-utils | 2019-11-29 17:21 | Install | 1 1 | | 2019-09-25 14:48 | Install | 396 EE
همچنین میتوانیم جزئیات این تاریخچهها را با استفاده از شماره شناسه آنها در خروجی بررسی کنیم:
sudo yum history info ID sudo yum history info 2
نمونه خروجی:
Transaction ID : 2 Begin time : Friday 29 November 2019 05:21:50 PM UTC Begin rpmdb : 393:911fb7e090842db316c671dc9e4b3bba7ffc7f2d End time : Friday 29 November 2019 05:21:50 PM UTC (0 seconds) End rpmdb : 394:e2078e6f2b3657ae7b67053902eae91a492a54a5 User : root <root> Return-Code : Success Releasever : 8 Command Line : install yum-utils Packages Altered: Install dnf-utils-4.0.2.2-3.el8.noarch @BaseOS
جمعبندی
در این مطلب با نحوه بررسی و فهرستکردن بستههای نصبشده با استفاده از فرمانهای yum و rpm آشنا شدیم.