در این مطلب قصد داریم به شما نحوه بررسی و لیست کردن پکیجهای نصب شده در محیط سرور لینوکس CentOS (ورژنهای 6.x/7.x/8.x) را آموزش بدهیم. اطلاع از لیست پکیجهای نصب شده در CentOS در مواردی که میخواهید پکیجهای مورد نظرتان را restore یا reinstall کنید، بسیار کاربردی و راهگشا است. همچنین اگر قصد دارید پکیجهای مورد نظرتان را در چندین سرور مختلف mirror کنید، این مطلب میتواند برای شما مفید باشد.
مراحل بررسی پکیجهای نصب شده در CentOS
مراحل انجام کار به شرح زیر است:
1) ترمینال را باز کنید.
2) با استفاده از فرمان ssh در ریموت سرور خود لاگین نمایید:
ssh user@centos-linux-server-IP-here
3) برای مشاهده اطلاعات مربوط به همه پکیجهای نصب شده در CentOS، فرمان زیر را اجرا نمایید:
sudo yum list installed
4) برای شمارش تمامی پکیجهای نصب شده، فرمان زیر را اجرا نمایید:
sudo yum list installed | wc -l
5) برای ذخیره نام تمامی پیکیجهای نصب شده در یک فایل، فرمان زیر را اجرا نمایید:
sudo yum list installed > my_list.txt
6) برای رفرش کردن دیتابیس پیکجهاتون و نصب آپدیتهای موجود برای پکیجها، فرمان زیر را اجرا نمایید:
sudo yum update
در ادامه با جزئیات بیشتری مراحل فوق را مورد بررسی قرار میدهیم با ما همراه باشید.
بررسی و لیست کردن پکیجهای نصب شده با استفاده فرمان yum
نقل قول از صفحه اصلی dnf/yum:
“فرمان list در واقع لیستی از پکیجها را نمایش میدهد و قرار گیری هر پکیج در این لیست وابسته به ارتباطی است که آن پکیج با سیستم دارد. یک پکیج زمانی نصبشده یا به اصطلاح installed در نظر گرفته میشود که در RPMDB وجود داشته باشد. بعلاوه، زمانی یک پکیج در دسترس یا به اصطلاح available است که نصب نشده باشد، اما در یک ریپازیتوری که 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
برای لیست کردن تمامی پکیجهای موجود یا به اصطلاح available، فرمان زیر را اجرا نمایید:
sudo yum list --available
برای شمارش پکیجها میتوانید بر اساس نیازتان یکی از فرامین زیر را اجرا نمایید:
sudo yum list --installed | wc -l sudo yum list --all | wc -l sudo yum list --available | wc -l
لیست کردن تمامی پکیجهایی که نیاز به update/patching دارند
ایمنسازی سرور یک امر حیاتی و بسیار مهم است که یکی از ملزومات آن بروز بودن مجموعه سیستم شما است. بدین منظور و برای اطلاع از آپگریدهای موجود برای پکیجهای نصب شده روی سیستم خود، از فرامین زیر استفاده نمایید:
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
تهیه لیست پکیجهای نصب شده در CentOS با استفاده از دستور rpm:
sudo rpm -qa sudo rpm -qa | more sudo rpm -qa | wc -l sudo rpm -qa | grep bash
برای اینکه بفهمید پکیج nginx و bash روی سرور شما نصب است، به روش زیر اقدام کنید:
sudo rpm -q nginx // output: package nginx is not installed sudo rpm -q bash // output: 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
اطلاعات بیشتر در مورد repoquery
برای ایجاد یک قالب نمایشی سفارشی میتوان از سینتکسِ -qf %{format} یا –queryformat %{format} استفاده کرد. عملکرد {format}% اینگونه است که به هر کدام از پکیجهایی که در خروجی نمایش داده میشوند یک متن(string) الحاق میکند. عملکرد {<tag>}% اینگونه است که ویژگی مشخص شده در قسمت 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
در صورت نیاز، برای بازیابی (restore) تمامی پکیجهای بدست آمده از اجرای دستور فوق، بصورت زیر عمل کنید:
yum -y install $(cat /nas/installed-software-mm-dd-yyyy.log)
نکتهای درباره تاریخچه نصب پکیجها در +CentOS / RHEL v6.x
فرمان 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
ما میتوانیم با استفاده از ID هر یک از خروجیهای فوق را با جزئیات بیشتری مورد بررسی قرار دهیم:
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 بررسی کنید و لیستی از آنها تهیه نمایید.