مدیریت بسته های نرم افزاری

نرم افزار ها در سيستم عامل هاي بر پايه RedHat در قالب يكسري فايل با پسوند rpm بسته بندي مي شوند فايل هاي rpm علاوه بر بسته هاي نرم افزاري شامل يكسري اطلاعات ديگر در مورد بسته هاي مي باشند اين اطلاعات شامل توضيحات، پيش نياز ها، معماري(32 يا 64 بيتي)، سازنده، حجم(اندازه)، لايسنس و يكسري اطلاعات ديگر مي باشد.  زماني كه سيستم عامل را نصب مي كنيد مي توانيد بسته هاي نرم افزاري مورد نياز خود را با فرآيند نصب سيستم عامل اضافه و يا حذف نماييد سيستم عاملي هايي نظير CentOS كه مشتق گرفته از RedHat مي باشند از سيستم بسته بندي rpm براي بسته بندي نرم افزارها استفاده مي كنند براي مديريت بسته هاي rpm ابزارهاي فراواني وجود دارد دو مورد از بهترين و پراستفاده ترين اين ابزار هاي yum و rpm مي باشد كه ما در اين نوشته اين دو مورد را مختصرا مورد بررسي قرار خواهيم داد.

yum: دستور yum يكي از پراستفاده ترين ابزار ها براي مديريت بسته هاي نرم افزاري مي باشد اين دستور به صورت خودكار بسته هاي نرم افزاري را به همراه پيش نياز هاي آن از مخازن انلاين و يا آفلاين نرم افزاري دانلود و به ترتيب نصب مي نمايد اين دستور در بيشتر موارد به دستور rpm ترجيح داده مي شود.
rpm: دستور rpm براي نصب بسته هاي نرم افزاري از سيستم محلي مانند هارد ديسك و يا سي دي/ دي وي دي به كار گرفته مي شود از جمله كار هايي كه با اين دستور مي توان انجام داد مي توان به حذف و پرس و جوي بسته هاي نرم افزاري اشاره كرد اين دستور در صورت نصب نبودن پيش نياز ها هيچ اقدامي نسبت به نصب آنها انجام نمي دهد و در صورت نصب نبودن پيش نياز ها فرآيند نصب با مشكل مواجه مي شود.

كار با مخازن نرم افزاري

مخازن نرم افزاري توسط يكسري فايل با پسوند repo كه در شاخه /etc/yum.repo.d/ قرار گرفته اند براي سيستم معرفي مي شوند هر چند تعداد اين مخازن در سيستم بيشتر باشد تعداد نرم افزارهايي كه توسط ابزار yum مي توان به نصب آنها اقدام نمود بيشتر مي شود روش هاي متفاوتي براي اضافه كردن مخازن نرم افزاري وجود دارد كه در ادامه چند مورد از پركاربردترين آنها را مورد بررسي قرار خواهيم داد. براي اضافه كردن يك مخرن به سيستم بايد يك فايل در شاخه /etc/yum.repo.d/ كه شامل آدرس مخزن و فايل كليد GPG آن مي باشد ايجاد شود فايل كليد GPG براي verify كردن بسته هاي دانلود شده از مخزن مورد استفاده قرار مي گيرد. فايل هاي repo كه مشخص كننده مخازن مي باشد را مي توان هم به صورت دستي ايجاد كرد و هم به صورت خودكار، در روش خودكار روال كار به اين شكل هست كه توليد كننده مخزن براي ايجاد فايل repo يك فايل rpm توليد مي كند كه كاربر با نصب فايل rpm فايل repo آن مخزن به صورت خودكار ايجاد مي شود.

اضافه كردن فايل repo(مخزن نرم افزار) به صورت دستي:

براي اضافه كردن فايل repo به صورت دستي همان طور كه قبلا اشاره شده بايد يك فايل با پسوند repo در شاخه /etc/yum.repo.d/ ايجاد كنيد محتويات اين فايل مي تواند مقادير متفاوتي باشد كه در زير برخي از پارامتر هاي و مقادير مربوط به آن را مورد بررسي قرار خواهيم داد.
در مثال زير فايل هاي repo موجود در شاخه/etc/yum.repo.d/ را مشاهده مي كنيد.

[root@mcentoss ~]# ls /etc/yum.repos.d/ -l
total 20
-rw-r--r--. 1 root root 1612 Jul  4 15:30 CentOS-Base.repo
-rw-r--r--. 1 root root  640 Jul  4 15:30 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 1331 Jul  4 15:30 CentOS-Sources.repo
-rw-r--r--. 1 root root  156 Jul  4 15:30 CentOS-Vault.repo
-rw-r--r--. 1 root root   64 Oct  6 16:19 media.repo

محتويات فايل media.repo در بخش زير نمايش داده شده است.

[root@mcentoss yum.repos.d]# cat media.repo
[media]
name=media
baseurl=file:///centos7
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[media]: مشخص كننده يك مخزن مي باشد چون در يك فايل repo مي توان چندين مخرن را معرفي كرد با استفاده از [] مي توان مخازن مختلف را در يك فايل معرفي كرد.
name: اين پارامتر مشخص كننده نام مخزن مي باشد كه به هنگام استفاده از دستور yum مورد نياز مي باشد.
baseurl: اين پارامتر اصلي ترين پارامتر اين نوع فايل ها بوده و مشخص كننده آدرس مخزن نرم افزار مي باشد همان طور كه در بخش بالا مشاهده مي كنيد در مخزن media ما از يك شاخه محلي كه شامل دي وي دي نصب CentOS مي باشد استفاده كرديم از جمله مقاديري كه اين پارامتر مي تواند داشته باشد آدرس مخازن نرم افزاري آنلاين مي باشد كه به مانند مثال زير مي باشند.
http://mirror.centos.org/centos/$releasever/updates/$basearch/enabled: اين پارامتر مشخص كننده فعال يا غير فعال بودن يك مخزن مي باشد كه مي تواند دو مقدار 0 يا 1 را به معني غير فعال و فعال بودن بپذيرد.
gpgcheck: اين پارامتر همانند پارامتر بالا مي تواند دو مقدار 0 يا 1 را داشته باشد و مشخص كننده بررسي فايل هاي دانلودي از جهت درست دانلود شدن آنها مورد استفاده قرار مي گيرد.
gpgkey: اين پارمتر نيز مشخص كننده فايل كليد GPG مي باشد كه براي verigy كردن بسته هاي دانلودي مورد استفاده قرار مي گيرد مقدار اين پارامتر نيز مانند baseurl مي تواند به صورت آفلاين يا آنلاين باشد.
بعد از اينكه فايل repo ساخته شد نياز است تا فايل كليد GPG بر روي سيستم نصب شود براي اين منظور از دستور زير استفاده كنيد مقدار /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 در دستور زير مشخص كننده آدرس فايل GPG مي باشد كه مي تواند هم به صورت محلي باشد هم به صورت آنلاين.

[root@mcentoss yum.repos.d]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

اضافه كردن فايل repo (مخزن نرم افزار) به صورت خودكار:

براي نصب مخازن نرم افزاري به صورت خودكار از دستور زير استفاده كنيد مقدار http://rpm.livna.org/livna-release-6.rpm مشخص كننده فايل rpm مربوط به مخزن نرم افزار مورد نياز مي باشد كه هم مي توانيد به صورت يك فايل محلي باشد هم به صورت يك فايل آنلاين.

[root@mcentoss ~]# rpm -Uhv http://rpm.livna.org/livna-release-6.rpm

دستور yum:

پيدا كردن بسته ها:

دستور yum گزينه هاي متفاوتي براي پيداكردن اطلاعات در مورد بسته هاي نرم افزاري را داراست، همچنين با اين دستور مي توان به دنبال بسته هاي نرم افزاري در ميان مخازن نرم افزاري گشت، نمونه اي از اين گزينه هاي را در اين نوشته مورد بررسي قرا خواهيم داد.

گزينه list:

اين گزينه براي پيداكردن بسته هاي نرم افزاري با شرايط خاص به كار مي رود به مثال هاي زير توجه كنيد.

[root@mcentoss ~]# yum list available

در اين مثال كليه بسته هاي نرم افزاري موجود در مخازن نرم افزاري نمايش داده مي شود.

[root@mcentoss ~]# yum list installed

در اين مثال كليه بسته هاي نرم افزاري نصب شده بر روي سيستم نمايش داده مي شود.

[root@mcentoss ~]# yum list extra

در اين مثال نرم افزار هاي نصب نشده موجود در مخازن نرم افزاري نمايش داده مي شود.

[root@mcentoss ~]# yum list http*

در اين مثال كليه بسته هاي نرم افزاري كه اول نام آنها شامل كلمه http مي باشد نمايش داده مي شود.

[root@mcentoss ~]# yum list updates

در اين مثال كليه به روز رساني هاي بسته هاي نرم افزاري نصب شده نمايش داده مي شود.

گزينه info:

اين گزينه براي نمايش توضيحات بسته هاي نرم افزاري مورد استفاده قرار مي گيرد اين توضيحات از مخازن نرم افزاري استخراج مي شود به مثال هاي زير توجه كنيد.

[root@mcentoss ~]# yum info nano

در اين مثال توضيحات مربوط به بسته ي نرم افزاري nano نمايش داده مي شود.

[root@mcentoss ~]# yum info word*

در اين مثال توضيحات مربوط به بسته هاي نرم افزاري كه با كلمه ي word شروع مي شوند نمايش داده مي شود.

گزينه search:

اين گزينه براي جستجوي يك رشته در توضيحات، بسته بندي كننده، نام بسته، و يا خلاصه بسته به كار مي رود و شكل استفاده آن به صورت زير مي باشد.

[root@mcentoss ~]# yum search mp3

گزينه whatprovides:

اين گزينه براي جستجو در ميان فايل ها و يا وي‍ژگي هاي بسته هاي نرم افزاري به صورت زير به كار گرفته مي شود.

[root@mcentoss ~]# yum whatprovides ogg

نصب بسته هاي نرم افزاري:

براي نصب بسته هاي نرم افزاري از ميان مخازن نرم افزاري معرفي شده به سيستم از گزينه ي install دستور yum به شكل زير استفاده كنيد.

[root@mcentoss ~]# yum install wordpress

در اين مثال بسته wordpress را مي خواهيم نصب كنيم با اجراي دستور بالا اين بسته به همراه پيش نياز هاي آن به صورت خودكار از مخازن نرم افزاري دانلود و به ترتيب نصب مي شوند. به هنگام فرآيند نصب اطلاعاتي از قبيل نسخه بسته نرم افزاري، معماري(32 يا 64 بيتي)، اندازه(حجم)دانلودي و نصبي، پيش نياز هاي آن به همراه مخازن نرم افزاري مورد استفاده براي نصب بسته هاي نرم افزاري نمايش داده مي شود و از سوالي مبني بر اينكه آيا اين اطلاعات مورد تاييد مي باشد يا نه پرسيده مي شود كه بايد حرف y به منزله ي yes را وارد كنيد تا فرآيند نصب ادامه پيدا كند اگر مي خواهيد از پرسيدن اين سوال خودداري شود مي توانيد ارامتر –y به عنوان ورودي به شكل زير به دستور yum بفرستيد به مثال زير توجه كنيد.

[root@mcentoss ~]# yum –y install wordpress

دستور yum علاوه بر اينكه مي تواند بسته هاي نرم افزاري را زا مخازن نرم افزاري نصب كند قابليت اين را هم دارد كه فايل هاي rpm را از فايل سيستم محلي نصب كند گزينه localinstall اين دستور براي اين منظور به شكل زير در دسترس است.

[root@mcentoss ~]# yum localinstall nano-2.3.1-10.el7.x86_64.rpm

در مثال بالا بسته نرم افزاري nano-2.3.1-10.el7.x86_64.rpm مورد نصب واقع مي شود.
بسته هاي نرم افزاري در مخازن به صورت گروهي دسته بندي مي شوند براي مثال گروه XFCR شامل تمامي بسته هاي نرم افزاري مربوط به ميزكار XFCE مي باشد براي نصب گروهي اين بسته هاي مي توان از گزينه groupinstall دستور yum استفاده كرد به مثال زير توجه كنيد.

[root@mcentoss ~]# yum groupinstall XFCE

با اجراي دستور بالا تمامي بسته هاي نرم افزاري در گروه XFCE يكجا نصب مي شوند.

به روز رساني بسته هاي نرم افزاري:

دستور yum علاوه بر نصب بسته هاي نرم افزاري امكان به روز رساني آنها را نيز فراهم كرده است به نمونه هاي زير توجه كنيد.

[root@mcentoss ~]# yum check-update

دستور بالا تمامي بسته هاي نرم افزاري كه امكان به روز رساني آنها به نسخه بالاتر از نسخه ي نصب شده وجود دارد را ليست مي كند.

[root@mcentoss ~]# yum list updates openoffice

دستور بالا كليه ي به روز رساني هاي بسته openoffice را نمايش مي دهد.

[root@mcentoss ~]# yum update openoffice

دستور بالا بسته openoffice را به روزرساني مي كند.

[root@mcentoss ~]# yum update

دستور بالا كليه ي بسته هاي سيستم را به آخرين نسخه به روز رساني مي كند.

[root@mcentoss ~]# yum groupupdate XFCE

دستور بالا كليه ي بسته هاي موجود در گروه XFCE را به روز رساني مي كند.

حذف بسته هاي نرم افزاري:

علاوه بر نصب و به روزرساني بسته هاي نرم افزاري توسط دستور yum امكان حذف بسته ها نيز توسط اين دستور فراهم شده است به مثال هاي زير توجه كنيد.

[root@mcentoss ~]# yum remove nano

دستور بالا بسته nano را حذف مي كند.

[root@mcentoss ~]# yum remove xscreen*

دستور بالا كليه بسته هايي كه با xscreen شروع مي شود را حذف مي كند.

[root@mcentoss ~]# yum groupremove XFCE

دستور بالا كليه ي بسته هاي موجود در گروه XFCE را حذف مي كند.
توجه داشته باشيد كه به هنگام حذف بسته ها با گزينه remove و groupremove بسته هاي كه حذف مي شوند را نمايش داده و تاييديه حذف از كاربر درخواست مي شود كه بايد y را به منزله ي yes وارد كنيد تا فرآيند حذف كامل شود.

پاك سازي كش:

اگر مقدار پارامتر keepcache در فايل /etc/yum.conf برابر 1 باشد بسته ها و يكسري اطلاعات ديگر در قالب فايلهايي در كش در مسير /var/cahce/yum/rep ذخيره مي شود گزينه clean دستور yum قابليت پاك سازي بسته ها، header ها و metadata ها را از كش داراست به مثال هاي زير توجه كنيد.

[root@mcentoss ~]# yum clean packages

مثال بالا كليه ي بسته هاي نرم افزاري موجود در كش را پاك مي كند.

[root@mcentoss ~]# yum clean metadata

مثال بالا كليه ي metadata هاي موجود در كش را پاك مي كند.

[root@mcentoss ~]# yum clean header

مثال بالا كليه ي header هاي موجود در كش را پاك مي كند.

[root@mcentoss ~]# yum clean all

مثال بالا كليه ي بسته هاي نرم افزاري، metadata ها و header ها را از كش پاك مي كند.
علاوه بر گزينه هاي كه در بخش هاي قبلي مورد بررسي قرار داديم دستور yum گزينه هاي ديگري نيز دارد در اين بخش مي خواهيم دو گرينه پركاربرد ديگر كه براي فعال و غير فعال كردن مخازن نرم افزاري مورد استفاده قرار مي گيرد را بررسي قرار خواهيم داد.

گزينه disablerepo:

اين گزينه براي غير فعال كردن يك مخزن مورد استفاده قرار مي گيرد به مثال زير توجه كنيد.

[root@mcentoss ~]# yum --disablerepo=media search httpd

در مثال بالا دستور yum اقدام به جستجو در مورد بسته httpd مي كند با اين كه مخزن media غير فعال شده و در اين مخزن عمل جستجو انجام نمي شود.

گزينه enablerepo:

اين گزينه براي فعال كردن يك مخزن مورد استفاده قرار مي گيرد در مثال زير با توجه به اينكه مخزن media كه با اضافه كردن مقدار 0 به پارامتر enabled در فايل repo آن از قبل غير فعال شده است با فعال كردن آن اقدام به نصب بسته nano مي كند.

[root@mcentoss ~]# yum --enablerepo=media install nano

دستور rpm:

اگر چه دستور yum قابليت نصب بسته هاي rpm را از ديسك محلي و اينترنت را داراست ولي دستور rpm گزينه هاي قابل توجهي براي نصب، پرس و جو و تصديق بسته هاي rpm را داراست اين دستور همچنين قابليت حذف بسته هاي rpm را نيز شامل مي شود براي نصب و حذف بسته هاي با اين دستور نياز به مجوز root داريد ولي براي پرس و جو در مورد بسته هاي نياز به مجوز root نداريد.

نصب بسته ها:

براي نصب بسته هاي نرم افزاري توسط اين دستور بايد از گزينه –ivh استفاده كنيد به مثال زير توجه كنيد.

[root@mcentoss ~]# rpm -ivh nano-2.3.1-10.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:nano-2.3.1-10.el7                ################################# [100%]

همان طور كه قبلا بيان شد اين دستور نمي تواند پيش نياز هاي يك بسته را به صورت خودكار دانلود و نصب كند و در صورت نصب نبودن پيش نياز هاي بسته نصب بسته مورد نظر با خطا مواجه خواهد شد.

به روز رساني بسته ها:

براي به روزرساني يك بسته به نسخه بالاتر از گزينه –Uvh استفاده مي شود توجه داشته باشيد كه اگر يك نسخه پايين تر از بسته در سيستم نصب باشد و بخواهيد با گزينه –ivh اقدام به نصب نسخه بالاتر بكنيد با خطا مواجه خواهيد شد و بايد با گزينه –Uvh اقدام به روزرساني آن بكنيد به مثال زير توجه كنيد.

[root@mcentoss ~]# rpm -Uvh nano-2.3.1-10.el7.x86_64.rpm

حذف بسته ها:

براي حذف بسته ي نرم افزاري از گزينه –e دستور rpm مي توان استفاده كرد براي مثال براي حذف بسته nano مي توان به شكل زير استفاده كرد.

[root@mcentoss ~]# rpm -e nano

توجه داشته باشيد كه با نصب بودن چندين بسته با اسم nano بايد نام آن بهص روت دقيق وارد شود به مثال زير توجه كنيد.

[root@mcentoss ~]# rpm -e nano-2.3.1-10.el7.x86_64

ولي در صورتي كه بخواهيد كليه ي بسته هايي كه نام آنها داراي nano است پاك شود مي توانيد از گزينه –allmatches به صورت زير استفاده كنيد.

[root@mcentoss ~]# rpm -e --allmatches nano

گزينه nodeps:

همان طور كه قبلا چندين بار بيان شد دشتور rpm نمي تواند اقدام به نصب و حذف پيش نياز ها بكند براي ناديده گرفتن پيش نياز ها توسط اين دستور مي توانيد از گزينه –nodeps استفاده كنيد به مثال زير توجه كنيد.

[root@mcentoss ~]# rpm -ivh --nodeps nano-2.3.1-10.el7.x86_64.rpm

در مثال بالا بسته nano بدون توجه به پيش نياز هاي آن نصب مي شود.

پرس و جو در مورد بسته هاي rpm:

دستور rpm گزينه هاي متععدي براي پرس و جو در مورد بسته ها دارد به مثال هاي زير توجه كنيد.

[root@mcentoss ~]# rpm -q nano
nano-2.3.1-10.el7.x86_64

در مثال بالا نسخه بسته نصب شده nano نمايش داده مي شود.

[root@mcentoss ~]# rpm -qp nano-2.3.1-10.el7.x86_64.rpm

در مثال بالا اطلاعات مربوط به فايل nano-2.3.1-10.el7.x86_64.rpm نمايش داده مي شود.

[root@mcentoss ~]# rpm –qa

در مثال بالا كليه ي بسته هاي نصب شده بر روي سيستم نمايش داده مي شود.

[root@dhcp ~]# rpm -qf /etc/dhcp/dhcpd.conf
dhcp-4.2.5-27.el7.centos.x86_64

در مثال بالا بسته اي كه فايل /etc/dhcp/dhcpd.conf متعلق به آن مي باشد را نمايش مي دهد.

[root@mcentoss ~]# rpm -qi nano
Name        : nano
Version     : 2.3.1
Release     : 10.el7
Architecture: x86_64
Install Date: Sat 18 Oct 2014 12:52:18 PM IRST
Group       : Applications/Editors
Size        : 1715901
License     : GPLv3+
Signature   : RSA/SHA256, Fri 04 Jul 2014 08:23:43 AM IRDT, Key ID 24c6a8a7f4a80eb5
Source RPM  : nano-2.3.1-10.el7.src.rpm
Build Date  : Tue 10 Jun 2014 09:17:54 AM IRDT
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem
Vendor      : CentOS
URL         : http://www.nano-editor.org
Summary     : A small text editor
Description :
GNU nano is a small and friendly text editor.

دستور بالا اطلاعات تكميلي در مورد بسته ي nano را نمايش مي دهد.

[root@mcentoss ~]# rpm -qlp nano-2.3.1-10.el7.x86_64.rpm

مثال بالا محتويات فايل nano-2.3.1-10.el7.x86_64.rpm را نمايش مي دهد.

[root@mcentoss ~]# rpm -q --scripts nano
postinstall scriptlet (using /bin/sh):
if [ -f /usr/share/info/nano.info.gz ]; then
  /sbin/install-info /usr/share/info/nano.info.gz /usr/share/info/dir
fi
exit 0
preuninstall scriptlet (using /bin/sh):
if [ $1 -eq 0 ]; then
  if [ -f /usr/share/info/nano.info.gz ]; then
    /sbin/install-info --delete /usr/share/info/nano.info.gz /usr/share/info/dir
  fi
fi
exit 0

در مثال بالا اسكريپت هاي قبل و بعد از نصب بسته nano را نمايش مي دهد.

ساخت مجدد فايل پايگاه داده مربوط به rpm:

اگرفايل پايگاه داده مربو به دستور rpm دچار خرابي شود و امكان كار با دستور rpm و نصب بسته ها وجود نخواهد داشت برای ساخت مجدد فايل پايگاه داده از فايل هاي header بسته هاي نصب شده ابتدا با دستور زير فايل هاي پايگاه داده خراب را پاك كنيد.

[root@mcentoss ~]# rm /var/lib/rpm/__db.00*

سپس با دستور زير فايل پايگاه داده را دوباره ايجاد كنيد.smile icon

[root@mcentoss ~]# rpm --rebuilddb
3 دیدگاه
  1. احسان ملکی says

    جامع و کامل بود. تشکر

  2. milad says

    عالی بود

    ممنون

  3. norasora09 says

    خوب بود .ممنون

دیدگاه

آدرس ایمیل شما منتشر نخواهد شد.