چگونه میتوان بستههای نصبشده در نسخههای ۶، ۷ و ۸ لینوکس CentOS را بررسی کرد؟ تهیه فهرستی از پکیجهای نصبشده بر روی سرور لینوکس CentOS اینترپرایز به چه صورت انجام میشود؟ در این مطلب قصد داریم نحوه بررسی و فهرستکردن تمام بستههای نصبشده در این سیستمعامل را با استفاده از ابزارها و فرمانهای مختلف بررسی کنیم. چنین لیستی میتواند واقعاً مفید باشد؛ مخصوصاً اگر بخواهید به شرایط نصب قبلی برگردید یا اینکه نسخهای از همین بستهها در سرورهای دیگر CentOS تهیه کنید.
چگونه بستههای نصبشده در CentOS بررسی کنیم؟
روند کار مطابق مراحل زیر است:
۱) باز کردن برنامه ترمینال
۲) برای ورود به سرور ریموت از فرمان ssh استفاده میکنیم:
[php]
ssh user@centos-linux-server-IP-here
[/php]
۳) نمایش اطلاعات تمام بستههای نصبشده بر روی CentOS. برای این منظور دستور زیر را تایپ کنید:
[php]
sudo yum list installed
[/php]
۴) برای شمارش تمام بستههای نصبشده داریم:
[php]
sudo yum list installed | wc -l
[/php]
۵) اگر میخواهیم عنوان تمام بستههای نصبشده را در یک فایل ذخیره کنید، فرمان زیر را امتحان کنید:
[php]
sudo yum list installed > my_list.txt
[/php]
۶) فرمان sudo yum update را اجرا کرده تا پایگاه داده بستهها را بروز رسانی کنید و در صورت لزوم، بستهها را بروز نمایید.
حالا بیایید تمام فرمانها و مثالها را به صورت جزئی بررسی کنیم.
بررسی و فهرستکردن بستههای نصبشده با استفاده از فرمان yum
ابتدا به نقل قولی از صفحه dnf/yum میپردازیم:
فرمان list باعث نمایش فهرست بستههای نصبشده با نسبت ارتباطشان با سیستم میشود. هر بستهای که به صورت RPMDB باشد، نصب شده است. همچنین اگر این بسته نصب نشده، ولی در منبعی که توسط DNF شناخته شده باشد، وجود داشته باشد، به عنوان یک بسته در دسترس درنظر گرفته میشود. همچنین فرمان list میتواند برای محدود کردن نمایش بستهها نسبت به معیارهای مختلف مورد استفاده قرار گیرد؛ مثلاً اینکه تنها بستههایی نمایش داده شوند که حاوی یک بروزرسانی نسبت به یک بسته نصبشده هستند. گزینه exclude در فایل تنظیمات .conf میتواند بر نتایج تأثیر بگذارد؛ این در حالی است که با استفاده از گزینه فرمان خطی –disableexcludes میتوان اطمینان حاصل کرد که تمام بستههای نصبشده لیست شوند.
بنابراین برای فهرست کردن تمام بستههای نصبشده در CentOS، فرمان yum زیر را تایپ کنید:
[php]
sudo yum list –installed
sudo yum list –installed | more
[/php]

فهرستکردن تمام بستههای نصبشده در لینوکس CentOS با استفاده از yum
شاید کسی بخواهد از فرمان grep نیز برای ایجاد فیلتر استفاده کند. به عنوان مثال، فرمان زیر بررسی میکند که آیا nginx نصب شده یا خیر:
[php]
sudo yum list –installed | grep nginx
[/php]
اگر بخواهید تمام بستههای سیستم که در هیچگونه منبعی در دسترس نیستند، فهرست کنید، فرمان زیر به کمک شما میآید:
[php]
sudo yum list –extras
[/php]
نمونه خروجی:
[php]
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
[/php]
فهرست کردن تمام بستههای شناختهشده
[php]
sudo yum list –all
[/php]
در نهایت، نمایشهای بستههای در دسترس:
[php]
sudo yum list –available
[/php]
امکان شمارش تعداد بستههای نصبشده با استفاده از فرمان wc نیز وجود خواهد داشت:
[php]
sudo yum list –installed | wc -l
sudo yum list –all | wc -l
sudo yum list –available |wc –l
[/php]
نمایش بستههای که نیاز به بروزرسانی یا تصحیح دارند
حفظ امنیت باکس CentOS یکی از وظایف اساسی شماست. برای این منظور میتوانید لیست تمام ارتقاهایی که برای بستههای نصبشده در دسترس هستند را تهیه کنید:
[php]
sudo yum list –upgrades
sudo yum list –upgrades | more
sudo yum list –upgrades | grep -i kernel
[/php]
نمونه خروجی:
[php]
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
[/php]
تهیه لیست تمام بستههای نصبشده با استفاده از فرمان rpm
برای این منظور، به شکلی ساده از فرمان rpm استفاده میکنیم:
[php]
sudo rpm -qa
sudo rpm -qa | more
sudo rpm -qa | wc -l
sudo rpm -qa | grep bash
[/php]

استفاده از فرمان rpm برای نمایش فهرست بستههای نصبشده در سرور CentOS
آیا بسته nginx و bash نصب شدهاند؟ بیایید این موضوع را بررسی کنیم:
[php]
sudo rpm -q nginx
package nginx is not installed
sudo rpm -q bash
bash-4.4.19-7.el8.x86_64
[/php]
کاربرد فرمان 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]
نمونه خروجی:
[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 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!
[/php]
برای بررسی بستههای نصبشده در لینوکس CentOS، فرمان زیر را اجرا کنید:
[php]
sudo yum repoquery -a –installed
[/php]
[php]
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
[/php]
نمایش عنوان، ساختار و محتوای منبع تمام بستههای nginx
[php]
sudo yum repoquery –queryformat ‘%{name}.%{arch} : %{reponame}’ nginx
[/php]
فهرستکردن تمام بستههای تأمینکننده وبسرور
[php]
sudo yum repoquery –whatprovides webserver
[/php]
یا فهرست تمام بستههای تأمینکننده وبسرور که ساختار i686 دارند:
[php]
sudo yum repoquery –whatprovides webserver –arch i686
<pre>[/php]
توضیحات بیشتر در مورد گزینه repoquery
سفارشیسازی قالب نمایشی با استفاده از -qf %{format} یا –queryformat %{format} صورت میگیرد. %{format} رشتهای برای هر کدام از بستههای متناظر خواهد بود. هر رخدادی درون %{<tag>} با عملکرد بسته متناظر جایگزین میشود. فهرست تمام تگهای شناختهشده میتواند با فرمان زیر نمایش داده شود:
[php]
dnf repoquery –querytags
[/php]
نمونه خروجی:
[php]
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
[/php]
به عنوان مثال، امکان ساخت یک لیست جالب به صورت زیر وجود خواهد داشت:
[php]
repoquery -a –installed \
–queryformat "%{name}-%{arch}-%{version} installed at ‘%{installtime}’ from ‘%{reponame}’"
[/php]
نمونه خروجی:
[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’
[/php]
نحوه بررسی بستههای نصبشده بر روی CentOS و پشتیبانگیری از آنها
یکی ازقالبهای فهرستکردن و پشتیبانگیری از تمام بستههای نصبشده به صورت زیر است:
[php]
rpm -qa –qf "%{NAME}\n" |\
sort > /nas/installed-software-mm-dd-yyyy.log
[/php]
استفاده از فرمان cat برای بازخوانی لیست
[php]
cat /nas/installed-software-mm-dd-yyyy.log
[/php]
برای بازیابی تمام این بستهها در صورت لزوم، خواهیم داشت:
[php]
yum -y install $(cat /nas/installed-software-mm-dd-yyyy.log)
[/php]
یادداشتی بر فهرستکردن تمام بستههای نصبشده در CentOS با استفاده از گزینه history در فرمان yum
فرمان yum در آخرین نسخه CentOS و RHEL v6.x یا نسخه بالاتر، دارای گزینه history است. در نتیجه، تاریخچه نصبهای سرور ابری در دسترستان خواهد بود. برای این منظور، فرمان زیر را تایپ کنید تا فهرست و تاریخچه را ملاحظه نمایید:
[php]
sudo yum history
[/php]
نمونه خروجی:
[php]
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
[/php]
همچنین میتوانیم جزئیات این تاریخچهها را با استفاده از شماره شناسه آنها در خروجی بررسی کنیم:
[php]
sudo yum history info ID
sudo yum history info 2
[/php]
نمونه خروجی:
[php]
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
[/php]
جمعبندی
در این مطلب با نحوه بررسی و فهرستکردن بستههای نصبشده با استفاده از فرمانهای yum و rpm آشنا شدیم.