مدیریت بسته ها با ابزار yum
YUM مخفف عبارت Yellowdog Updater Modified و ابزاری برای مدیریت پکیج ها در سیستم عامل لینوکس با توزیع هایی که بر پایه ی rpm هستند (RedHat,Suse,Fedora,CentOS) می باشد.
یکی از چالش های رایج در نصب پکیج ها، مسئله ی وابستگی آنها به یکدیگر می باشد. از ویژگی های بارز yum کشف این وابستگی ها و در نهایت نصب خودکار آنها از طریق Repository های تعریف شده می باشد، به گونه ایی که کاربر درگیر این مسئله نمی شود.
* فایل تنظیمات ابزار yum :
ابزار yum توسط یک فایل متنی که در مسیر etc/ و با نام yum.conf قرار دارد، مدیریت می شود. رایج است که تنظیمات عمومی و کلی ابزار yum از طریق این فایل صورت گیرد و تنظیمات خاص برای هر Repository از طریق فایل /etc/yum.repo.d/<name.repo> تعریف و تنظیم شود.
پارامترهای مختلفی برای پیکربندی ابزار yum وجود دارد، در ادامه به معرفی تعدادی از آنها می پردازیم.
پارامتر assumeyes :
در صورتیکه این پارامتر برابر با یک باشد، ابزار yum برای انجام Transactionها تاییدیه نمی گیرد. مقدار این پارامتر در حالت پیش فرض برابر صفر می باشد.
پارامتر keepcache :
در حالت پیشفرض مقدار این گزینه برابر با صفر میباشد، یعنی پکیج های دانلود شده بعد از نصب شدن حذف می گردند. برای جلوگیری از حذف پکیج ها می توان این مقدار را به یک تغییر داد.
پارامتر cachedir :
این گزینه محل قرارگرفتن پکیج های دانلود شده و اطلاعات Repository ها را تعیین می کند.
پارامتر logfile :
توسط این گزینه فایل log تعیین می شود. بصورت پیشفرض مسیر این فایل بصورت زیر می باشد.
cat /var/log/yum.log
Apr 23 09:22:39 Erased: firefox.x86_64
Apr 23 09:23:08 Installed: tree-1.6.0-10.el7.x86_64
پارامتر gpgcheck :
این گزینه تعیین می کند که پکیج ها قبل از نصب از نظر اصالت بررسی شوند یا خیر. یعنی hedear پکیج با استاندارد معرفی شده توسط سازنده ی پکیج تطابق داده می شود. برای اینکار نیاز به برقراری اینترنت می باشد. بصورت پیشفرض این گزینه فعال میباشد.
پارامتر reposdir :
مسیر قرار گرفتن فایلهای تنظیمات Repository ها (فایل هایی با پسوند repo.)، توسط این گزینه مشخص می شود. دایرکتوری پیشفرض /etc/yum.repos.d/ می باشد.
پارامتر debuglevel :
این پارامتر با عددی بین 1 و 10 مقداردهی می شود. در صورت انتخاب عدد بزرگتر، جزئیات بیشتری در خروجی دستور yum به نمایش در می آید. در حالت پیشفرض این پارامتر برابر با عدد دو می باشد. برای مثال وضعیت خروجی را در دو حالت بررسی می کنیم.
vi /etc/yum.conf
debuglevel = 0
yum install treeee
Error: Nothing to do
*****
vi /etc/yum.conf
debuglevel = 2
yum install treeee
Not loading "rhnplugin" plugin, as it is disabled
Loading "ulninfo" plugin
Loading "langpacks" plugin
Adding en_US.UTF-8 to language list
Adding fa_IR.UTF-8 to language list
Config time: 0.048
Yum version: 3.4.3
rpmdb time: 0.000
Setting up Package Sacks
RPMFusionNF-Update | 3.3 kB 00:00:00
isa | 2.9 kB 00:00:00
pkgsack time: 0.027
Checking for virtual provide or file-provide for treeee
No package treeee available.
Error: Nothing to do
پارامتر exactarch :
در حالت پیشفرض این پارامتر برابر یک میباشد، که باعث میشود معماری دقیق پکیج ها در زمان به روز رسانی در نظر گرفته شود. یعنی نمیتوان پکیج firefox.i386 را بوسیله firefox.i686 به روز رسانی نمود.
* با توجه به گزینه های موجود، کاربران می تواند بر اساس نیاز خود به شخصی سازی ابزار yum اقدام نمایند. ابزار yum زمانی بهترین عملکرد(حل مسئله ی وابستگی پکیج ها) را دارد که برای آن Repository تعریف شود.
ایجاد Repository در مطلبی با عنوان ایجاد مخزن در لینوکس (repository)بیان شده است.
* بررسی Repository ها :
با استفاده از دستور زیر وضعیت تمامی Repository های سیستم نمایش داده می شود.
yum repolist all
Loaded plugins: langpacks, ulninfo
repo id repo name status
Oracle_6u5_x64 Oracle_6u5_x64 enabled: 3,752
Oracle_6u7_x64 Oracle_6u7_x64 enabled: 3,889
Oracle_6u9_x64 Oracle_6u9_x64 disabled
repolist: 7,641
برای نمایش Repository های فعال سیستم از دستور زیر استفاده می شود.
yum repolist enabled or yum repolist
Loaded plugins: langpacks, ulninfo
repo id repo name status
Oracle_6u5_x64 Oracle_6u5_x64 3,752
Oracle_6u7_x64 Oracle_6u7_x64 3,889
repolist: 7,641
با دستور زیر Repository های غیرفعال نمایش داده می شود.
yum repolist disabled
Loaded plugins: langpacks, ulninfo
repo id repo name
Oracle_6u9_x64 Oracle_6u9_x64
repolist: 0
* نمایش پکیج ها :
با دستور زیر لیست تمامی پکیج های در دسترس Repository ها و پکیج های نصب شده بر روی سیستم نمایش می یابد.
yum list all or yum list
Loaded plugins: langpacks, ulninfo
Installed Packages
389-ds-base.x86_64 1.3.4.0-19.el7 @anaconda/7.2
389-ds-base-libs.x86_64 1.3.4.0-19.el7 @anaconda/7.2
ModemManager.x86_64 1.1.0-8.git20130913.el7 @anaconda/7.2
atk.i686 1.30.0-1.el6 Oracle_6u5_x64
atlas.i686 3.8.4-2.el6 Oracle_6u5_x64
atlas.x86_64 3.8.4-2.el6 Oracle_6u5_x64
audispd-plugins.x86_64 2.3.7-5.el6 Oracle_6u7_x64
audit-libs.i686 2.3.7-5.el6 Oracle_6u7_x64
audit-libs-devel.i686 2.3.7-5.el6 Oracle_6u7_x64
...
در خروجی دستور بالا، ستون اول مربوط به نام پکیج، ستون دوم شماره نسخه پکیج و ستون سوم وضعیت پکیج را نشان می دهد. ستون سوم برای پکیج هایی که بر روی سیستم نصب شدهاند با کاراکتر @ شروع می شود و برای پکیج هایی که بر روی سیستم نصب نشدهاند، فقط نام Repository ایی که در آن قرار دارند نمایش می یابد.
دستور زیر لیستی از پکیج های در دسترس جهت نصب را نشان می دهد.
yum list available
برای دیدن لیست تمامی پکیج های نصب شده بر روی سیستم میتوان از دستور زیر استفاده کرد.
yum list installed
دستور زیر سبب نمایش لیست پکیج هایی می شود که بر روی سیستم نصب شده اند، ولی اکنون در هیچ یک از Repository ها موجود نمی باشند.
yum list extras
توسط دستور زیر میتوان لیست پکیج هایی که دارای نسخه بالاتر جهت بروزرسانی در Repository ها هستند، را مشخص نمود.
yum list updates or yum check-update
Loaded plugins: langpacks, ulninfo
Oracle_6u5_x64 | 2.9 kB 00:00:00
Oracle_6u7_x64 | 2.9 kB 00:00:00
Updated Packages
device-mapper-multipath.x86_64 0.4.9-87.0.2.el6 Oracle_6u7_x64
gdisk.x86_64 0.8.10-1.el6 Oracle_6u7_x64
glx-utils.x86_64 10.4.3-1.el6 Oracle_6u7_x64
grep.x86_64 2.20-3.el6 Oracle_6u7_x64
...
* جستجوی پکیج :
برای جستجوی یک پکیج در میان پکیج های نصب شده بر روی سیستم و Repository ها، میتوان از دستور زیر استفاده نمود.
yum list all '*firefox*'
Loaded plugins: langpacks, ulninfo
Installed Packages
firefox.x86_64 38.3.0-2.0.1.el7_1 @anaconda/7.2
Available Packages
firefox.i686 17.0.10-1.0.1.el6_4 Oracle_6u5_x64
در خروجی دو پکیج مشاهده می شود، در ابتدا پکیجی که بر روی سیستم نصب شده است و در انتها پکیجی که در دسترس قرار دارد و میتوان برای نصب آن اقدام کرد.
با دستور زیر میتوان یک پکیج را در میان پکیج های نصب شده بر روی سیستم جستجو نمود.
yum list installed '*firefox*'
Loaded plugins: langpacks, ulninfo
Installed Packages
firefox.x86_64 38.3.0-2.0.1.el7_1 @anaconda/7.2
برای جستجو در میان نام پکیج ها و توضیحات مربوط به آنها از پارامتر search استفاده می شود.
yum search multi
Loaded plugins: langpacks, ulninfo
============= N/S matched: multi ===============
device-mapper-multipath.x86_64 : Tools to manage multipath devices using device-mapper
kdemultimedia.x86_64 : KDE Multimedia applications
kdemultimedia-devel.i686 : Developer files for kdemultimedia
gettext.x86_64 : GNU libraries and utilities for producing multi-lingual messages
ksig.x86_64 : A graphical application to manage multiple email signatures
Name and summary matches only, use "search all" for everything.
* نمایش متاداده یک پکیج :
با پارامتر info اطلاعات مربوط به یک پکیج نمایش داده می شود.
yum info tree
Loaded plugins : langpacks, ulninfo
Installed Packages
Name : tree
Arch : x86_64
Version : 1.5.3
Release : 3.el6
Size : 65 k
Repo : installed
From repo : Oracle_6u7_x64
Summary : File system tree viewer
URL : http://mama.indstate.edu/users/ice/tree/
License : GPLv2+
Description : The tree utility recursively displays the contents of directories in a
: tree-like format. Tree is basically a UNIX port of DOS tree utility.
با دستور زیر میتوان مشخص کرد که یک فایل توسط چه پکیجی ایجاد شده است.
yum provides /etc/dhcp/dhclient.d/ntp.sh
Loaded plugins: langpacks, ulninfo
ntp-4.2.6p5-5.el6.x86_64 : The NTP daemon and utilities
Repo : Oracle_6u7_x64
Matched from:
Filename : /etc/dhcp/dhclient.d/ntp.sh
ntp-4.2.6p5-22.el7.x86_64 : The NTP daemon and utilities
Repo : @anaconda/7.2
Matched from:
Filename : /etc/dhcp/dhclient.d/ntp.sh
خروجی دو پکیج را نشان می دهد، پکیج اول بر روی سیستم نصب نشده است، اما در صورت نصب، این فایل ایجاد خواهد شد. و پکیج دوم که بر روی سرور نصب شده و این فایل را ایجاد نموده است.
برای تشخیص اینکه یک پکیج چه فایل هایی را ایجاد نموده و یا خواهد نمود، می توان از دستور زیر استفاده کرد.
repoquery --list samba.x86_64
/etc/logrotate.d/samba
/etc/openldap/schema
/etc/openldap/schema/samba.schema
/etc/pam.d/samba
/etc/rc.d/init.d/nmb
/etc/rc.d/init.d/smb
/etc/samba/smbusers
/usr/bin/eventlogadm
/usr/bin/mksmbpasswd.sh
…
* نمایش Dependency های یک پکیج :
yum deplist tree
Loaded plugins: langpacks, ulninfo
package: tree.x86_64 1.5.3-3.el6
dependency: libc.so.6(GLIBC_2.4)(64bit)
rovider: glibc.x86_64 2.12-1.166.el6
dependency: rtld(GNU_HASH)
provider: glibc.x86_64 2.12-1.166.el6
provider: glibc.i686 2.12-1.166.el6
* نصب پکیج :
برای نصب پکیج بصورت زیر عمل می شود.
yum install [Package_Name]
yum install tree.x86_64
فرایند نصب پکیج در مرحله ایی که با رنگ سبز مشخص شد نیاز به تایید دارد، برای اینکه این توقف ایجاد نشود می توان از سوئیچ -y همراه با دستور استفاده کرد.
yum -y install tree.x86_64
برای نصب چند پکیج بصورت همزمان، کافیست نام پکیج ها پشت سرهم وارد شوند.
yum install [package_name1] [package_name2]
نکته : نحوه ی چگونگی استفاده از نام پکیج ها در دستور yum را با مثال نشان می دهیم.
yum install tr
در دستور بالا چون هیچ پکیجی با نام tr در دسترس نیست، کاری انجام نمی شود.
yum install tr*
دستور بالا سبب نصب تمامی پکیج هایی میشود که نامشان با tr شروع میشود.
yum install tree
دستور بالا سبب نصب پکیج هایی با نام tree میشود. (مانندtree.x86_64 , tree.i386)
* حذف پکیج :
برای حذف یک پکیج از دستور زیر استفاده می شود.
yum -y remove tree or yum -y erase tree
* نصب مجدد یک پکیج :
این پارامتر زمانی مورد استفاده قرار می گیرد که بطور مثال یکی از فایل های مربوط به یک پکیج دچار مشکل شود. با این روش تنظیماتی که کاربر بر روی یک پکیج اعمال نموده است، پاک نمی شود.
yum reinstall [package_name]
* انجام عمل حذف و نصب پکیج بصورت همزمان :
جهت حذف پکیج lftp و نصب پکیج vsftpd از دستور زیر استفاده می شود.
yum swap lftp vsftpd
* ارتقا پکیج :
جهت ارتقا یک پکیج به نسخه بالاتر می توان بصورت زیر عمل کرد.
yum update [package_name]
yum upgrade [package_name]
تفاوت update , upgrade :
فرایند update تغییراتی در جزئیات برنامه اعمال می کند مانند رفع یک مشکل، ولی در فرایند upgrade تغییرات در ساختار اصلی برنامه انجام می گیرد مانند تغییر نسخه یک سیستم عامل.
برای بروزرسانی تمامی پکیج های سرور می توان از دستور زیر استفاده کرد.
yum update
* تنزل نسخه پکیج :
با استفاده از دستور زیر می توان ورژن پکیج را کاهش داد.
yum downgrade [package_name]
نکته : برای update , upgrade , downgrade کردن پکیج ها دسترسی به پکیج مقصد ضروریست. مثلاً در downgrade از نسخه 7.5 به 6.8 باید وضعیت نسخه 6.8 ، available باشد.
* پاک کردن Cache :
در حالت پیشفرض مسیر var/cache/yum/ محل قرار گرفتن Cache مربوط به ابزار yum می باشد. اطلاعاتی در خصوص مخازن سیستم ، پکیج های دانلود شده و … در این مکان قرار می گیرد.
با دستور زیر همه ی قسمتهای Cache مربوط به yum حذف می شود.
yum clean all
پارامتر clean گزینه هایی برای حذف جداگانه ی هر قسمت نیز دارد. این گزینه ها عبارتند از :
با دستور زیر میتوان پکیج های دانلود شده بر روی سیستم را حذف نمود.
yum clean packages
( این متن در حال تکمیل شدن می باشد. )
عالی بود