اذهب إلى المحتوى

15 مثالا لإدارة الحزم باستخدام RPM


محمد أحمد العيل

تستخدم بعض توزيعات لينكس، خصوصا تلك المعتمدة على Fedora مثل CentOS وRed Hat Enterprise Linux، حزم RPM لتثبيت البرامج وإدارتها. ملف rpm. هو عبارة عن تجميع لبرامج ومكتبات تحتاجها هذه البرامج في حزمة تُستخدَم أداة باسم rpm لتثبيتها. الأداة rpm هي أداة مفتوحة المصدر تحتفظ ببيانات الحزم المثبّتة على النظام في المجلّد var/lib/rpm/. من المهم الانتباه إلى أن أداة rpm لا تستطيع التعامل مع البرامج التي ثُبِّتت انطلاقا من المصدر Source. يحتوي ملفّ rpm. على معلومات من قبيل ماهية الحزمة، من أين تأتي، الاعتماديات التي تحتاجها للعمل، الإصدار… إلخ.

توجد خمسة أوضاع أساسية لأداة rpm:

  • التثبيت i-: يُستخدَم لتثبيت حزم RPM.
  • الحذف e-: يُستخدَم لحذف حزمة وإلغاء تثبيتها.
  • الترقية U-: يُحدّث حزمة مثبّتة (تثبيت إصدار جديد من الحزمة).
  • التحقق V-: يُستخدَم للتحقّق من حزمة RPM.
  • الاستعلام q-: يُستخدَم للاستعلام عن حزم RPM.

حزم RPM هي حزم قائمة بذاتها؛ تمكن الاستفادة من المواقع التالية للحصول على حزم RPM الخاصّة ببرنامج تريده:

يقدّم هذا المقال أمثلة لأوامر RPM من أجل المساعدة في تثبيت البرامج، تحديثها أو حذفها على توزيعة تستخدم RPM للتحزيم.

ملحوظة: يجب أن تكون لديك صلاحيات الجذر حتى تستطيع إدارة الحزم.

  1. التحقق من توقيع حزمة

    يجب أولا التحقّق من مصدر الحزمة وموثوقيتها قبل تثبيتها. يُستخدم الخيار checksig-- مع الأمر rpm لهذا الغرض. لكي نستطيع التحقق من حزمة فإنه يجب أولا استيراد المفاتيح العمومية Public keys الخاصّة بالنظام الذي نعمل عليه (Fedora، CentOS، RHEL أو غيرها). بالنسبة لتوزيعة Red Hat Enterprise Linux فالأمر على النحو التالي:

     
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-*
    

    نطلب في الأمر التالي التحقق من الحزمة pidgin-1.5.1-6.el3.x86_64.rpm:

    [root@academy1 ~]# rpm --checksig pidgin-1.5.1-6.el3.x86_64.rpm 
    pidgin-1.5.1-6.el3.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK

    لاحظ أن نتيجة التحقق هي OK.

  2. تثبيت حزمة

    يطلُب الأمر التالي تثبيت الحزمة pidgin-1.5.1-6.el3.x86_64.rpm التي تحققنا من موثوقيتها أعلاه:

    [root@academy1 ~]# rpm -ivh pidgin-1.5.1-6.el3.x86_64.rpm
    Preparing...                ########################################### [100%]
    1:pidgin                 ########################################### [100%]

    تظهر في الأمر أعلاه الخيارات التالية:

    • i-: وضع التثبيت،
    • v-: طلب إظهار رسائل بتقدم عملية التثبيت،
    • h-: طلب إظهار علامات # للدلالة على التقدم الحاصل في تنفيذ خطوات التثبيت.

    الخياران الأخيران v- وh- ليسا ضروريين.

  3. التحقق من اعتماديات حزمة قبل تثبيتها

    تتيح أداة rpm التحقق من اعتماديات حزمة قبل تثبيتها، مثلا للتحقق من اعتماديات الحزمة pidgin-2.11.0-1.fc24.x86_64.rpm:

    [root@academy1 ~]# rpm -qpR pidgin-1.5.1-6.el3.x86_64.rpm
    /bin/sh
    /bin/sh
    glib2 >= 2.2
    htmlview
    libICE.so.6()(64bit)
    libSM.so.6()(64bit)
    libX11.so.6()(64bit)
    libXext.so.6()(64bit)
    libao.so.2()(64bit)
    libatk-1.0.so.0()(64bit)
    libaudiofile.so.0()(64bit)
    (...)

    يشير الخيار q- إلى أننا في وضع الاستعلام عن الحزمة. يطلب الخيار p- معلومات عن حزمة غير مثبّتة ويسرُد الخيار R- اعتماديّات الحزمة.

  4. تثبيت حزمة بغض النظر عن اعتمادياته

    لا يقبل rpm في الحالة العادية تثبيت حزمة إلا إذا كانت جميع اعتمادياتها مثبتة؛ إلا أنه يمكن إجباره على ذلك باستخدام الخيار nodeps--:

    [root@academy1 ~]# rpm -ivh --nodeps pidgin-1.5.1-6.el3.x86_64.rpm
    Preparing...                          ################################# [100%]
    Updating / installing...
    1:pidgin-1.5.1-6.el3             ################################# [100%]

    يُثبّت الأمر أعلاه الحزمة بتجاهل الأخطاء المتعلقة باعتماديّاتها؛ إلا أن البرنامج لن يعمل إلا بعد تثبيت الاعتماديات المطلوبة.

  5. التحقق من أن حزمة مثبّتة

    استخدم وضع الاستعلام q- للتأكد من أن حزمة مّا مثبتة على النظام:

    [root@academy1 ~]# rpm -q BitTorrent
    package BitTorrent is not installed
    [root@academy1 ~]# rpm -q pidgin
    pidgin-1.5.1-6.el3.x86_64.rpm

     

  6. سرد قائمة بجميع ملفات حزمة مثبتة

    أضف خيار السرد l- إلى وضع الاستعلام q- للحصول على قائمة بملفات حزمة مثبتة على النظام:

    [root@academy1 ~]# rpm -ql pidgin
    /etc/gconf/schemas/purple.schemas
    /usr/bin/gaim
    /usr/bin/pidgin
    /usr/lib64/pidgin
    /usr/lib64/pidgin/convcolors.so
    /usr/lib64/pidgin/extplacement.so
    /usr/lib64/pidgin/gestures.so
    /usr/lib64/pidgin/gtkbuddynote.so
    (...)

     

  7. سرد الحزم المُثبتة

    يسرُد الخيار a- عند استخدامه في وضع الاستعلام قائمة بأسماء جميع الحزم المثبتة:

    [root@academy1 ~]# rpm -qa
    libsss_nss_idmap-1.13.0-40.el7_2.9.x86_64
    pygobject3-base-3.14.0-3.el7.x86_64
    libfprint-0.5.0-3.el7.x86_64
    man-pages-3.53-5.el7.noarch
    redhat-release-server-7.2-9.el7.x86_64
    rsyslog-7.4.7-12.el7.x86_64
    libsane-hpaio-3.13.7-6.el7_2.1.x86_64
    (...)

    يمكن ترتيب القائمة لتظهر الحزم المثبتة مؤخرا في الأعلى باستخدام الخيار last--:

    [root@academy1 ~]# rpm -qa --last
    pidgin-1.5.1-6.el3.x86_64.rpm                   Sun 04 Sep 2016 09:47:32 PM GMT
    glibc-devel-2.17-106.el7_2.8.x86_64           Tue 02 Aug 2016 11:42:29 PM GMT
    nss-pam-ldapd-0.8.13-8.el7.x86_64             Tue 02 Aug 2016 11:42:23 PM GMT
    nscd-2.17-106.el7_2.8.x86_64                  Tue 02 Aug 2016 11:42:17 PM GMT
    glibc-headers-2.17-106.el7_2.8.x86_64         Tue 02 Aug 2016 11:42:14 PM GMT
    glibc-common-2.17-106.el7_2.8.x86_64          Tue 02 Aug 2016 11:42:01 PM GMT
    (...)

     

  8. تحديث حزمة

    يُستخدَم وضع الترقية U- لتحديث إصدار حزمة مثبتة. يحتفظ أمر rpm عند تحديث حزمة بنسخة احتياطية من الإصدار المثبت للعودة إليها في حال لم تعمل الحزمة حسب المطلوب بعد تحديثها:

    [root@academy1 ~]# rpm -Uvh pidgin-1.5.1-6.el3.x86_64.rpm
    Preparing...                ########################################### [100%]
    1:pidgin                     ########################################### [100%]

     

  9. حذف حزمة

    استخدم الخيار e- مع الأمر rpm لحذف حزمة بذكر اسمها. مثلا؛ لحذف حزمة pidgin السابقة:

     
    [root@academy1 ~]# rpm -e pidgin
    

    تمكن أيضا إضافة الخيار إلى الأمر لعرض رسائل بما يحدُث:

    [root@academy1 ~]# rpm -ev pidgin
    Preparing packages...
    pidgin-1.5.1-6.el3.x86_64.rpm

    كما يمكن الإبقاء على اعتماديات الحزمة باستخدام الخيار nodeps-- مع أمر الحذف وهو ما ينتج عنه حذف الحزمة فقط دون اعتمادياتها:

     
    [root@academy1 ~]# rpm -ev --nodeps pidgin
    

    انتبه إلى أن حذف حزمة من النظام يمكن أن يؤدي إلى عدم استقراره؛ لذا تأكد من حاجتك فعلا لحذف الحزمة.

  10. معرفة الحزمة التي ينتمي إليها ملف

    استخدم الخيار f- في وضع الاستعلام لمعرفة الحزمة التي ينتمي إليها ملف. مثلا؛ تخبرنا نتيجة الأمر التالي أن الملف usr/bin/htpasswd/ ينتمي للحزمة httpd-tools-2.4.6-40.el7_2.4.x86_64.

    [root@academy1 ~]# rpm -qf /usr/bin/htpasswd
    httpd-tools-2.4.6-40.el7_2.4.x86_64

     

  11. الحصول على معلومات عن حزمة

    يعرض الخيار i- عند استخدامه في وضع الاستعلام معلومات عن حزمة مثبتة؛ مثلا بالنسبة لحزمة vsftpd:

    [root@academy1 ~]# rpm -qi vsftpd
    Name        : vsftpd
    Version     : 3.0.2
    Release     : 11.el7_2
    Architecture: x86_64
    Install Date: Thu 21 Jul 2016 03:29:37 PM GMT
    Group       : System Environment/Daemons
    Size        : 355788
    License     : GPLv2 with exceptions
    Signature   : RSA/SHA256, Fri 18 Mar 2016 01:08:35 AM GMT, Key ID 199e2f91fd431d51
    Source RPM  : vsftpd-3.0.2-11.el7_2.src.rpm
    Build Date  : Wed 24 Feb 2016 11:06:41 AM GMT
    Build Host  : x86-019.build.eng.bos.redhat.com
    Relocations : (not relocatable)
    Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
    Vendor      : Red Hat, Inc.
    URL         : https://security.appspot.com/vsftpd.html
    Summary     : Very Secure Ftp Daemon
    Description :
    vsftpd is a Very Secure FTP daemon. It was written completely from scratch.

    أما إن أردت الحصول على معلومات عن حزمة قبل تثبيتها فالأمر هو التالي:

    [root@academy1 ~]# rpm -qip pidgin-1.5.1-6.el3.x86_64.rpm
    Name        : pidgin
    Version     : 1.5.1
    Release     : 6.el3
    Architecture: x86_64
    Install Date: (not installed)
    Group       : Applications/Internet
    Size        : 11168813
    License     : GPL
    Signature   : DSA/SHA1, Thu 29 Oct 2009 08:14:44 AM GMT, Key ID 219180cddb42a60e
    Source RPM  : pidgin-1.5.1-6.el3.src.rpm
    Build Date  : Wed 28 Oct 2009 03:52:51 PM GMT
    Build Host  : x86-003.build.bos.redhat.com
    Relocations : (not relocatable)
    Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
    Vendor      : Red Hat, Inc.
    URL         : http://www.pidgin/im/
    Summary     : A Gtk+ based multiprotocol instant messaging client
    Description :
    Pidgin allows you to talk to anyone using a variety of messaging protocols, including AIM, ICQ, IRC, Yahoo!, Novell Groupwise, MSN Messenger, Jabber, Gadu-Gadu, Napster, and Zephyr.  These protocols are implemented using a modular, easy to use design. To use a protocol, just add an account using the account editor. Pidgin supports many common features of other clients, as well as many
    unique features, such as perl scripting, TCL scripting and C plugins.
    
    Pidgin is NOT affiliated with or endorsed by America Online, Inc., Microsoft Corporation, Yahoo! Inc., or ICQ Inc.
    [root@academy1 ~]#
    
    
    
    
  12. الاستعلام عن التوثيق Documentation الخاص بحزمة مثبتة

    يمكن الحصول على مستندات التوثيق الخاصّة بحزمة باستخدام الخيارين df- في وضع الاستعلام. يأخذ الأمر معطى عبارة عن مسار الحزمة؛ وهو ما يمكن الحصول عليه عن طريق الأمر which. نطلب في المثال التالي معرفة مسار الحزمة vsftpd ثم نستعلم عن مستدات التوثيق الخاصّة بها:

    [root@academy1 ~]# which vsftpd
    /sbin/vsftpd
    [root@academy1 ~]# rpm -qdf /sbin/vsftpd
    /usr/share/doc/vsftpd-3.0.2/AUDIT
    /usr/share/doc/vsftpd-3.0.2/BENCHMARKS
    /usr/share/doc/vsftpd-3.0.2/BUGS
    /usr/share/doc/vsftpd-3.0.2/COPYING
    /usr/share/doc/vsftpd-3.0.2/Changelog
    (...)

     

  13. التحقق من حزمة

    تقارن أداة rpm عند طلب التحقق من حزمة المعلومات المستقاة من الملفات المثبتة مع تلك الموجودة في قاعدة بيانات rpm. يُستخدم الخيار V- لوضع التحقق وp لتمرير حزمة إلى الأمر:

    [root@academy1 ~]# rpm -Vp vsftpd-3.0.3-2.fc24.x86_64.rpm 
    warning: vsftpd-3.0.3-2.fc24.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 81b46521: NOKEY
    .......T.  c /etc/logrotate.d/vsftpd
    .......T.  c /etc/pam.d/vsftpd
    .......T.  c /etc/vsftpd/ftpusers
    .......T.  c /etc/vsftpd/user_list
    .......T.  c /etc/vsftpd/vsftpd.conf
    .......T.    /etc/vsftpd/vsftpd_conf_migrate.sh
    .......T.    /usr/lib/systemd/system-generators/vsftpd-generator
    .......T.    /usr/lib/systemd/system/vsftpd.service
    .......T.    /usr/lib/systemd/system/vsftpd.target
    .......T.    /usr/lib/systemd/system/vsftpd@.service
    S.5....T.    /usr/sbin/vsftpd
    missing     /usr/share/doc/vsftpd
    missing   d /usr/share/doc/vsftpd/AUDIT
    missing   d /usr/share/doc/vsftpd/BENCHMARKS
    missing   d /usr/share/doc/vsftpd/BUGS
    (...)

    يمكن طلب التحقق من جميع الحزم في النظام بالخيار a في وضع التحقق على النحو التالي:

    [root@academy1 ~]# rpm -Va
    S.5....T.  c /etc/os-release
    S.5....T.    /usr/src/kernels/3.10.0-327.22.2.el7.x86_64/include/config/auto.conf
    S.5....T.    /usr/src/kernels/3.10.0-327.22.2.el7.x86_64/include/config/auto.conf.cmd
    S.5....T.    /usr/src/kernels/3.10.0-327.22.2.el7.x86_64/include/config/tristate.conf
    S.5....T.    /usr/src/kernels/3.10.0-327.22.2.el7.x86_64/include/generated/autoconf.h
    (...)

     

  14. سرد جميع المفاتيح العمومية المستوردة

    يمكنك إن أردت سرد جميع المفاتيح العمومية للحزم المثبتة على نظامك، وذلك على النحو التالي:

    [root@academy1 ~]# rpm -qa gpg-pubkey*
    gpg-pubkey-2fa658e0-45700c69
    gpg-pubkey-37017186-45761324
    gpg-pubkey-897da07a-3c979a7f
    gpg-pubkey-f21541eb-4a5233e7
    gpg-pubkey-42193e6b-4624eff2
    gpg-pubkey-fd431d51-4ae0493b
    gpg-pubkey-db42a60e-37ea5438

     

  15. تصحيح قاعدة بيانات RPM معطوبة

    يحدُث أن تُصاب قاعدة البيانات الخاصّة بحزم RPM بعُطب مما ينتُج عنه غياب وظائف من أداة rpm. يمكنك في هذه الحالة محاولة بناء قاعدة البيانات من جديد بالأوامر التالية:

    [root@academy1 ~]# cd /var/lib/rpm
    [root@academy1 rpm]# rm __db*
    [root@academy1 rpm]# rpm --rebuilddb
    [root@academy1 rpm]# /usr/lib/rpm/rpmdb_verify Packages
    BDB5105 Verification of Packages succeeded.

     

ترجمة - وبتصرف - لمقال 20 Practical Examples of RPM Commands in Linux لصاحبه Ravi Saive.


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...