امروز می خواهیم مدیر بسته YUM و RPM را که مخصوص خانواده ردهت (RedHat) می باشد را معرفی کنیم. در پست قبل “استفاده از مدیر بسته دبیان” هم درباره خانواده دبیان صحبت کردیم و هم توضیحاتی درباره تمام انواع پکیج ها دادیم، پس بهتر است قبل از این که این پست را بخوانید سری به پست قبل نیز بزنید زیرا موارد مشابه زیادی دارند.
اول یه توضیح درباره خود ردهت بدیم، رد هت (Red Hat) یک شرکت آمریکایی نرمافزار متن باز و سازنده مهم توزیع لینوکس است، که در سال 1993 در رالی، کارولینای شمالی تأسیس شدهاست. این شرکت پشتیبان توزیعهای لینوکس، Red Hat Enterprise Linux و فدورا میباشد. لینوکس رد هت هم توسط این شرکت ایجاد شدهاست. این شرکت با نام رد هت اینکوپریشن در بورس نیویورک به فروش سهام خود مشغول است.
در اوایل سال 1991، باب یانگ نرمافزار آزاد و یونیکس را به مدیران سیستم حاضر در نیویورک معرفی کرد. پس از آن، او در سال 1993 شرکت ایسیسی اینکوپریشن را راهاندازی کرد که به فروش نرمافزارهای لینوکس و یونیکس و مجلههای مربوط به آنها میپرداخت. مارک ارویگ در اکتبر 1994 نسخهای از لینوکس خود را با نام ردهت عرضه کرد که به «انتشار هالوین» معروف است. در سال 1995، یانگ لینوکس ارویگ را خریداری و با شرکت خود ادغام کرد و سپس نام شرکت را به ردهت تغییر داد. ارویگ و یانگ در همان سال، نسخهٔ 2 لینوکس ردهت را منتشر کردند که برای اولین بار شامل سیستم مدیریت بستههای آرپیام (RPM) بود. این شرکت تاکنون به پیشرفت و گسترش سیستمهای لینوکس کمک کردهاست.
درحال حاضر به دلیل رایگان بودن سِنت او. اِس. (CentOS) خیلی از افراد از آن استفاده می کنند زیرا یک نسخه رایگان از Red Hat می باشد و تقریبا تمام ویژگی های آن را نیز دارد.
مدیر بسته YUM و RPM
آموزش نصب فایل rpm
مانند سناریو قبل ما باز کار خود را روی نرم افزار bzr انجام می دهیم، فرمت rpm مخصوص فایل های ردهتی و خانواده آن است، برای مثال ما فایل bzr-2.6.0-2.fc20.x86_64.rpm را دانلود کرده ایم و با دستور زیر میتوانیم آن را نصب کنیم:
rpm -i bzr-2.6.0-2.fc20.x86_64.rpm
ولی به ما ارور زیر را می دهد:
error: Failed dependencies:
python-paramiko is needed by bzr-2.6.0-2.fc20.x86_64
دلیل این پیغام این است که نیاز به کتابخانه python-paramiko دارد و شما باید اول python-paramiko را نصب کنید و سپس bzr-2.6.0-2.fc20.x86_64.rpm را نصب کنید.
آموزش نصب برنامه با yum
ولی برای این که به مشکل بالا بر نخورید میتونید از مخازن دستور yum استفاده کنید که دقیقا شبیه به apt و apt-get عمل می کند، البته یک فرق کوچک دارد، شما در apt و apt-get اول باید از دستور update استفاده می کردید تا repository های آن بروز شود و سپس دستور نصب را می زدید ولی در yum به این صورت نیست، خود yum به صورت خودکار اول repository ها را برسی و بروز می کنند و سپس شروع به دانلود و نصب می کند.
برای نصب bzr از دستور زیر در yum استفاده می کنیم:
[root@localhost ~]# yum install bzr
و بعد از آپدیت و نصب با صفحه ای به شکل زیر رو به رو می شویم که به ما می گوید موفقیت آمیز بوده است:
Loaded plugins: langpacks
Resolving Dependencies
--> Running transaction check
---> Package bzr.x86_64 0:2.6.0-2.fc20 will be installed
--> Processing Dependency: python-paramiko for package: bzr-2.6.0-2.fc20.x86_64
--> Running transaction check
---> Package python-paramiko.noarch 0:1.15.1-1.fc20 will be installed
--> Processing Dependency: python-crypto >= 2.1 for package: python-paramiko-1.15.1-1.fc20.noarch
--> Running transaction check
---> Package python-crypto.x86_64 0:2.6.1-1.fc20 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=========================================================================================================================
Package Arch Version Repository Size
=========================================================================================================================
Installing:
bzr x86_64 2.6.0-2.fc20 fedora 6.3 M
Installing for dependencies:
python-crypto x86_64 2.6.1-1.fc20 fedora 470 k
python-paramiko noarch 1.15.1-1.fc20 updates 998 k
Transaction Summary
=========================================================================================================================
Install 1 Package (+2 Dependent packages)
Total size: 7.7 M
Total download size: 998 k
Installed size: 36 M
Is this ok [y/d/N]: y
Downloading packages:
Not downloading Presto metadata for updates
python-paramiko-1.15.1-1.fc20.noarch.rpm | 998 kB 00:00:32
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : python-crypto-2.6.1-1.fc20.x86_64 1/3
Installing : python-paramiko-1.15.1-1.fc20.noarch 2/3
Installing : bzr-2.6.0-2.fc20.x86_64 3/3
Verifying : python-crypto-2.6.1-1.fc20.x86_64 1/3
Verifying : python-paramiko-1.15.1-1.fc20.noarch 2/3
Verifying : bzr-2.6.0-2.fc20.x86_64 3/3
Installed:
bzr.x86_64 0:2.6.0-2.fc20
Dependency Installed:
python-crypto.x86_64 0:2.6.1-1.fc20 python-paramiko.noarch 0:1.15.1-1.fc20
Complete!
همانطور که در متن بالا می بینید به ما گفته برای نصب bzr چند پکیج دیگه هم مانند پایتون و موارد دیگر نصب شده است.
محل repository های yum
دقیقا مثل دیبان در این جا هم ما فایل تنظیمات را داخل etc در /etc/yum.repos.d/ پیدا می کنیم که تمام فایل های این قسمت یک repository می باشند، برای نمونه فایل fedora-updates.repo را باز می کنیم:
$ cat /etc/yum.repos.d/fedora-updates.repo
[updates]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/$basearch/
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
[updates-debuginfo]
name=Fedora $releasever - $basearch - Updates - Debug
failovermethod=priority
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/$basearch/debug/
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-debug-f$releasever&arch=$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
[updates-source]
name=Fedora $releasever - Updates Source
failovermethod=priority
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/SRPMS/
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-source-f$releasever&arch=$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
و همچنین یک فایل به آدرس /etc/yum.conf/ داریم که تنظیمات خود دستور yum می باشد.
حذف با rpm
برای حذف یک پکیج با دستور rpm کافیه از سوئیچ e- استفاده کنیم:
[root@localhost ~]# rpm -e bzr
نکته ای که اینجا داریم برعکس apt نمیتواند dependencies های آن را شناسایی و حذف کند، یعنی فایل هایی که به واسته نصب آن نصب شده بود را پاک نمی کند دلیل آن هم این است که dependencies ها را در هیچ دیتابیسی ذخیره نمی کند.
آموزش Upgrading با yum
شما با دستور زیر به راحتی می توانید تمام پکیج های خود را بروزرسانی کنید و نکته ای هم که دارد گفتیم برعکس apt نیاز ندارد اول update بزنید و سپس Upgrad کنید:
# yum upgrade
شما می توانید با دستور زیر بگید تمام پکیج هایی که با z شروع می شود را بروزرسانی کن:
# yum upgrade 'z*'
چند نکته در yum:
- اگر با i- استفاده کنید فقط نصب می کند
- اگر با U- استفاده کنید هم نصب می کند و هم بروزرسانی
- اگر با F- استفاده کنید فقط پکیج هایی که نصب هستن را بروزرسانی می کند
- اگر v- استفاده کنید یعنی توضیحاتی هم به شما نمایش دهد
- اگر h- استفاده کنید (به معنی هشتگ #) یعنی روند نصب را به شما نمایش دهد
برای مثال دستور نصب را به شکل زیر وارد می کنیم:
# yum -ihv bzr
دریافت اطلاعات از yum
شما می توانید با دستورات زیر اطلاعاتی درباره پکیج های نصب شده یا نصب نشده پیدا کنید که چند مثال اوردیم.
اگر پکیج نصب شده باشد:
[root@localhost ~]# yum list bzr
Loaded plugins: langpacks
Installed Packages
bzr.x86_64 2.6.0-2.fc20 @fedora
اگر پکیج نصب نشده باشد ولی در مخازن مجود باشد:
[root@localhost ~]# yum list emacs
Loaded plugins: langpacks
Available Packages
emacs.x86_64 1:24.3-25.fc20 updates
همچنین با سوئیچ q- هم اطلاعات مختصری می دهد.
اگر پکیج نصب شده باشد:
[root@localhost ~]# rpm -q bzr
bzr-2.6.0-2.fc20.x86_64
اگر پکیج نصب نشده باشد:
[root@localhost ~]# rpm -q emacs
package emacs is not installed
برای دیدن اطلاعات پکیج ها به صورت تکمیلی تر هم می توانید از دستور info استفاده کنید:
نمونه پکیج نصب شده:
[root@localhost ~]# yum info bzr
Loaded plugins: langpacks
Installed Packages
Name : bzr
Arch : x86_64
Version : 2.6.0
Release : 2.fc20
Size : 29 M
Repo : installed
From repo : fedora
Summary : Friendly distributed version control system
URL : http://www.bazaar-vcs.org/
License : GPLv2+
Description : Bazaar is a distributed revision control system that is powerful, friendly,
: and scalable. It is the successor of Baz-1.x which, in turn, was
: a user-friendly reimplementation of GNU Arch.
نمونه پکیج نصب نشده:
[root@localhost ~]# yum info emacs
Loaded plugins: langpacks
Available Packages
Name : emacs
Arch : x86_64
Epoch : 1
Version : 24.3
Release : 25.fc20
Size : 2.9 M
Repo : updates/20/x86_64
Summary : GNU Emacs text editor
URL : http://www.gnu.org/software/emacs/
License : GPLv3+
Description : Emacs is a powerful, customizable, self-documenting, modeless text
: editor. Emacs contains special code editing features, a scripting
: language (elisp), and the capability to read mail, news, and more
: without leaving the editor.
:
: This package provides an emacs binary with support for X windows.
جستجو با yum
برای این که با کمک yum جستجو انجام دهید به صورت زیر عمل کنید، yum تمام پکیج هایی که کلمه شما در داخل آن باشد را پیدا و نمایش می دهد:
[root@localhost ~]# yum search hack
Loaded plugins: langpacks
=================================================== N/S matched: hack ===================================================
nethack-vultures.x86_64 : NetHack - Vulture's Eye and Vulture's Claw
python-hacking.noarch : OpenStack Hacking Guideline Enforcement
...
...
wmMatrix.x86_64 : DockApp version of Jamie Zawinski's xmatrix screensaver hack
Name and summary matches only, use "search all" for everything.
با دستور زیر اول تمام پکیج های نصب شده را میارد (qa-) و سپس با grep گفتیم هرچی داخلش vim داشت نمایش بده:
[root@localhost ~]# rpm -qa | grep vim
vim-minimal-7.4.027-2.fc20.x86_64
و یا با دستور زیر گفتیم پکیج bzr چه فایل هایی را روی سیستم کپی کرده است و به دلیل کمبود جا با head گفتیم چنتای اولش رو نشون بده
[root@localhost ~]# rpm -ql bzr | head
/etc/bash_completion.d
/etc/bash_completion.d/bzr
/usr/bin/bzr
/usr/lib64/python2.7/site-packages/bzr-2.6.0-py2.7.egg-info
/usr/lib64/python2.7/site-packages/bzrlib
...
...
و دستور زیر عمل برعکس بالا رو انجام میده، برای مثال میخواهیم بدانیم فایل /usr/bin/bzr را کی کپی کرده است، پس به صورت زیر می نویسیم:
[root@localhost ~]# rpm -qf /usr/bin/bzr
و با دستور زیر نیز به ما می گوید پکیج مورد نظر به چه مواردی نیاز دارد تا اجرا شود:
[root@localhost ~]# rpm -qR bzr
/usr/bin/python
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
...
...
همچنین با دستور زیر لیست تمام Dependency های یک نرم افزار را می دهد:
[root@localhost ~]# yum deplist bzr
همچنین با whatprovides هم میتوان یکسری اطلاعات درباره پکیج مورد نظر هم قبل نصب پیدا کرد:
[root@localhost ~]# yum whatprovides bzr
Loaded plugins: langpacks
bzr-2.6.0-2.fc20.x86_64 : Friendly distributed version control system
Repo : fedora
یکپارچگی
rpm برای این که فایل ها به درستی دانلود شود و امنیت شما رو حفظ کند برای تمام پکیج ها یک امضای دیجیتال قرار می دهد که با K- یا checksig– می توانید آن فایل را برسی کنید که از الگریتم های MD5 و SHA1 استفاده می کند:
[root@localhost ~]# rpm -vK bzr-2.6.0-2.fc20.x86_64.rpm
bzr-2.6.0-2.fc20.x86_64.rpm:
Header V3 RSA/SHA256 Signature, key ID 246110c1: OK
Header SHA1 digest: OK (171c91fbd14416ac44c0f6d396826d583c3840ce)
V3 RSA/SHA256 Signature, key ID 246110c1: OK
MD5 digest: OK (c4478d64f009d07cb17d018b377677ab)
دستور V- میاد پکیج رو برسی میکنه اگه اشکالی پیدا کند می گوید فلان فایل اشکال دارد در غیر این صورت هیچ پیغامی نمایش نمی دهد.
اگر bzr نصب باشد و دستور زیر را بزنید و هیچ اشکالی پیدا نکند چیزی نمایش نمی دهد:
[root@localhost ~]# rpm -V bzr
حال ما یک فایل را از bzr پاک میکنیم
[root@localhost ~]# rm /etc/bash_completion.d/bzr
rm: remove regular file ‘/etc/bash_completion.d/bzr’? y
حال اگر دوباره دستور اول را بزنیم اینبار متوجه می شود که یک فایل حذف شده است:
[root@localhost ~]# rpm -V bzr
missing /etc/bash_completion.d/bzr
و برای درست کردن آن نیز باید دوباره bzr را با دستور زیر reinstall کنیم:
[root@localhost ~]# yum reinstall bzr
yum یک ابزار دارد به نام yumdownloader که پکیج مورد نظر ما را فقط دانلود میکند و نصب نمی کند، اگر با سوئیچ resolve– استفاده شود تمام dependencies ها را نیز دانلود می کند:
[root@localhost ~]# yumdownloader --resolve bzr
در اخر هم بد نیست یه مقایسه بین توزیع های مختلف لینوکس داشته باشیم:
دستورات آپدیت لیست پکیج ها | استفاده از مدیر بسته YUM و RPM