در این مطلب قصد داریم به شما نحوه بررسی و لیست کردن پکیجهای نصب شده در محیط سرور لینوکس CentOS (ورژنهای 6.x/7.x/8.x) را آموزش بدهیم. اطلاع از لیست پکیجهای نصب شده در CentOS در مواردی که میخواهید پکیجهای مورد نظرتان را restore یا reinstall کنید، بسیار کاربردی و راهگشا است. همچنین اگر قصد دارید پکیجهای مورد نظرتان را در چندین سرور مختلف mirror کنید، این مطلب میتواند برای شما مفید باشد.
مراحل بررسی پکیجهای نصب شده در CentOS
مراحل انجام کار به شرح زیر است: 1) ترمینال را باز کنید. 2) با استفاده از فرمان ssh در ریموت سرور خود لاگین نمایید:ssh user@centos-linux-server-IP-heresudo yum list installedsudo yum list installed | wc -lsudo yum list installed > my_list.txtsudo yum updateبررسی و لیست کردن پکیجهای نصب شده با استفاده فرمان yum
نقل قول از صفحه اصلی dnf/yum:"فرمان list در واقع لیستی از پکیجها را نمایش میدهد و قرار گیری هر پکیج در این لیست وابسته به ارتباطی است که آن پکیج با سیستم دارد. یک پکیج زمانی نصبشده یا به اصطلاح installed در نظر گرفته میشود که در RPMDB وجود داشته باشد. بعلاوه، زمانی یک پکیج در دسترس یا به اصطلاح available است که نصب نشده باشد، اما در یک ریپازیتوری که DNF از آن آگاه است وجود داشته باشد. فرمان list میتواند بر اساس شاخصهای دیگری هم لیست پکیجها را نمایش بدهد. به عنوان مثال، این فرمان میتواند لیستی از پکیجهایی که برای آپدیت پکیجهای نصب شده بکار رفتهاند را نیز نمایش بدهد. استفاده از exclude در فایل پیکربندی (.conf) میتواند روی نتیجه تاثیر داشته باشد. اما با استفاده از disableexcludes در خط فرمان میتوان از لیست شدن تمامی پکیجهای نصب شده اطمینان حاصل کرد."از این رو ، برای لیست کردن پکیجهای نصب شده روی CentOS، دستور yum زیر را تایپ کنید:
sudo yum list --installedsudo yum list --installed | more
از فرمان grep میتوانید برای فیلتر کردن نتایج استفاده کنید. به عنوان مثال میتوانید با استفاده از دستور زیر بفهمید که nginx روی سرور شما نصب است یا خیر:
sudo yum list --installed | grep nginxsudo yum list --extrasLast 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 @AppStreamsudo yum list --allsudo yum list --availablesudo yum list --installed | wc -lsudo yum list --all | wc -lsudo yum list --available | wc -lلیست کردن تمامی پکیجهایی که نیاز به update/patching دارند
ایمنسازی سرور یک امر حیاتی و بسیار مهم است که یکی از ملزومات آن بروز بودن مجموعه سیستم شما است. بدین منظور و برای اطلاع از آپگریدهای موجود برای پکیجهای نصب شده روی سیستم خود، از فرامین زیر استفاده نمایید:
sudo yum list --upgradessudo yum list --upgrades | moresudo yum list --upgrades | grep -i kernelAvailable 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:
sudo rpm -qasudo rpm -qa | moresudo rpm -qa | wc -lsudo rpm -qa | grep bash
برای اینکه بفهمید پکیج nginx و bash روی سرور شما نصب است، به روش زیر اقدام کنید:
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 نصب نمایید: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 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!sudo yum repoquery -a --installedNetworkManager-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_64sudo yum repoquery --queryformat '%{name}.%{arch} : %{reponame}' nginxsudo yum repoquery --whatprovides webserversudo yum repoquery --whatprovides webserver --arch i686اطلاعات بیشتر در مورد repoquery
برای ایجاد یک قالب نمایشی سفارشی میتوان از سینتکسِ -qf %{format} یا --queryformat %{format} استفاده کرد. عملکرد {format}% اینگونه است که به هر کدام از پکیجهایی که در خروجی نمایش داده میشوند یک متن(string) الحاق میکند. عملکرد {<tag>}% اینگونه است که ویژگی مشخص شده در قسمت tag با مقدار متناظر با همان ویژگی در پکیج جایگزین میشود. لیست تگهای شناخته شده را میتوانید با اجرای فرمان زیر بدست آورید:
dnf repoquery --querytagsAvailable 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, urlrepoquery -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.logcat /nas/installed-software-mm-dd-yyyy.logyum -y install $(cat /nas/installed-software-mm-dd-yyyy.log)نکتهای درباره تاریخچه نصب پکیجها در +CentOS / RHEL v6.x
فرمان yum در آخرین نسخه CentOS / RHEL v6.x آپشنی با عنوان history دارد که به وسیله آن میتوانید تاریخچهای از پکیجهای نصب شده در سرور ابری خودتان را مشاهده کنید:sudo yum historyID | 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 EEsudo yum history info IDsudo yum history info 2Transaction 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 بررسی کنید و لیستی از آنها تهیه نمایید.




