چگونه میتوان بسته‌های نصب‌شده در نسخه‌های ۶، ۷ و ۸ لینوکس 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

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

 

شاید کسی بخواهد از فرمان 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

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

آیا بسته 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} .."

&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

به عنوان مثال، امکان ساخت یک لیست جالب به صورت زیر وجود خواهد داشت:


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 آشنا شدیم.