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

أدوات الموقع


docs:using_rpm_lecture

اختلافات

عرض الاختلافات بين النسخة المختارة و النسخة الحالية من الصفحة.

رابط إلى هذه المقارنة

جانبي المراجعة السابقة المراجعة السابقة
المراجعة التالية
المراجعة السابقة
docs:using_rpm_lecture [2010/03/06 20:42]
alsadi
docs:using_rpm_lecture [2015/04/23 00:20] (حالي)
سطر 1: سطر 1:
 +{{tag>​مقالات محاضرة استخدام متقدم rpm linuxac}}
 +====== محاضرة عن استخدام rpm ======
  
 +هذا تسجيل لجلسة تمت على قناة linuxac على IRC
 +
 +  * http://​www.linuxac.org/​forum/​showthread.php?​36846
 +  * http://​www.linuxac.org/​forum/​showthread.php?​36483
 +
 +===== التحضيرات =====
 +
 +  * بهاء: مرحبا بكم في الجلسات التعليمية لقناة مجتمع لينكس العربي
 +  * بهاء: الجلسة الأولى
 +  * بهاء: -------------
 +  * بهاء: الهدف : نظام الحزم فى انظمة ريدهات ,​التعريف , الاستخدام ونظرة علي كيفية عمل حزمة
 +  * بهاء: المدة : 60 دقيقة
 +  * بهاء: التوقيت : 19:00 GMT , بتوقيت جرينتش السابعة مساءا
 +  * بهاء: المحاضر : الأستاذ مؤيد السعدي (فريق اعجوبة لينكس )
 +  * بهاء: لمزيد من المعلومات ​
 +  * بهاء: http://​www.linuxac.org/​forum/​showthread.php?​36483
 +  * بهاء: سنبدأ إن شاء الله بعد أقل من عشر دقائق
 +  * بهاء: لأي ملاحظات أو شكاوي بالرجاء مراسلة أحد المديرين ​
 +  * بهاء: المديرين من لديهم دائرة خضراء ​
 +  * بهاء: أو علامة @
 +  * بهاء: اي أسلئة عن كيفية تنزيل الحزمة أو اي شئ أخر بالرجاء السؤال بالقناة التعليمية ##​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
 +  * السعدي:​ هذه مخرجات الأمر عندي
 +
 +<code bash>
 +[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.
 +</​code>​
 +
 +  * السعدي:​ نلاحظ أنها تحتوي اسم الحزمة
 +  * السعدي:​ وإصدارها
 +  * السعدي:​ وإطلاقها
 +  * السعدي:​ ونوعها 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 نحدد الحزم التي نريدها والمعلومات التي نريدها
 +  * السعدي:​ أما عن المعلومات فهي كثيرة جدا
 +
 +  * أحمد-العربي:​ ?
 +
 +  * السعدي:​ مثلا يمكنني طباعة أسماء ملفات الوثائق في حزمة معينة
 +
 +<code bash>
 +[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
 +</​code>​
 +
 +  * السعدي:​ بهذا الأمر طبعت كل ملفات الوثائق امرتبطة بحزمة أباتشي
 +  * السعدي:​ أحمد-العربي:​ تفضل اسأل
 +
 +  * أحمد-العربي:​ لدي حزمة مركبة
 +  * أحمد-العربي:​ php-common
 +  * أحمد-العربي:​ هل يمكنني معرفه مكان ملفات الظبط فقط
 +
 +  * السعدي:​ نعم سأذكر ذلك
 +  * السعدي:​ نتابع الآن
 +  * السعدي:​ قلنا أن -qd تطبع أماكن ملفات الوثائق
 +  * السعدي:​ rpm -qd httpd
 +  * السعدي:​ أما ملفات الإعدادات والضبط كما سأل أخونا
 +  * السعدي:​ فتكون بالأمر rpm -qc
 +  * السعدي:​ rpm -qc httpd
 +  * السعدي:​ ولو طبقنا ذلك عن الحزمة التي سألت عنها
 +
 +<code bash>
 +[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
 +</​code>​
 +
 +  * السعدي:​ أحمد-العربي:​ هل هذا يجيب سؤالك ؟
 +
 +  * أحمد-العربي:​ نعم
 +
 +  * السعدي:​ طيب نتابع
 +  * السعدي:​ لمعرفة من أي حزمة جاء ملف ما نستخدم rpm -qf ثم اسم الملف
 +
 +<code bash>
 +rpm -qf /etc/issue
 +ojuba-release-11-6.oj3.noarch
 +</​code>​
 +
 +  * السعدي:​ لعرض كل الملفات التابعة لحزمة ما نستعمل rpm -ql
 +  * السعدي:​ مثلا
 +
 +<code bash>
 +rpm -ql php-common | less
 +</​code>​
 +
 +  * السعدي:​ إن كانت الحزمة غير مثبتة نستعمل p كما ذكرنا سابقا
 +
 +<code bash>
 +rpm -qlp /​path/​to/​gedit-2.26.3-2.fc11.i586.rpm
 +</​code>​
 +
 +  * السعدي:​ 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
 +
 +<code bash>
 +[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
 +</​code>​
 +
 +  * السعدي:​ حيث تخبرني على ماذا تعتمد النواة
 +  * السعدي:​ سنجد في المخرجات مثلا
 +<​code>​
 +initscripts >= 8.11.1-1
 +mkinitrd >= 6.0.61-1
 +</​code>​
 +
 +  * السعدي:​ وهذا يجيب على سؤال سابق
 +  * السعدي:​ هذا يعني أن حزمة النواة تعتمد على حزمة 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 ​ و تخصيص المخرجات
 +
 +<code bash>
 +rpm --qf '​version of %{Name} is %{Version}\n'​ -q gedit
 +rpm --qf 'size of %{Name} is %{size}\n'​ -q gedit
 +</​code>​
 +
 +  * السعدي:​ وحيث أننا عرجنا عن البحث عن المزايا يمكن البحث في مزايا حزم غير موجودة عندك من خلال yum
 +  * السعدي:​ بطريقة مشابهة
 +  * السعدي:​ من خلال --whatprovides
 +  * السعدي:​ في اداة rpm يمكن التحكم بخيارات عامة مثل v  أو verbose
 +  * السعدي:​ فكلما وضعنا v زادت ثرثرة الأداة
 +  * السعدي:​ rpm -qvl gedit
 +  * السعدي:​ تطبع معلومات تفصيلية عن الملفات مثل تاريخ التعديل والصلاحيات
 +  * السعدي:​ يمكن تكرار v أكثر من مرة
 +  * السعدي:​ نأتي الآن إلى التحقق من سلامة الحزم
 +  * السعدي:​ يمكننا استعمال
 +  * السعدي:​ rpm -V
 +  * السعدي:​ ثم نحدد الحزم المراد فحصها تماما كما كنا نفعل مع rpm -q
 +  * السعدي:​ مثلا
 +  * السعدي:​ rpm -V gedit
 +  * السعدي:​ عندي لا تعطي أي نتائج هذا لأنه لم يجر أي تغيير أو عبث بملفات تلك الحزمة
 +  * السعدي:​ في حين
 +<​code>​
 +[alsadi@pc1 ~]$ rpm -V httpd
 +S.5....T. ​ c /​etc/​httpd/​conf/​httpd.conf
 + ​..?​...... ​   /​usr/​sbin/​suexec
 + ​....L.... ​   /​var/​www/​html
 +</​code>​
 +
 +  * السعدي:​ تعني وجود تغييرات في الملفات المذكورة
 +  * السعدي:​ 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
 +  * السعدي:​ ثم مسار ملف التوقيع الإلكتروني
 +  * السعدي:​ مثلا
 +
 +<code bash>
 +rpm --import /​etc/​pki/​rpm-gpg/​RPM-GPG-KEY-fedora
 +</​code>​
 +
 +  * السعدي:​ الآن ننهي الجلسة إذا لم يبقى أسئلة
 +
 +  * أحمد-العربي:​ !
 +
 +  * السعدي:​ أحمد-العربي:​ تفضل
 +  * أحمد-العربي:​ كيف يفيد التوقيع
 +  * أحمد-العربي:​ ?
 +  * السعدي:​ عندما تقوم بتثبيت حزمة من مصدر ما يتم فحص التوقيع الإكتروني عليها
 +
 +  * أحمد-العربي:​ اذن ان كان لدي ملف التوقيع لمخزن معين
 +
 +  * السعدي:​ كل الحزم من المستودعات الرسمية تكون مختومة بالتوقيع الإكتروني الخاص بذاك المستودع
 +  * السعدي:​ مثلا التوقيع أعلاه هو توقيع فيدورا
 +
 +  * أحمد-العربي:​ وقمت بتثبيت حزمة فيجب ان يتاطابق التوقيع لكي اتاكد انها من ذلك المخن
 +
 +  * السعدي:​ كذلك في المجلد نفسه تجد التوقيع الإلكتروني لأعجوبة و 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
 +<code bash>
 +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
 +</​code>​
 +
 +  * السعدي:​ هذا يعني أن الحزمة المشار إليها لا تحمل توقيع موثوق
 +  * السعدي:​ لاحظ كلمة NOKEY
 +  * lio_013: هذا لان المفتاح العام لها غير موجود في نظام rpm علي جهازي ........اليس كذلك
 +
 +  * السعدي:​ إيهاب: هل أجبت سؤالك ؟
 +
 +  * السعدي:​ lio_013: كلامك صحيح
 +
 +  * إيهاب: نعم مشكور
 +
 +  * السعدي:​ وآخر دعوانا أن الحمد لله رب العالمين
docs/using_rpm_lecture.txt · آخر تعديل: 2015/04/23 00:20 (تحرير خارجي)