بلاگ/بررسی بسته‌های نصب‌شده لینوکس CentOS
به‌روز شده

بررسی بسته‌های نصب‌شده لینوکس CentOS

چگونه میتوان بسته‌های نصب‌شده در نسخه‌های ۶، ۷ و ۸ لینوکس CentOS را بررسی کرد؟ تهیه فهرستی از پکیج‌های نصب‌شده بر روی سرور لینوکس CentOS اینترپرایز به چه صورت انجام می‌شود؟ در این مطلب قصد داریم نحوه بررسی و فهرست‌کردن تمام بسته‌های نصب‌شده در این سیستم‌عامل را با استفاده از ابزارها و فرمان‌های...

1398/10/302722 بازدید
بررسی بسته‌های نصب‌شده لینوکس CentOS
چگونه میتوان بسته‌های نصب‌شده در نسخه‌های ۶، ۷ و ۸ لینوکس CentOS را بررسی کرد؟ تهیه فهرستی از پکیج‌های نصب‌شده بر روی سرور لینوکس CentOS اینترپرایز به چه صورت انجام می‌شود؟ در این مطلب قصد داریم نحوه بررسی و فهرست‌کردن تمام بسته‌های نصب‌شده در این سیستم‌عامل را با استفاده از ابزارها و فرمان‌های مختلف بررسی کنیم. چنین لیستی می‌تواند واقعاً مفید باشد؛ مخصوصاً اگر بخواهید به شرایط نصب قبلی برگردید یا اینکه نسخه‌ای از همین بسته‌ها در سرورهای دیگر CentOS تهیه کنید.

چگونه بسته‌های نصب‌شده در CentOS بررسی کنیم؟

روند کار مطابق مراحل زیر است: ۱) باز کردن برنامه ترمینال ۲) برای ورود به سرور ریموت از فرمان ssh استفاده می‌کنیم:
php
ssh user@centos-linux-server-IP-here
۳) نمایش اطلاعات تمام بسته‌های نصب‌شده بر روی CentOS. برای این منظور دستور زیر را تایپ کنید:
php
sudo yum list installed
۴) برای شمارش تمام بسته‌های نصب‌شده داریم:
php
sudo yum list installed | wc -l
۵) اگر می‌خواهیم عنوان تمام بسته‌های نصب‌شده را در یک فایل ذخیره کنید، فرمان زیر را امتحان کنید:
php
sudo yum list installed > my_list.txt
۶) فرمان sudo yum update را اجرا کرده تا پایگاه داده بسته‌ها را بروز رسانی کنید و در صورت لزوم، بسته‌ها را بروز نمایید.   حالا بیایید تمام فرمان‌ها و مثال‌ها را به صورت جزئی بررسی کنیم.

بررسی و فهرست‌کردن بسته‌های نصب‌شده با استفاده از فرمان yum

ابتدا به نقل قولی از صفحه dnf/yum می‌پردازیم:
فرمان list باعث نمایش فهرست بسته‌های نصب‌شده با نسبت ارتباطشان با سیستم می‌شود. هر بسته‌ای که به صورت RPMDB باشد، نصب شده است. همچنین اگر این بسته نصب نشده، ولی در منبعی که توسط DNF شناخته شده باشد، وجود داشته باشد، به عنوان یک بسته در دسترس درنظر گرفته می‌شود. همچنین فرمان list می‌تواند برای محدود کردن نمایش بسته‌ها نسبت به معیارهای مختلف مورد استفاده قرار گیرد؛ مثلاً اینکه تنها بسته‌هایی نمایش داده شوند که حاوی یک بروزرسانی نسبت به یک بسته نصب‌شده هستند. گزینه exclude در فایل تنظیمات .conf می‌تواند بر نتایج تأثیر بگذارد؛ این در حالی است که با استفاده از گزینه فرمان خطی –disableexcludes می‌توان اطمینان حاصل کرد که تمام بسته‌های نصب‌شده لیست شوند.
بنابراین برای فهرست کردن تمام بسته‌های نصب‌شده در CentOS، فرمان yum زیر را تایپ کنید:
php
sudo yum list --installedsudo yum list --installed | more
فهرست‌کردن تمام بسته‌های نصب‌شده در لینوکس CentOS با استفاده از yum
  شاید کسی بخواهد از فرمان grep نیز برای ایجاد فیلتر استفاده کند. به عنوان مثال، فرمان زیر بررسی می‌کند که آیا nginx نصب شده یا خیر:
php
sudo yum list --installed | grep nginx
اگر بخواهید تمام بسته‌های سیستم که در هیچ‌گونه منبعی در دسترس نیستند، فهرست کنید، فرمان زیر به کمک شما می‌آید:
php
sudo yum list –extras
نمونه خروجی:
php
Last metadata expiration check: 0:21:58 ago on Friday 29 November 2019 05:19:57 PM UTC.Extra Packagesqemu-guest-agent.x86_64            15:2.12.0-64.module_el8.0.0+44+94c1b039.2             @AppStream
فهرست کردن تمام بسته‌های شناخته‌شده
php
sudo yum list --all
در نهایت، نمایش‌های بسته‌های در دسترس:
php
sudo yum list –available
امکان شمارش تعداد بسته‌های نصب‌شده با استفاده از فرمان wc نیز وجود خواهد داشت:
php
sudo yum list --installed | wc -lsudo yum list --all | wc -lsudo yum list --available |wc –l

نمایش بسته‌های که نیاز به بروزرسانی یا تصحیح دارند

حفظ امنیت باکس CentOS یکی از وظایف اساسی شماست. برای این منظور می‌توانید لیست تمام ارتقاهایی که برای بسته‌های نصب‌شده در دسترس هستند را تهیه کنید:
php
sudo yum list --upgradessudo yum list --upgrades | moresudo yum list --upgrades | grep -i kernel
نمونه خروجی:
php
Available Upgradesbash.x86_64                             4.4.19-8.el8_0                                    BaseOSdracut.x86_64                           049-10.git20190115.el8_0.1                        BaseOSdracut-config-rescue.x86_64             049-10.git20190115.el8_0.1                        BaseOSdracut-network.x86_64                   049-10.git20190115.el8_0.1                        BaseOSdracut-squash.x86_64                    049-10.git20190115.el8_0.1                        BaseOSgrub2-common.noarch                     1:2.02-66.el8_0.1                                 BaseOSgrub2-pc.x86_64                         1:2.02-66.el8_0.1                                 BaseOSgrub2-pc-modules.noarch                 1:2.02-66.el8_0.1                                 BaseOSgrub2-tools.x86_64                      1:2.02-66.el8_0.1                                 BaseOSgrub2-tools-extra.x86_64                1:2.02-66.el8_0.1                                 BaseOSgrub2-tools-minimal.x86_64              1:2.02-66.el8_0.1                                 BaseOSinitscripts.x86_64                      10.00.1-1.el8_0.1                                 BaseOSkernel.x86_64                           4.18.0-80.11.2.el8_0                              BaseOSkernel-core.x86_64                      4.18.0-80.11.2.el8_0                              BaseOSkernel-modules.x86_64                   4.18.0-80.11.2.el8_0                              BaseOSkernel-tools.x86_64                     4.18.0-80.11.2.el8_0                              BaseOSkernel-tools-libs.x86_64                4.18.0-80.11.2.el8_0                              BaseOSkpartx.x86_64                           0.7.8-7.el8_0.2                                   BaseOSlibnfsidmap.x86_64                      1:2.3.3-14.el8_0.2                                BaseOSplatform-python.x86_64                  3.6.8-4.el8_0                                     BaseOSpython3-libs.x86_64                     3.6.8-4.el8_0                                     BaseOSpython3-perf.x86_64                     4.18.0-80.11.2.el8_0                              BaseOSpython3-rpm.x86_64                      4.14.2-11.el8_0                                   BaseOS

تهیه لیست تمام بسته‌های نصب‌شده با استفاده از فرمان rpm

برای این منظور، به شکلی ساده از فرمان rpm استفاده می‌کنیم:
php
sudo rpm -qasudo rpm -qa | moresudo rpm -qa | wc -lsudo rpm -qa | grep bash
استفاده از فرمان rpm برای نمایش فهرست بسته‌های نصب‌شده در سرور CentOS
آیا بسته nginx و bash نصب‌ شده‌اند؟ بیایید این موضوع را بررسی کنیم:
php
sudo rpm -q nginxpackage nginx is not installedsudo rpm -q bashbash-4.4.19-7.el8.x86_64

کاربرد فرمان repoquery از بسته dnf-utils

ابتدا yum-utils (CentOS 6.x/7.x) یا dnf-utils را در CentOS 8.x نصب کنید:
php
sudo yum install yum-utils ## centos 6.x/7.x ##sudo yum install dnf-utils ## centos 8.x ##
نمونه خروجی:
php
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 kInstalled size: 18 kIs this ok [y/N]: yDownloading 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:00Running transaction checkTransaction check succeeded.Running transaction testTransaction test succeeded.Running transactionPreparing        :                                                                           1/1Installing       : dnf-utils-4.0.2.2-3.el8.noarch                                            1/1Running scriptlet: dnf-utils-4.0.2.2-3.el8.noarch                                            1/1Verifying        : dnf-utils-4.0.2.2-3.el8.noarch                                            1/1 Installed:dnf-utils-4.0.2.2-3.el8.noarch Complete!
برای بررسی بسته‌های نصب‌شده در لینوکس CentOS، فرمان زیر را اجرا کنید:
php
sudo yum repoquery -a --installed
 
php
NetworkManager-1:1.14.0-14.el8.x86_64NetworkManager-libnm-1:1.14.0-14.el8.x86_64NetworkManager-team-1:1.14.0-14.el8.x86_64NetworkManager-tui-1:1.14.0-14.el8.x86_64acl-0:2.2.53-1.el8.x86_64audit-0:3.0-0.10.20180831git0047a6c.el8.x86_64audit-libs-0:3.0-0.10.20180831git0047a6c.el8.x86_64authselect-0:1.0-13.el8.x86_64authselect-compat-0:1.0-13.el8.x86_64authselect-libs-0:1.0-13.el8.x86_64basesystem-0:11-5.el8.noarch..........vim-minimal-2:8.0.1763-10.el8.x86_64virt-what-0:1.18-6.el8.x86_64which-0:2.21-10.el8.x86_64xfsprogs-0:4.19.0-2.el8.x86_64xkeyboard-config-0:2.24-3.el8.noarchxz-0:5.2.4-3.el8.x86_64xz-libs-0:5.2.4-3.el8.x86_64yum-0:4.0.9.2-5.el8.noarchzlib-0:1.2.11-10.el8.x86_64
نمایش عنوان، ساختار و محتوای منبع تمام بسته‌های nginx
php
sudo yum repoquery --queryformat '%{name}.%{arch} : %{reponame}' nginx
فهرست‌کردن تمام بسته‌های تأمین‌کننده وب‌سرور
php
sudo yum repoquery --whatprovides webserver
یا فهرست تمام بسته‌های تأمین‌کننده وب‌سرور که ساختار i686 دارند:
php
sudo yum repoquery --whatprovides webserver --arch i686<pre>

توضیحات بیشتر در مورد گزینه repoquery

سفارشی‌سازی قالب نمایشی با استفاده از -qf %{format} یا --queryformat %{format} صورت می‌گیرد. %{format} رشته‌ای برای هر کدام از بسته‌های متناظر خواهد بود. هر رخدادی درون %{<tag>} با عملکرد بسته متناظر جایگزین می‌شود. فهرست تمام تگ‌های شناخته‌شده می‌تواند با فرمان زیر نمایش داده شود:
php
dnf repoquery –querytags
نمونه خروجی:
php
Available query-tags: use --queryformat ".. %{tag} .."&nbsp;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
به عنوان مثال، امکان ساخت یک لیست جالب به صورت زیر وجود خواهد داشت:
php
repoquery -a --installed \--queryformat "%{name}-%{arch}-%{version} installed at '%{installtime}' from '%{reponame}'"
نمونه خروجی:
php
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 و پشتیبان‌گیری از آنها

یکی ازقالب‌های فهرست‌کردن و پشتیبان‌گیری از تمام بسته‌های نصب‌شده به صورت زیر است:
php
rpm -qa --qf "%{NAME}\n" |\sort > /nas/installed-software-mm-dd-yyyy.log
استفاده از فرمان cat برای بازخوانی لیست
php
cat /nas/installed-software-mm-dd-yyyy.log
برای بازیابی تمام این بسته‌ها در صورت لزوم، خواهیم داشت:
php
yum -y install $(cat /nas/installed-software-mm-dd-yyyy.log)

یادداشتی بر فهرست‌کردن تمام بسته‌های نصب‌شده در CentOS با استفاده از گزینه history در فرمان yum

فرمان yum در آخرین نسخه CentOS و RHEL v6.x یا نسخه بالاتر، دارای گزینه history است. در نتیجه، تاریخچه نصب‌های سرور ابری در دسترس‌تان خواهد بود. برای این منظور، فرمان زیر را تایپ کنید تا فهرست و تاریخچه را ملاحظه نمایید:
php
sudo yum history
نمونه خروجی:
php
ID     | Command line             | Date and time    | Action(s)      | Altered-------------------------------------------------------------------------------4 | install dnf-utils        | 2019-11-29 18:00 | Install        |    13 | remove dnf-utils         | 2019-11-29 18:00 | Removed        |    12 | install yum-utils        | 2019-11-29 17:21 | Install        |    11 |                          | 2019-09-25 14:48 | Install        |  396 EE
همچنین می‌توانیم جزئيات این تاریخچه‌ها را با استفاده از شماره شناسه آنها در خروجی بررسی کنیم:
php
sudo yum history info IDsudo yum history info 2
نمونه خروجی:
php
Transaction ID : 2Begin time     : Friday 29 November 2019 05:21:50 PM UTCBegin rpmdb    : 393:911fb7e090842db316c671dc9e4b3bba7ffc7f2dEnd time       : Friday 29 November 2019 05:21:50 PM UTC (0 seconds)End rpmdb      : 394:e2078e6f2b3657ae7b67053902eae91a492a54a5User           : root <root>Return-Code    : SuccessReleasever     : 8Command Line   : install yum-utilsPackages Altered:Install dnf-utils-4.0.2.2-3.el8.noarch @BaseOS
جمع‌بندی در این مطلب با نحوه بررسی و فهرست‌کردن بسته‌های نصب‌شده با استفاده از فرمان‌های yum و rpm آشنا شدیم.