نوشته شده توسط تایماز اسمعلی.
نرم افزار ها در سیستم عامل های بر پایه RedHat در قالب یکسری فایل با پسوند rpm بسته بندی می شوند فایل های rpm علاوه بر بسته های نرم افزاری شامل یکسری اطلاعات دیگر در مورد بسته های می باشند این اطلاعات شامل توضیحات، پیش نیاز ها، معماری(۳۲ یا ۶۴ بیتی)، سازنده، حجم(اندازه)، لایسنس و یکسری اطلاعات دیگر می باشد.
زمانی که سیستم عامل را نصب می کنید می توانید بسته های نرم افزاری مورد نیاز خود را با فرآیند نصب سیستم عامل اضافه و یا حذف نمایید سیستم عاملی هایی نظیر 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@mcentos ~]# 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@mcentos 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: این پارامتر مشخص کننده فعال یا غیر فعال بودن یک مخزن می باشد که می تواند دو مقدار ۰ یا ۱ را به معنی غیر فعال و فعال بودن بپذیرد.
gpgcheck: این پارامتر همانند پارامتر بالا می تواند دو مقدار ۰ یا ۱ را داشته باشد و مشخص کننده بررسی فایل های دانلودی از جهت درست دانلود شدن آنها مورد استفاده قرار می گیرد.
gpgkey: این پارمتر نیز مشخص کننده فایل کلید GPG می باشد که برای verigy کردن بسته های دانلودی مورد استفاده قرار می گیرد مقدار این پارامتر نیز مانند baseurl می تواند به صورت آفلاین یا آنلاین باشد.
بعد از اینکه فایل repo ساخته شد نیاز است تا فایل کلید GPG بر روی سیستم نصب شود برای این منظور از دستور زیر استفاده کنید مقدار /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 در دستور زیر مشخص کننده آدرس فایل GPG می باشد که می تواند هم به صورت محلی باشد هم به صورت آنلاین.
[root@mcentos 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@mcentos ~]# rpm -Uhv http://rpm.livna.org/livna-release-6.rpm
دستور yum:
پیدا کردن بسته ها:
دستور yum گزینه های متفاوتی برای پیداکردن اطلاعات در مورد بسته های نرم افزاری را داراست، همچنین با این دستور می توان به دنبال بسته های نرم افزاری در میان مخازن نرم افزاری گشت، نمونه ای از این گزینه های را در این نوشته مورد بررسی قرا خواهیم داد.
گزینه list: این گزینه برای پیداکردن بسته های نرم افزاری با شرایط خاص به کار می رود به مثال های زیر توجه کنید.
[root@mcentos ~]# yum list available
در این مثال کلیه بسته های نرم افزاری موجود در مخازن نرم افزاری نمایش داده می شود.
[root@mcentos ~]# yum list installed
در این مثال کلیه بسته های نرم افزاری نصب شده بر روی سیستم نمایش داده می شود.
[root@mcentos ~]# yum list extra
در این مثال نرم افزار های نصب نشده موجود در مخازن نرم افزاری نمایش داده می شود.
[root@mcentos ~]# yum list http*
در این مثال کلیه بسته های نرم افزاری که اول نام آنها شامل کلمه http می باشد نمایش داده می شود.
[root@mcentos ~]# yum list updates
در این مثال کلیه به روز رسانی های بسته های نرم افزاری نصب شده نمایش داده می شود.
گزینه info:
این گزینه برای نمایش توضیحات بسته های نرم افزاری مورد استفاده قرار می گیرد این توضیحات از مخازن نرم افزاری استخراج می شود به مثال های زیر توجه کنید.
[root@mcentos ~]# yum info nano
در این مثال توضیحات مربوط به بسته ی نرم افزاری nano نمایش داده می شود.
[root@mcentos ~]# yum info word*
در این مثال توضیحات مربوط به بسته های نرم افزاری که با کلمه ی word شروع می شوند نمایش داده می شود.
گزینه search:
این گزینه برای جستجوی یک رشته در توضیحات، بسته بندی کننده، نام بسته، و یا خلاصه بسته به کار می رود و شکل استفاده آن به صورت زیر می باشد.
[root@mcentos ~]# yum search mp3
گزینه whatprovides: این گزینه برای جستجو در میان فایل ها و یا ویژگی های بسته های نرم افزاری به صورت زیر به کار گرفته می شود.
[root@mcentos ~]# yum whatprovides ogg
نصب بسته های نرم افزاری:
برای نصب بسته های نرم افزاری از میان مخازن نرم افزاری معرفی شده به سیستم از گزینه ی install دستور yum به شکل زیر استفاده کنید.
[root@mcentos ~]# yum install wordpress
در این مثال بسته wordpress را می خواهیم نصب کنیم با اجرای دستور بالا این بسته به همراه پیش نیاز های آن به صورت خودکار از مخازن نرم افزاری دانلود و به ترتیب نصب می شوند. به هنگام فرآیند نصب اطلاعاتی از قبیل نسخه بسته نرم افزاری، معماری(۳۲ یا ۶۴ بیتی)، اندازه(حجم)دانلودی و نصبی، پیش نیاز های آن به همراه مخازن نرم افزاری مورد استفاده برای نصب بسته های نرم افزاری نمایش داده می شود و از سوالی مبنی بر اینکه آیا این اطلاعات مورد تایید می باشد یا نه پرسیده می شود که باید حرف y به منزله ی yes را وارد کنید تا فرآیند نصب ادامه پیدا کند اگر می خواهید از پرسیدن این سوال خودداری شود می توانید ارامتر –y به عنوان ورودی به شکل زیر به دستور yum بفرستید به مثال زیر توجه کنید.
[root@mcentos ~]# yum –y install wordpress
دستور yum علاوه بر اینکه می تواند بسته های نرم افزاری را زا مخازن نرم افزاری نصب کند قابلیت این را هم دارد که فایل های rpm را از فایل سیستم محلی نصب کند گزینه localinstall این دستور برای این منظور به شکل زیر در دسترس است.
[root@mcentos ~]# 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@mcentos ~]# yum groupinstall XFCE
با اجرای دستور بالا تمامی بسته های نرم افزاری در گروه XFCE یکجا نصب می شوند.
به روز رسانی بسته های نرم افزاری:
دستور yum علاوه بر نصب بسته های نرم افزاری امکان به روز رسانی آنها را نیز فراهم کرده است به نمونه های زیر توجه کنید.
[root@mcentos ~]# yum check-update
دستور بالا تمامی بسته های نرم افزاری که امکان به روز رسانی آنها به نسخه بالاتر از نسخه ی نصب شده وجود دارد را لیست می کند.
[root@mcentos ~]# yum list updates openoffice
دستور بالا کلیه ی به روز رسانی های بسته openoffice را نمایش می دهد.
[root@mcentos ~]# yum update openoffice
دستور بالا بسته openoffice را به روزرسانی می کند.
[root@mcentos ~]# yum update
دستور بالا کلیه ی بسته های سیستم را به آخرین نسخه به روز رسانی می کند.
[root@mcentos ~]# yum groupupdate XFCE
دستور بالا کلیه ی بسته های موجود در گروه XFCE را به روز رسانی می کند.
حذف بسته های نرم افزاری:
علاوه بر نصب و به روزرسانی بسته های نرم افزاری توسط دستور yum امکان حذف بسته ها نیز توسط این دستور فراهم شده است به مثال های زیر توجه کنید.
[root@mcentos ~]# yum remove nano
دستور بالا بسته nano را حذف می کند.
[root@mcentos ~]# yum remove xscreen*
دستور بالا کلیه بسته هایی که با xscreen شروع می شود را حذف می کند.
[root@mcentos ~]# yum groupremove XFCE
دستور بالا کلیه ی بسته های موجود در گروه XFCE را حذف می کند.
توجه داشته باشید که به هنگام حذف بسته ها با گزینه remove و groupremove بسته های که حذف می شوند را نمایش داده و تاییدیه حذف از کاربر درخواست می شود که باید y را به منزله ی yes وارد کنید تا فرآیند حذف کامل شود.
پاک سازی کش:
اگر مقدار پارامتر keepcache در فایل /etc/yum.conf برابر ۱ باشد بسته ها و یکسری اطلاعات دیگر در قالب فایلهایی در کش در مسیر /var/cahce/yum/rep ذخیره می شود گزینه clean دستور yum قابلیت پاک سازی بسته ها، header ها و metadata ها را از کش داراست به مثال های زیر توجه کنید.
[root@mcentos ~]# yum clean packages
مثال بالا کلیه ی بسته های نرم افزاری موجود در کش را پاک می کند.
[root@mcentos ~]# yum clean metadata
مثال بالا کلیه ی metadata های موجود در کش را پاک می کند.
[root@mcentos ~]# yum clean header
مثال بالا کلیه ی header های موجود در کش را پاک می کند.
[root@mcentos ~]# yum clean all
مثال بالا کلیه ی بسته های نرم افزاری، metadata ها و header ها را از کش پاک می کند.
علاوه بر گزینه های که در بخش های قبلی مورد بررسی قرار دادیم دستور yum گزینه های دیگری نیز دارد در این بخش می خواهیم دو گرینه پرکاربرد دیگر که برای فعال و غیر فعال کردن مخازن نرم افزاری مورد استفاده قرار می گیرد را بررسی قرار خواهیم داد.
گزینه disablerepo: این گزینه برای غیر فعال کردن یک مخزن مورد استفاده قرار می گیرد به مثال زیر توجه کنید.
[root@mcentos ~]# yum --disablerepo=media search httpd
در مثال بالا دستور yum اقدام به جستجو در مورد بسته httpd می کند با این که مخزن media غیر فعال شده و در این مخزن عمل جستجو انجام نمی شود.
گزینه enablerepo: این گزینه برای فعال کردن یک مخزن مورد استفاده قرار می گیرد در مثال زیر با توجه به اینکه مخزن media که با اضافه کردن مقدار ۰ به پارامتر enabled در فایل repo آن از قبل غیر فعال شده است با فعال کردن آن اقدام به نصب بسته nano می کند.
[root@mcentos ~]# yum --enablerepo=media install nano
دستور rpm:
اگر چه دستور yum قابلیت نصب بسته های rpm را از دیسک محلی و اینترنت را داراست ولی دستور rpm گزینه های قابل توجهی برای نصب، پرس و جو و تصدیق بسته های rpm را داراست این دستور همچنین قابلیت حذف بسته های rpm را نیز شامل می شود برای نصب و حذف بسته های با این دستور نیاز به مجوز root دارید ولی برای پرس و جو در مورد بسته های نیاز به مجوز root ندارید.
نصب بسته ها:
برای نصب بسته های نرم افزاری توسط این دستور باید از گزینه –ivh استفاده کنید به مثال زیر توجه کنید.
[root@mcentos ~]# 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@mcentos ~]# rpm -Uvh nano-2.3.1-10.el7.x86_64.rpm
حذف بسته ها:
برای حذف بسته ی نرم افزاری از گزینه –e دستور rpm می توان استفاده کرد برای مثال برای حذف بسته nano می توان به شکل زیر استفاده کرد.
[root@mcentos ~]# rpm -e nano
توجه داشته باشید که با نصب بودن چندین بسته با اسم nano باید نام آن بهص روت دقیق وارد شود به مثال زیر توجه کنید.
[root@mcentos ~]# rpm -e nano-2.3.1-10.el7.x86_64
ولی در صورتی که بخواهید کلیه ی بسته هایی که نام آنها دارای nano است پاک شود می توانید از گزینه –allmatches به صورت زیر استفاده کنید.
[root@mcentos ~]# rpm -e --allmatches nano
گزینه nodeps: همان طور که قبلا چندین بار بیان شد دشتور rpm نمی تواند اقدام به نصب و حذف پیش نیاز ها بکند برای نادیده گرفتن پیش نیاز ها توسط این دستور می توانید از گزینه –nodeps استفاده کنید به مثال زیر توجه کنید.
[root@mcentos ~]# rpm -ivh --nodeps nano-2.3.1-10.el7.x86_64.rpm
در مثال بالا بسته nano بدون توجه به پیش نیاز های آن نصب می شود.
پرس و جو در مورد بسته های rpm:
دستور rpm گزینه های متععدی برای پرس و جو در مورد بسته ها دارد به مثال های زیر توجه کنید.
[root@mcentos ~]# rpm -q nano nano-2.3.1-10.el7.x86_64
در مثال بالا نسخه بسته نصب شده nano نمایش داده می شود.
[root@mcentos ~]# rpm -qp nano-2.3.1-10.el7.x86_64.rpm nano-2.3.1-10.el7.x86_64
در مثال بالا اطلاعات مربوط به فایل nano-2.3.1-10.el7.x86_64.rpm نمایش داده می شود.
[root@mcentos ~]# rpm –qa
در مثال بالا کلیه ی بسته های نصب شده بر روی سیستم نمایش داده می شود.
[root@dhcp ~]# rpm -qf /etc/dhcp/dhcpd.conf dhcp-4.2.5-27.el7.centos.x86_64
در مثال بالا بسته ای که فایل /etc/dhcp/dhcpd.conf متعلق به آن می باشد را نمایش می دهد.
[root@mcentos ~]# 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 <http://bugs.centos.org> 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@mcentos ~]# rpm -qlp nano-2.3.1-10.el7.x86_64.rpm
مثال بالا محتویات فایل nano-2.3.1-10.el7.x86_64.rpm را نمایش می دهد.
[root@mcentos ~]# 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@mcentos ~]# rm /var/lib/rpm/__db.00*
سپس با دستور زیر فایل پایگاه داده را دوباره ایجاد کنید.
[root@mcentos ~]# rpm --rebuilddb
نوشته مدیریت بسته های نرم افزاری اولین بار در لینوکس سیزن پدیدار شد.