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

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

در این مطلب قصد داریم به شما نحوه بررسی و لیست کردن پکیج‌های نصب شده در محیط سرور لینوکس CentOS (ورژن‌های 6.x/7.x/8.x) را آموزش بدهیم. اطلاع از لیست پکیج‌های نصب شده در CentOS در مواردی که می‌خواهید پکیج‌های مورد نظرتان را restore یا reinstall کنید، بسیار کاربردی و راهگشا است. همچنین اگر قصد دارید...

1398/11/063250 بازدید
لیست پکیج‌های نصب شده در CentOS

در این مطلب قصد داریم به شما نحوه بررسی و لیست کردن پکیج‌های نصب شده در محیط سرور لینوکس CentOS (ورژن‌های 6.x/7.x/8.x) را آموزش بدهیم. اطلاع از لیست پکیج‌های نصب شده در CentOS در مواردی که می‌خواهید پکیج‌های مورد نظرتان را restore یا reinstall کنید، بسیار کاربردی و راهگشا است. همچنین اگر قصد دارید پکیج‌های مورد نظرتان را در چندین سرور مختلف mirror کنید، این مطلب می‌تواند برای شما مفید باشد.


مراحل بررسی پکیج‌های نصب شده در CentOS
مراحل انجام کار به شرح زیر است: 1) ترمینال را باز کنید. 2) با استفاده از فرمان ssh در ریموت سرور خود لاگین نمایید:
php
ssh user@centos-linux-server-IP-here
3) برای مشاهده اطلاعات مربوط به همه پکیج‌های نصب شده در CentOS، فرمان زیر را اجرا نمایید:
php
sudo yum list installed
4) برای شمارش تمامی پکیج‌های نصب شده، فرمان زیر را اجرا نمایید:
php
sudo yum list installed | wc -l
5) برای ذخیره نام تمامی پیکیج‌های نصب شده در یک فایل، فرمان زیر را اجرا نمایید:
php
sudo yum list installed > my_list.txt
6) برای رفرش کردن دیتابیس پیکج‌هاتون و نصب آپدیت‌های موجود برای پکیج‌ها، فرمان زیر را اجرا نمایید:
php
sudo yum update
در ادامه با جزئیات بیشتری مراحل فوق را مورد بررسی قرار می‌دهیم با ما همراه باشید.
بررسی و لیست کردن پکیج‌های نصب شده با استفاده فرمان yum
نقل قول از صفحه اصلی dnf/yum:
"فرمان list در واقع لیستی از پکیج‌ها را نمایش می‌دهد و قرار گیری هر پکیج در این لیست وابسته به ارتباطی است که آن پکیج با سیستم دارد. یک پکیج زمانی نصب‌شده یا به اصطلاح installed در نظر گرفته می‌شود که در RPMDB وجود داشته باشد. بعلاوه، زمانی یک پکیج در دسترس یا به اصطلاح available است که نصب نشده باشد، اما در یک ریپازیتوری که 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
برای لیست کردن تمامی پکیج‌های موجود یا به اصطلاح available، فرمان زیر را اجرا نمایید:
php
sudo yum list --available
برای شمارش پکیج‌ها می‌توانید بر اساس نیازتان یکی از فرامین زیر را اجرا نمایید:
php
sudo yum list --installed | wc -lsudo yum list --all | wc -lsudo yum list --available | wc -l

لیست کردن تمامی پکیج‌هایی که نیاز به update/patching دارند

ایمن‌سازی سرور یک امر حیاتی و بسیار مهم است که یکی از ملزومات آن بروز بودن مجموعه سیستم شما است. بدین منظور و برای اطلاع از آپگریدهای موجود برای پکیج‌های نصب شده روی سیستم خود، از فرامین زیر استفاده نمایید:

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                                    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:
php
sudo rpm -qasudo rpm -qa | moresudo rpm -qa | wc -lsudo rpm -qa | grep bash
لیست پکیج‌های نصب شده روی CentOS با استفاده از دستور rpm برای اینکه بفهمید پکیج nginx و bash روی سرور شما نصب است، به روش زیر اقدام کنید:
php
sudo rpm -q nginx// output: package nginx is not installedsudo 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 نصب نمایید:
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:00     Running transaction checkTransaction check succeeded.Running transaction testTransaction 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 فرمان زیر را اجرا نمایید:
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
اطلاعات بیشتر در مورد repoquery

 برای ایجاد یک قالب نمایشی سفارشی می‌توان از سینتکسِ -qf %{format} یا --queryformat %{format} استفاده کرد. عملکرد {format}% اینگونه است که به هر کدام از پکیج‌هایی که در خروجی نمایش داده می‌شوند یک متن(string) الحاق می‌کند. عملکرد {<tag>}% اینگونه است که ویژگی مشخص شده در قسمت tag با مقدار متناظر با همان ویژگی در پکیج جایگزین می‌شود. لیست تگ‌های شناخته شده را می‌توانید با اجرای فرمان زیر بدست آورید:

php
dnf repoquery --querytags
خروجی نمونه:
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
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
در صورت نیاز، برای بازیابی (restore) تمامی پکیج‌های بدست آمده از اجرای دستور فوق، بصورت زیر عمل کنید:
php
yum -y install $(cat /nas/installed-software-mm-dd-yyyy.log)

نکته‌ای درباره تاریخچه نصب پکیج‌ها در +CentOS / RHEL v6.x
فرمان 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        |    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 هر یک از خروجی‌های فوق را با جزئیات بیشتری مورد بررسی قرار دهیم:
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 بررسی کنید و لیستی از آن‌ها تهیه نمایید.