السعدي: بسم الله نبدأ
السعدي: السلام عليكم ورحمة الله
السعدي: أولا أرحب بكم
السعدي: ثم أذكركم بموضوعنا وهو استعمال حزم وأدوات rpm
السعدي: ثم في الجزء الثاني صنعها
السعدي: في البداية أحب أن نمر بسرعة على نظام الحزم rpm ونلقي بعض الضوء على تطوره والبيئة التي ظهر فيها
السعدي: حزم rpm والتي كانت اختصارا ل redhat package manager
السعدي: هي نظام حزم لتسهيل تثبيت البرامج وإدارتها
السعدي: وكما هو واضح هي بدأت من تطوير شركة ريدهات ظهرت في توزيعة redhat linux
السعدي: التي انقسمت لاحقا إلى RHEL و Fedora
السعدي: بسبب المزايا المتقدم في هذا النظام والمرونة الكبيرة فيه تم اعتماده في الكثير من التوزيعات (لأنه حر مفتوح المصدر)
السعدي: من أشهرها ماندريفا (ماندريك حينها) وسوزة (من نوفل)
السعدي: ومنها أيضا التوزيعة الكورية هانكوم وغير ذلك الكثير
السعدي: كذلك تم اعتماد هذا النظام من قبل معايير مؤسسة لينكس
السعدي: في LSB
السعدي: حيث يجب على التوزيعة الموافقة للمعايير التعامل مع rpm (ولو عبر وسيط مثل alian كما في ديبيان)
السعدي: المعايير لا تفرض على التوزيعة أن يكون rpm هو نظام الحزم الأساسي
السعدي: لكنها تفرض إمكانية التعامل مع حزم rpm ولو عبر وسيط
السعدي: حاليا يتم تطوير rpm خارج ريدهات من خلال 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
السعدي: هذه مخرجات الأمر عندي
السعدي: حسنا
السعدي: كنت نتحدث عن الخيار –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
السعدي: وهذا يجيب على سؤال سابق
السعدي: هذا يعني أن حزمة النواة تعتمد على حزمة 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 و تخصيص المخرجات
السعدي: تعني وجود تغييرات في الملفات المذكورة
السعدي: 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
السعدي: لنفرض أن شخصا ما قام بعمل حزمة openssh-server معدلة
السعدي: برقعة تؤدي إلى إضافة ثغرة
السعدي: الحزمة التي قام ببنائها تحتوي فحص md5 سليم
السعدي: لأنه عند بناء الحزمة يتم عمل ذلك
السعدي: (يتلف فحص md5 من خلال العبث بعد بناء الحزمة أو عدم اكتمال التنزيل)
السعدي: أما بناء حزمة من مصدرها فلا يمكن كشف التزوير فيها عبر md5
السعدي: لذا يجب أن يمتلك من يبني الحزمة مفتاحا عاما ومفتاحا سريا
السعدي: يقوم بوسم الحزمة بالمفتاح السري الخاص به
السعدي: كي تدل عليه
السعدي: وكل من يملك المفتاح العام الخاص به يمكنه التحقق من مصدرها أنها منه
السعدي: في مثالنا بما أن هذا الشخص لا يملك المفتاح السري الخاص بفيدورا
السعدي: فإن حزمته المشبوهة لن تطابق أي فحص للتواقيع الإلكترونية الموثوقة
السعدي: فإن قام بعمل توقيع خاص به
السعدي: يجب أن يقنع الضحية بالوثوق بتوقيعه الإلكتروني عبر
السعدي: rpm –import
السعدي: وإلا فإن yum سيرفط تثبيتها
السعدي: كذلك rpm يخبرك أنها غير موثوقة
السعدي: meGenius: هل أجبت عن السؤال ؟
meGenius: نعم، جزاك الله خيراً