أعجوبة

البرمجيات الحُرة والمفتوحة المصدر

أدوات المستخدم

أدوات الموقع


docs:using_rpm_lecture

محاضرة عن استخدام rpm

هذا تسجيل لجلسة تمت على قناة linuxac على IRC

التحضيرات

  • بهاء: مرحبا بكم في الجلسات التعليمية لقناة مجتمع لينكس العربي
  • بهاء: الجلسة الأولى
  • بهاء: ———

    * بهاء: الهدف : نظام الحزم فى انظمة ريدهات ,التعريف , الاستخدام ونظرة علي كيفية عمل حزمة

  • بهاء: المدة : 60 دقيقة
  • بهاء: التوقيت : 19:00 GMT , بتوقيت جرينتش السابعة مساءا
  • بهاء: المحاضر : الأستاذ مؤيد السعدي (فريق اعجوبة لينكس )
  • بهاء: لمزيد من المعلومات
  • بهاء: سنبدأ إن شاء الله بعد أقل من عشر دقائق
  • بهاء: لأي ملاحظات أو شكاوي بالرجاء مراسلة أحد المديرين
  • بهاء: المديرين من لديهم دائرة خضراء
  • بهاء: أو علامة @
  • بهاء: اي أسلئة عن كيفية تنزيل الحزمة أو اي شئ أخر بالرجاء السؤال بالقناة التعليمية ##linuxac-social
  • بهاء: سنبدأ الجلسة بعد قليل
  • بهاء: بالرجاء من جميع من سيحضر الجلسة الدخول للقناة الإجتماعية
  • بهاء: /j ##linuxac-social
  • السعدي: يا شباب الاجتماعية شبه فارغة
  • السعدي: فضلا ادخلوا #linuxac-social
  • السعدي: من أجل مشاهدة الأسئلة

بدء المحاضرة

  • السعدي: بسم الله نبدأ
  • السعدي: السلام عليكم ورحمة الله
  • السعدي: أولا أرحب بكم
  • السعدي: ثم أذكركم بموضوعنا وهو استعمال حزم وأدوات rpm
  • السعدي: ثم في الجزء الثاني صنعها
  • السعدي: في البداية أحب أن نمر بسرعة على نظام الحزم rpm ونلقي بعض الضوء على تطوره والبيئة التي ظهر فيها
  • السعدي: حزم rpm والتي كانت اختصارا ل redhat package manager
  • السعدي: هي نظام حزم لتسهيل تثبيت البرامج وإدارتها
  • السعدي: وكما هو واضح هي بدأت من تطوير شركة ريدهات ظهرت في توزيعة redhat linux
  • السعدي: التي انقسمت لاحقا إلى RHEL و Fedora
  • السعدي: بسبب المزايا المتقدم في هذا النظام والمرونة الكبيرة فيه تم اعتماده في الكثير من التوزيعات (لأنه حر مفتوح المصدر)
  • السعدي: من أشهرها ماندريفا (ماندريك حينها) وسوزة (من نوفل)
  • السعدي: ومنها أيضا التوزيعة الكورية هانكوم وغير ذلك الكثير
  • السعدي: كذلك تم اعتماد هذا النظام من قبل معايير مؤسسة لينكس
  • السعدي: في LSB
  • السعدي: حيث يجب على التوزيعة الموافقة للمعايير التعامل مع rpm (ولو عبر وسيط مثل alian كما في ديبيان)
  • السعدي: المعايير لا تفرض على التوزيعة أن يكون rpm هو نظام الحزم الأساسي
  • السعدي: لكنها تفرض إمكانية التعامل مع حزم rpm ولو عبر وسيط
  • السعدي: حاليا يتم تطوير rpm خارج ريدهات من خلال rpm.org
  • السعدي: http://rpm.org/
  • السعدي: وطبعا هذا المجتمع يدخل في عضويته نوفل وماندريفا وغيرهم
  • السعدي: الشعار في الموقع هو علامة تجارية لشركة ريدهات
  • السعدي: لكنها لم تعد تطور rpm وحدها
  • السعدي: حيث أصبح اسمها يعني
  • السعدي: rpm package manager
  • السعدي: وليس redhat package manager
  • السعدي: ومن الطرائف أن مطور rpm الأصلي طرد من ريدهات
  • السعدي: حيث أنه تعامل مع أحد العثرات بطريقة فيها إهانة للسائل حيث بلغ أحدهم عن وجود عثرة في rpm
  • السعدي: تؤدي إلى تحطم قاعدة بيانات rpm
  • السعدي: مما يجعل النظام عديم الفائدة. كان طلب المبلغ عن العثرة هو أن يكون نظام rpm مضاد للملفات المعطوبة وما إلا ذلك
  • السعدي: إلا أن ذاك الشخص أهانه وقال له هذا ليس المكان المناسب لتعلم إصلاح قاعدة بيانات rpm
  • السعدي: ابحث في غوغل وانتهى الأمر
  • السعدي: بعد أن تم طرد ذلك الشخص من ريدهات
  • السعدي: أسس منظمة أسماها rpm5
  • السعدي: ويزعم أنها هي المنبع ل rpm الجديدة
  • السعدي: أو الجيل الجديد من rpm
  • السعدي: بحجة أنه المطور الأصلي لها
  • السعدي: إلا أن دعواه لم تلق قبولا لدى أي توزيعة مرموقة
  • السعدي: ولا زال الغالب يعتمدون على rpm.org وليس على rpm5
  • السعدي: ولا تزال التطويرات تدفع في rpm.org بعيدا عن هذا المدعي
  • السعدي: ولم يقبل منه إلا أداة شاذة غريبة تستخدم في بناء حزم rpm في كل من open-office.org و go-oo.org
  • السعدي: وتوزيعات مغمورة لم يسمع عنها أحد
  • السعدي: نتحدث الآن عن معنى مدير الحزم
  • السعدي: مدير الحزم هو فكرة قد تصدم الداخلين الجدد على لينكس حيث لا يوجد مقابل حقيقي لها في ويندوز
  • السعدي: وهي أن هناك مكان مركزي في النظام
  • السعدي: تقع مسؤولية إدارة الملفات فيه على النظام وليس على الشخص
  • السعدي: الحزمة عبارة عن مجموعة من الملفات
  • السعدي: مثل الملفات التنفيذية وملفات الإعدادات
  • السعدي: وملفات الوثائق وغيرها
  • السعدي: كذلك الحزمة تحتوي على المعلومات اللازمة لعمل الحزمة
  • السعدي: مثلا نقول أن الحزمة الفلانية تتطلب مكتبة Qt والحزمة العلانية تتطلب java الإصدار كذا وكذا
  • السعدي: وهكذا
  • السعدي: كذلك الحزم تكون مضغوطة وقد تكون ممهورة بالتوقيع الإكتروني أو فحص سلامة الملفات
  • السعدي: من أول وأبسط وأسذج نظم الحزم كانت حزم tgz في سلاكويير slackware
  • السعدي: فهي مجرد ملف مضغوط فيه سكربت للتنفيذ عند التثبيت
  • السعدي: ظهر بعده نظام الحزم deb
  • السعدي: الذي كان قفزة نوعية
  • السعدي: وبعده بقليل ظهر نظام rpm الذي كان نظام الحزم الحقيقي
  • السعدي: وحيث أن موضوعنا ليس في هجاء deb سنقفز إلى مزايا rpm
  • السعدي: من مزايا rpm إمكانية التوقيع الإلكتروني
  • السعدي: كذلك إمكانية عمل فحص لسلامة الملفات (أولا كان md5sum ثم تم تغييره إلى فحوصات أقوى حيث أن rpm مرن في هذا الجانب)
  • السعدي: كذلك من مزايا rpm أن الحمل فيها يمكن أن يكون مضغوطا بأي هيئة
  • السعدي: payload compression
  • السعدي: وليس بالضرورة أن يكون محصورا في gzip أو bz2
  • السعدي: حيث في الإصدارات الأخيرة من suse يستخدمون lzma وتستخدم فيدورا ضغط xz
  • السعدي: نأتي الآن على استخدام أداة rpm
  • السعدي: أول استخدام سنتعلمه هو لعمل query
  • السعدي: على قاعدة بيانات rpm
  • السعدي: حيث أن rpm تحتفظ بالكثير من المعلومات في قاعدة بياناتها
  • السعدي: الخيار المستخدم لذلك هو
  • السعدي: rpm –query
  • السعدي: أو
  • السعدي: rpm -q
  • السعدي: ثم نكتب المعاملات تباعا بحب الاستعلام الذي نريده
  • السعدي: مثلا يمكننا عرض معلومات عن حزمة عبر الأمر
  • السعدي: rpm -qi gedit
  • السعدي: هذه مخرجات الأمر عندي
[alsadi@pc1 ~]$ rpm -qi gedit
Name        : gedit                        Relocations: (not relocatable)
Version     : 2.26.3                            Vendor: Fedora Project
Release     : 2.fc11                        Build Date: Mon 09 Nov 2009 09:33:48 PM EET
Install Date: Fri 27 Nov 2009 08:52:13 PM EET      Build Host: x86-1.fedora.phx.redhat.com
Group       : Applications/Editors          Source RPM: gedit-2.26.3-2.fc11.src.rpm
Size        : 13486240                         License: GPLv2+ and GFDL
Signature   : RSA/8, Tue 10 Nov 2009 09:11:25 PM EET, Key ID 1dc5c758d22e77f2
Packager    : Fedora Project
URL         : http://projects.gnome.org/gedit/
Summary     : Text editor for the GNOME desktop
Description :
gedit is a small, but powerful text editor designed specifically for
the GNOME desktop. It has most standard text editor functions and fully
supports international text in Unicode. Advanced features include syntax
highlighting and automatic indentation of source code, printing and editing
of multiple documents in one window.
 
gedit is extensible through a plugin system, which currently includes
support for spell checking, comparing files, viewing CVS ChangeLogs, and
adjusting indentation levels. Further plugins can be found in the
gedit-plugins package.
  • السعدي: نلاحظ أنها تحتوي اسم الحزمة
  • السعدي: وإصدارها
  • السعدي: وإطلاقها
  • السعدي: ونوعها Group : Applications/Editors
  • السعدي: ومن أي حزمة مصدرية جاءات
  • السعدي: وتاريخ بناءها وتاريخ تثبيتها
  • السعدي: والرخصة والتوقيع الإلكتروني …
  • السعدي: كذلك رابط البرنامج الأصلي
  • السعدي: ‏‫كذلك ملخص من سطر واحد Summary : Text editor for the GNOME desktop
  • السعدي: ثم وصف طويل
  • السعدي: لنفترض أني أريد معلومات عن حزمة غير مثبتة
  • السعدي: عندها أضيف p
  • السعدي: rpm -qip /path/to/gedit-2.26.3-2.fc11.i586.rpm
  • السعدي: ما بعد p هو اسم ملف ليس بالضرورة أن يكون مثبت
  • السعدي: وهذا مفيد حتى مثلا أعرف موقع البرنامج قبل أن أثبته
  • السعدي: لو نظرنا إلى كتيب rpm لوجدنا
  • السعدي: rpm {-q|–query} [select-options] [query-options]
  • السعدي: يعني بعد q نحدد الحزم التي نريدها والمعلومات التي نريدها
  • السعدي: أما عن المعلومات فهي كثيرة جدا
  • أحمد-العربي: ?
  • السعدي: مثلا يمكنني طباعة أسماء ملفات الوثائق في حزمة معينة
[alsadi@pc1 ~]$ rpm -qd httpd
/usr/share/doc/httpd-2.2.14/ABOUT_APACHE
/usr/share/doc/httpd-2.2.14/CHANGES
/usr/share/doc/httpd-2.2.14/LICENSE
/usr/share/doc/httpd-2.2.14/NOTICE
/usr/share/doc/httpd-2.2.14/README
/usr/share/doc/httpd-2.2.14/VERSIONING
/usr/share/man/man8/apachectl.8.gz
/usr/share/man/man8/htcacheclean.8.gz
/usr/share/man/man8/httpd.8.gz
/usr/share/man/man8/rotatelogs.8.gz
/usr/share/man/man8/suexec.8.gz
  • السعدي: بهذا الأمر طبعت كل ملفات الوثائق امرتبطة بحزمة أباتشي
  • السعدي: أحمد-العربي: تفضل اسأل
  • أحمد-العربي: لدي حزمة مركبة
  • أحمد-العربي: php-common
  • أحمد-العربي: هل يمكنني معرفه مكان ملفات الظبط فقط
  • السعدي: نعم سأذكر ذلك
  • السعدي: نتابع الآن
  • السعدي: قلنا أن -qd تطبع أماكن ملفات الوثائق
  • السعدي: rpm -qd httpd
  • السعدي: أما ملفات الإعدادات والضبط كما سأل أخونا
  • السعدي: فتكون بالأمر rpm -qc
  • السعدي: rpm -qc httpd
  • السعدي: ولو طبقنا ذلك عن الحزمة التي سألت عنها
[alsadi@pc1 ~]$ rpm -qc php-common
/etc/php.d/curl.ini
/etc/php.d/dbase.ini
/etc/php.d/json.ini
/etc/php.d/zip.ini
/etc/php.ini
  • السعدي: أحمد-العربي: هل هذا يجيب سؤالك ؟
  • أحمد-العربي: نعم
  • السعدي: طيب نتابع
  • السعدي: لمعرفة من أي حزمة جاء ملف ما نستخدم rpm -qf ثم اسم الملف
rpm -qf /etc/issue
ojuba-release-11-6.oj3.noarch
  • السعدي: لعرض كل الملفات التابعة لحزمة ما نستعمل rpm -ql
  • السعدي: مثلا
rpm -ql php-common | less
  • السعدي: إن كانت الحزمة غير مثبتة نستعمل p كما ذكرنا سابقا
rpm -qlp /path/to/gedit-2.26.3-2.fc11.i586.rpm
  • السعدي: q يعني query
  • السعدي: l يعني list files
  • السعدي: p تعني package file
  • السعدي: وليس حزمة مثبتة
  • السعدي: ليس بالضرورة أن تكون كل الملفات الظاهرة في l جاءت من الحزمة
  • السعدي: بل هناك خيار اسمه ghost
  • السعدي: يسمح لحزمة أن تملك ملفات يتولد من خارجها
  • السعدي: يمكن عرض أسماء كل الحزم المثبتة من خلال -a أو –all
  • السعدي: مثلا
  • السعدي: rpm -qa
  • السعدي: تطبع أسماء كل الحزم المثبتة
  • meGenius: !
  • السعدي: تفضل
  • السعدي: meGenius: تفضل
  • meGenius: فصل أكثر عن ghost
  • السعدي: مثلا ملفات initrd في النواة
  • السعدي: تتولد من وضع وحدات modules يتم توليدها من خلال السكربت mkinitrd
  • السعدي: بحسب التعريفات المستخدمة
  • السعدي: ولا تكون موجودة داخل حزمة النواة
  • السعدي: لكنها تكون مملوكة لحزمة النواة
  • meGenius: !
  • السعدي: تفضل
  • meGenius: و هل يجب أن يكون mkinitrd ضمن الحزمة؟؟
  • meGenius: أم فقط dependency؟؟
  • السعدي: هي اعتمادية
  • السعدي: مثال آخر يوضح الأمور
  • السعدي: تخيل حزمة تولد تقارير تتولد من خلال cron jobs
  • السعدي: أو تولد ملفات من خلال initscripts
  • السعدي: أو عند أول استعمال
  • السعدي: اظن أن من أمثلة ذلك ملف
  • السعدي: /usr/sbin/.sshd.hmac
  • السعدي: في حزمة openssh-server
  • السعدي: meGenius: هل الفكرة واضحة ؟
  • meGenius: alsadi: نعم وصلت الفكرة
  • إيهاب: ?
  • السعدي: إيهاب: تفضل
  • إيهاب: كيف يمكن أن نستخدم الخيار ghost
  • السعدي: نحن لا نستعمله. بل من يقوم بعمل الحزمة هو من يحدد الملفات التي تنتمي للحزمة
  • السعدي: سواء كانت فيها أو لم تكن
  • السعدي: هل نتابع ؟
  • إيهاب: y
  • السعدي: حسنا
  • السعدي: كنت نتحدث عن الخيار –all أو -a
  • السعدي: مثلا rpm -qa
  • السعدي: تطبع أسماء كل الحزم الموجودة في النظام
  • السعدي: يكن يمكننا تقييد ذلك دون استعمال grep
  • السعدي: عبر تحديد نمط ما هكذا
  • السعدي: rpm -qa '*ssh*'
  • السعدي: والذي يعني هات أسماء كل الحزم التي في اسمها كلمة ssh
  • السعدي: وهذا يطابق openssh-server وغيره من الحزم
  • السعدي: الخيار –all هو من عائلة خيارات selection option
  • السعدي: أي تحديد عن أي الحزم نريد العمل
  • السعدي: أما خيارات الاستعلام نفسها فقط تكون مثل d l c التي تحدثنا عنها
  • السعدي: من خيارات الاستعلام طباعة changelog لحزمة
  • السعدي: مثلا
  • السعدي: rpm -q –changelog gedit
  • السعدي: يمكن تطبيقها على حزمة غير مثبتة أيضا عبر p
  • أحمد-العربي: !
  • السعدي: تفضل
  • أحمد-العربي: هل يمكن استخدام p علي حزمة موجوده علي الانترنت ؟
  • السعدي: أظن ذلك حيث أن rpm قادرة على تنزيل الملفات
  • السعدي: لكني لم أجرب ذلك
  • أحمد-العربي: شكرا
  • السعدي: ويجر بنا الإشارة إلى أن هذا السجل للتغيّرات ليس من ملف changelog
  • السعدي: لكنه خاص بالحزمة
  • السعدي: وغالبا ما يحتوي على معلومات خاصة بالتغييرات على التحزيم
  • السعدي: من الاستعلامات الاخرى -R أو –requires
  • السعدي: وهي تعطينا الاعتماديات
  • السعدي: مثلا
  • السعدي: rpm -q -R kernel
[alsadi@pc1 ~]$ rpm -qR kernel
rpmlib(VersionedDependencies) <= 3.0.3-1
fileutils  
module-init-tools  
initscripts >= 8.11.1-1
mkinitrd >= 6.0.61-1
kernel-firmware >= 2.6.30.10-105.2.16.fc11
/sbin/new-kernel-pkg  
/bin/sh  
/bin/sh  
/bin/sh  
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(VersionedDependencies) <= 3.0.3-1
fileutils  
module-init-tools  
initscripts >= 8.11.1-1
mkinitrd >= 6.0.61-1
kernel-firmware >= 2.6.30.10-105.2.23.fc11
/sbin/new-kernel-pkg  
/bin/sh  
/bin/sh  
/bin/sh  
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
  • السعدي: حيث تخبرني على ماذا تعتمد النواة
  • السعدي: سنجد في المخرجات مثلا
initscripts >= 8.11.1-1
mkinitrd >= 6.0.61-1
  • السعدي: وهذا يجيب على سؤال سابق
  • السعدي: هذا يعني أن حزمة النواة تعتمد على حزمة initscripts بشرط أن يكون الإصدار أكبر من الرقم المحدد
  • السعدي: كذلك نجد في المخرجات
  • السعدي: /bin/sh
  • السعدي: أي أن حزمة النواة تعتمد على الملف المذكور
  • السعدي: وهذا فرق بين حزم rpm و deb
  • السعدي: حيث في deb يتم ذكر الاعتماديات باسم الحزمة
  • السعدي: أما في rpm فالغالب بالملف أو المكتبة أو الميزة
  • السعدي: وسبب ذلك أن تسمية الحزم غالبا عشوائية وتتخبط من توزيعة لأخرى ومن شخص لآخر
  • السعدي: كذلك من الخيارات –provides
  • السعدي: حيث نستعلم به عما تقدمه الحزمة من مزايا أو من حزم مكافئة
  • السعدي: مثلا
  • السعدي: rpm -q –provides abiword
  • السعدي: mimehandler(application/msword)
  • السعدي: أي أن حزمة abiword توفر برنامج يفتح ملفات msword
  • السعدي: ولو جربنا
  • السعدي: rpm -q –provides fedora-release
  • السعدي: أو
  • السعدي: rpm -q –provides ojuba-release
  • السعدي: لوجدنا سطر
  • السعدي: system-release = 11-1
  • السعدي: وهذه ميزة
  • السعدي: يعني يمكن لحزمة أن توفر بديل لحزمة أخرى أو ميزة وهمية
  • السعدي: ربما ما بقي من query options في الكتيب لا يعني المستخدم النهائي
  • السعدي: مثل عرض السكربتات و المصائد triggers و تخصيص المخرجات
rpm --qf 'version of %{Name} is %{Version}\n' -q gedit
rpm --qf 'size of %{Name} is %{size}\n' -q gedit
  • السعدي: وحيث أننا عرجنا عن البحث عن المزايا يمكن البحث في مزايا حزم غير موجودة عندك من خلال yum
  • السعدي: بطريقة مشابهة
  • السعدي: من خلال –whatprovides
  • السعدي: في اداة rpm يمكن التحكم بخيارات عامة مثل v أو verbose
  • السعدي: فكلما وضعنا v زادت ثرثرة الأداة
  • السعدي: rpm -qvl gedit
  • السعدي: تطبع معلومات تفصيلية عن الملفات مثل تاريخ التعديل والصلاحيات
  • السعدي: يمكن تكرار v أكثر من مرة
  • السعدي: نأتي الآن إلى التحقق من سلامة الحزم
  • السعدي: يمكننا استعمال
  • السعدي: rpm -V
  • السعدي: ثم نحدد الحزم المراد فحصها تماما كما كنا نفعل مع rpm -q
  • السعدي: مثلا
  • السعدي: rpm -V gedit
  • السعدي: عندي لا تعطي أي نتائج هذا لأنه لم يجر أي تغيير أو عبث بملفات تلك الحزمة
  • السعدي: في حين
[alsadi@pc1 ~]$ rpm -V httpd
S.5....T.  c /etc/httpd/conf/httpd.conf
 ..?......    /usr/sbin/suexec
 ....L....    /var/www/html
  • السعدي: تعني وجود تغييرات في الملفات المذكورة
  • السعدي: S تعني اختلف الحجم
  • السعدي: 5 تعني اختلف md5
  • السعدي: T تعني اختلف وقت آخر تعديل
  • السعدي: وهكذا للمزيد انظر
  • السعدي: man rpm
  • السعدي: كذلك هناك
  • السعدي: rpm –checksig
  • السعدي: متبوعة باسم ملف rpm
  • السعدي: التي تفحص التوقيع الإلكتروني
  • السعدي: يقي أن نقول طريقة تثبيت أو إزالة الحزم
  • السعدي: وهذه آخر ما نحتاج له بسبب أننا نستعمل yum
  • السعدي: حيث أن تثبيت الحزم مباشرة عبر rpm
  • السعدي: أمر لا ننصح به
  • السعدي: لكن نعرج عليه على عجالة
  • السعدي: rpm -i filename.rpm
  • السعدي: ويمكننا إضافة v أي verbose حتى نرى مراحل التثبيت
  • السعدي: أو مع h أي hash حتى نرى علامة #
  • السعدي: تتحرك ################
  • السعدي: بدلا من مشاهدة تقرير نصي “يجري عمل كذا كذا”
  • السعدي: فتصبح
  • السعدي: rpm -ivh foobar-2.1-1.noarch.rpm
  • السعدي: للترقية
  • السعدي: rpm -Uvh
  • السعدي: ثم اسم الملف
  • السعدي: يمكن إزالة حزمة ما عبر
  • السعدي: rpm -e
  • السعدي: ثم محددات لاختيار الحزمة كما في rpm -q
  • البكري: !
  • السعدي: البكري: تفضل
  • البكري: لماذا تعتمد التوزيعات مديري حزم مختلفة
  • السعدي: البكري: اظن هذا ليس موضوعنا
  • البكري: اذا كانت rpm تقوم بالعمل
  • البكري: !
  • السعدي: لماذا تتمسك ديبيان ب deb ليس موضوعنا
  • السعدي: كذلك لماذا تمسك slackware ب tgz
  • البكري: لا اقصد التوزيعات الردهاتية
  • lio_013: يقصد لم yum في وجود rpm
  • البكري: مندريفا وفيدورا
  • root3ksa: ما ذا يدل rpm -q
  • البكري: انتهى
  • إيهاب: !
  • السعدي: تفضل
  • السعدي: إيهاب: تفضل
  • إيهاب: وهذه آخر ما نحتاج له بسبب أننا نستعمل yum حيث أن تثبيت الحزم مباشرة عبر rpm أمر لا ننصح به
  • إيهاب: لماذا؟
  • السعدي: حتى لا نتعامل مع الاعتماديات
  • السعدي: حيث يقول yum
  • السعدي: بجلب الاعتماديات من المستودعات عبر الإنترنت
  • السعدي: إيهاب: وصل الجواب ؟
  • إيهاب: نعم شكرا
  • السعدي: ولا يعنينا شرح كيف نخبر rpm على تجاهل الاعتماديات
  • السعدي: أو تجاهل أشياء معينة لأن ذلك عاجلا أو آجلا سيؤدي لمشاكل كثيرة
  • السعدي: لكنها موجودة في الكتيب
  • السعدي: من بين الخيارات التي نستطيع تمريرها لخيارات التثبيت أو الإزالة هي
  • السعدي: –test
  • السعدي: التي تقوم بعمل كل شيء إلا التثبيت أو الإزالة
  • السعدي: كما يقال dry run
  • السعدي: “على الناشف”
  • lio_013: :)
  • السعدي: نأتي الآن على آخر موضوع وهو كيف نعمل وقوث بمفتاح التوقيع الألكتروني لجهة ما
  • السعدي: يكون ذلك عبر الأمر
  • السعدي: rpm –import
  • السعدي: ثم مسار ملف التوقيع الإلكتروني
  • السعدي: مثلا
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
  • السعدي: الآن ننهي الجلسة إذا لم يبقى أسئلة
  • أحمد-العربي: !
  • السعدي: أحمد-العربي: تفضل
  • أحمد-العربي: كيف يفيد التوقيع
  • أحمد-العربي: ?
  • السعدي: عندما تقوم بتثبيت حزمة من مصدر ما يتم فحص التوقيع الإكتروني عليها
  • أحمد-العربي: اذن ان كان لدي ملف التوقيع لمخزن معين
  • السعدي: كل الحزم من المستودعات الرسمية تكون مختومة بالتوقيع الإكتروني الخاص بذاك المستودع
  • السعدي: مثلا التوقيع أعلاه هو توقيع فيدورا
  • أحمد-العربي: وقمت بتثبيت حزمة فيجب ان يتاطابق التوقيع لكي اتاكد انها من ذلك المخن
  • السعدي: كذلك في المجلد نفسه تجد التوقيع الإلكتروني لأعجوبة و rpmfusion
  • السعدي: وغيرها
  • السعدي: هذا توقيع يستعمل gpg
  • السعدي: لفحص سلامة الحزمة
  • السعدي: إذا تغيير أي شيء في الحزمة فإن التوقيع عليها لن يتطابق
  • meGenius: !
  • السعدي: مثلا لنفرض أنك أحضرت توزيعة من مستودع أجوبة ونقرت عليها نقرا مزدوجا فإنها لن تتثبت في فيدورا
  • السعدي: لأن التوقيع الخاص بنا غير موثوق به بعد
  • السعدي: لكن إن قمت باستيراد المفتاح العام الخاص بنا بالأمر السابق
  • السعدي: فستعتبر الحزم الممهورة بتوقيعنا موثوقة ويسمح بتثبيتها
  • السعدي: أحمد-العربي: هل أصبحت الفكرة واصحة ؟
  • lio_013: ؟
  • أحمد-العربي: alsadi: تعم , شكرا
  • السعدي: meGenius: تفضل
  • meGenius: ماذا تقصد بـ“إذا تغير أي شيء في الحزمة”؟؟
  • السعدي: لنفرض أن شخصا ما قام بعمل حزمة openssh-server معدلة
  • السعدي: برقعة تؤدي إلى إضافة ثغرة
  • السعدي: الحزمة التي قام ببنائها تحتوي فحص md5 سليم
  • السعدي: لأنه عند بناء الحزمة يتم عمل ذلك
  • السعدي: (يتلف فحص md5 من خلال العبث بعد بناء الحزمة أو عدم اكتمال التنزيل)
  • السعدي: أما بناء حزمة من مصدرها فلا يمكن كشف التزوير فيها عبر md5
  • السعدي: لذا يجب أن يمتلك من يبني الحزمة مفتاحا عاما ومفتاحا سريا
  • السعدي: يقوم بوسم الحزمة بالمفتاح السري الخاص به
  • السعدي: كي تدل عليه
  • السعدي: وكل من يملك المفتاح العام الخاص به يمكنه التحقق من مصدرها أنها منه
  • السعدي: في مثالنا بما أن هذا الشخص لا يملك المفتاح السري الخاص بفيدورا
  • السعدي: فإن حزمته المشبوهة لن تطابق أي فحص للتواقيع الإلكترونية الموثوقة
  • السعدي: فإن قام بعمل توقيع خاص به
  • السعدي: يجب أن يقنع الضحية بالوثوق بتوقيعه الإلكتروني عبر
  • السعدي: rpm –import
  • السعدي: وإلا فإن yum سيرفط تثبيتها
  • السعدي: كذلك rpm يخبرك أنها غير موثوقة
  • السعدي: meGenius: هل أجبت عن السؤال ؟
  • meGenius: نعم، جزاك الله خيراً
  • إيهاب: ؟
  • السعدي: lio_013: تفضل
  • lio_013: اذن هل يتم استيراد مفتاح مستودع اعجوبة اوتوماتيكيا عند اضافته الي فيدورا ؟؟
  • السعدي: نعم
  • السعدي: ذلك جزء من السكربت فيه
  • lio_013: تمام
  • السعدي: حيث أن حزم كذا كذا -release
  • السعدي: هدفها إضافة إعدادات الوصول للمستودع والوثوق به
  • السعدي: إيهاب: تفضل
  • إيهاب: فى حالة استخدام برامج أعجوبة على فيدورا وفى عدم وجود إنتر نت قام أحد الأصدقاء بنقل توقيع أعجوبة فكيف أتأكد أن هذا التوقيع سليم؟
  • السعدي: عملية التوقيع اللإلكتروني عملية يستحيل كسرها
  • السعدي: لكن ضعفها هو في نقطة تبدال المفاتيح
  • السعدي: يعني يجب أن تحصل على المفتاح العام من مصدر موثوق
  • السعدي: طبعا موقع أعجوبة ينشر المفتاح العام
  • السعدي: كذلك حزمة ojuba-release تحتوي المفتاح العام
  • السعدي: …إلخ
  • السعدي: إيهاب: هل أجبت عن السؤال ؟
  • إيهاب: يعنى أنه ليس هناك طريقة لفحص التوقيع؟
  • السعدي: حتى تفحص التوقيع على الحزمة أنت بحاجة للمفتاح العام
  • السعدي: لكن كيف تفحص المفتاح العام ؟
  • السعدي: في النهاية أنت تريد شيء تثق في مصدره تقارن الأشياء به
  • السعدي: في حالة rpm
  • السعدي: يجب أن تحصل على المفتاح من مصدر موثوق
  • السعدي: عندها يمكن التحقق من كل الحزم
  • إيهاب: إذن لا يجب أن أثق فى أيا كان لآخذ منه توقيع معين إلا الموقع الرسمى نفسه
  • إيهاب: شكرا
  • السعدي: نعم
  • السعدي: أما الحزم فيمكن مطابقة التوقيع عليها
  • السعدي: ولهذا تستخدم التوزيعات mirrors
  • السعدي: حيث لا يمكن للتوزيعة التحكم في ال mirrors وضمانها
  • السعدي: لكن إن قامت بأي شيء سيكتشف من فساد التوقيع
  • السعدي: ملاحظة في ما تم لصقه على ال #linux-social
rpm -qip ftp://ftp.pbone.net/mirror/ftp.pld-linux.org/dists/3.0/PLD/i486/RPMS/gedit2-2.26.2-1.i486.rpm
warning: ftp://ftp.pbone.net/mirror/ftp.pld-linux.org/dists/3.0/PLD/i486/RPMS/gedit2-2.26.2-1.i486.rpm: Header V4 DSA/SHA1 Signature, key ID e4f1bc2d: NOKEY
  • السعدي: هذا يعني أن الحزمة المشار إليها لا تحمل توقيع موثوق
  • السعدي: لاحظ كلمة NOKEY
  • lio_013: هذا لان المفتاح العام لها غير موجود في نظام rpm علي جهازي ……..اليس كذلك
  • السعدي: إيهاب: هل أجبت سؤالك ؟
  • السعدي: lio_013: كلامك صحيح
  • إيهاب: نعم مشكور
  • السعدي: وآخر دعوانا أن الحمد لله رب العالمين
docs/using_rpm_lecture.txt · آخر تعديل: 2015/04/23 03:20 بواسطة 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki