جارى التحميل
  • الجلسة التعليمية الأولى: نظام الحزم فى انظمة ريدهات

    الجلسة الأولي:
    الهدف : نظام الحزم فى انظمة ريدهات ,التعريف , الاستخدام ونظرة علي كيفية عمل حزمة
    المدة : 60 دقيقة
    التوقيت : 19:00 GMT , بتوقيت جرينتش السابعة مساءا
    اليوم : الخميس, الرابع من مارس 2010 , 4/3/2010
    المحاضر : الأستاذ مؤيد السعدي (فريق اعجوبة لينكس )
    المتطلبات: لكي يتمكن الجميع من متابعة الجزء الثاني من الجلسة الخاص بكيفية عمل حزمة rpm
    تثبيت مجموعة Developement Tools , باستخدم الامر التالي

    # yum groupinstall  "Development Tools"

    ملخص الجلسة
    الوقت المستغرق: ساعة ونصف
    عدد الحضور: 18 شخص

    نص الجلسة
    <bahaa2008> مرحبا بكم في الجلسات التعليمية لقناة مجتمع لينكس العربي
    <bahaa2008> الجلسة الأولى
    <bahaa2008> -------------
    <bahaa2008> الهدف : نظام الحزم فى انظمة ريدهات ,التعريف , الاستخدام ونظرة علي كيفية عمل حزمة
    <bahaa2008> المدة : 60 دقيقة
    <bahaa2008> التوقيت : 19:00 GMT , بتوقيت جرينتش السابعة مساءا
    <bahaa2008> المحاضر : الأستاذ مؤيد السعدي (فريق اعجوبة لينكس )
    <bahaa2008> لمزيد من المعلومات 
    <bahaa2008> http://www.linuxac.org/forum/showthread.php?36483
    <bahaa2008> سنبدأ إن شاء الله بعد أقل من عشر دقائق
    <bahaa2008> لأي ملاحظات أو شكاوي بالرجاء مراسلة أحد المديرين 
    <bahaa2008> المديرين من لديهم دائرة خضراء 
    <bahaa2008> أو علامة @
    <bahaa2008> لمن سيشاركنا في التطبيق العملي في الجزء الثاني بالرجاء تنزيل هذه الحزمة
    <bahaa2008> http://git.ojuba.org/cgit/monajat/snapshot/monajat-2.3.1.tar.gz
    <bahaa2008> اي أسلئة عن كيفية تنزيل الحزمة أو اي شئ أخر بالرجاء السؤال بالقناة التعليمية ##linuxac-social 
    <bahaa2008> سنبدأ الجلسة بعد قليل
    <bahaa2008> بالرجاء من جميع من سيحضر الجلسة الدخول للقناة الإجتماعية
    <bahaa2008>  /j ##linuxac-social 
    <alsadi> يا شباب الاجتماعية شبه فارغة
    <alsadi> فضلا ادخلوا #linuxac-social
    <alsadi> من أجل مشاهدة الأسئلة
    <alsadi> بسم الله نبدأ
    <alsadi> السلام عليكم ورحمة الله
    <alsadi> أولا أرحب بكم
    <alsadi> ثم أذكركم بموضوعنا وهو استعمال حزم وأدوات rpm
    <alsadi> ثم في الجزء الثاني صنعها
    <alsadi> في البداية أحب أن نمر بسرعة على نظام الحزم rpm ونلقي بعض الضوء على تطوره والبيئة التي ظهر فيها
    <alsadi> حزم rpm والتي كانت اختصارا ل redhat package manager
    <alsadi> هي نظام حزم لتسهيل تثبيت البرامج وإدارتها
    <alsadi> وكما هو واضح هي بدأت من تطوير شركة ريدهات ظهرت في توزيعة redhat linux
    <alsadi> التي انقسمت لاحقا إلى RHEL و Fedora
    <alsadi> بسبب المزايا المتقدم في هذا النظام والمرونة الكبيرة فيه تم اعتماده في الكثير من التوزيعات (لأنه حر مفتوح المصدر)
    <alsadi> من أشهرها ماندريفا (ماندريك حينها) وسوزة (من نوفل)
    <alsadi> ومنها أيضا التوزيعة الكورية هانكوم وغير ذلك الكثير
    <alsadi> كذلك تم اعتماد هذا النظام من قبل معايير مؤسسة لينكس
    <alsadi> في LSB
    <alsadi> حيث يجب على التوزيعة الموافقة للمعايير التعامل مع rpm (ولو عبر وسيط مثل alian كما في ديبيان)
    <alsadi> المعايير لا تفرض على التوزيعة أن يكون rpm هو نظام الحزم الأساسي
    <alsadi> لكنها تفرض إمكانية التعامل مع حزم rpm ولو عبر وسيط
    <alsadi> حاليا يتم تطوير rpm خارج ريدهات من خلال rpm.org
    <alsadi> http://rpm.org/
    <alsadi> وطبعا هذا المجتمع يدخل في عضويته نوفل وماندريفا وغيرهم
    <alsadi> الشعار في الموقع هو علامة تجارية لشركة ريدهات
    <alsadi> لكنها لم تعد تطور rpm وحدها
    <alsadi> حيث أصبح اسمها يعني
    <alsadi> rpm package manager
    <alsadi> وليس redhat package manager
    <alsadi> ومن الطرائف أن مطور rpm الأصلي طرد من ريدهات
    <alsadi> حيث أنه تعامل مع أحد العثرات بطريقة فيها إهانة للسائل حيث بلغ أحدهم عن وجود عثرة في rpm
    <alsadi> تؤدي إلى تحطم قاعدة بيانات rpm
    <alsadi> مما يجعل النظام عديم الفائدة. كان طلب المبلغ عن العثرة هو أن يكون نظام rpm مضاد للملفات المعطوبة وما إلا ذلك
    <alsadi> إلا أن ذاك الشخص أهانه وقال له هذا ليس المكان المناسب لتعلم إصلاح قاعدة بيانات rpm
    <alsadi> ابحث في غوغل وانتهى الأمر
    <alsadi> بعد أن تم طرد ذلك الشخص من ريدهات
    <alsadi> أسس منظمة أسماها rpm5
    <alsadi> ويزعم أنها هي المنبع ل rpm الجديدة
    <alsadi> أو الجيل الجديد من rpm
    <alsadi> بحجة أنه المطور الأصلي لها
    <alsadi> إلا أن دعواه لم تلق قبولا لدى أي توزيعة مرموقة
    <alsadi> ولا زال الغالب يعتمدون على rpm.org وليس على rpm5
    <alsadi> ولا تزال التطويرات تدفع في rpm.org بعيدا عن هذا المدعي
    <alsadi> ولم يقبل منه إلا أداة شاذة غريبة تستخدم في بناء حزم rpm في كل من open-office.org و go-oo.org
    <alsadi> وتوزيعات مغمورة لم يسمع عنها أحد
    <alsadi> نتحدث الآن عن معنى مدير الحزم
    <alsadi> مدير الحزم هو فكرة قد تصدم الداخلين الجدد على لينكس حيث لا يوجد مقابل حقيقي لها في ويندوز
    <alsadi> وهي أن هناك مكان مركزي في النظام
    <alsadi> تقع مسؤولية إدارة الملفات فيه على النظام وليس على الشخص
    <alsadi> الحزمة عبارة عن مجموعة من الملفات
    <alsadi> مثل الملفات التنفيذية وملفات الإعدادات
    <alsadi> وملفات الوثائق وغيرها
    <alsadi> كذلك الحزمة تحتوي على المعلومات اللازمة لعمل الحزمة
    <alsadi> مثلا نقول أن الحزمة الفلانية تتطلب مكتبة Qt والحزمة العلانية تتطلب java الإصدار كذا وكذا
    <alsadi> ,i;`h
    <alsadi> هكذا*
    <alsadi> كذلك الحزم تكون مضغوطة وقد تكون ممهورة بالتوقيع الإكتروني أو فحص سلامة الملفات
    <alsadi> من أول وأبسط وأسذج نظم الحزم كانت حزم tgz في سلاكويير slackware
    <alsadi> فهي مجرد ملف مضغوط فيه سكربت للتنفيذ عند التثبيت
    <alsadi> ظهر بعده نظام الحزم deb
    <alsadi> الذي كان قفزة نوعية
    <alsadi> وبعده بقليل ظهر نظام rpm الذي كان نظام الحزم الحقيقي
    <alsadi> وحيث أن موضوعنا ليس في هجاء deb سنقفز إلى مزايا rpm
    <alsadi> من مزايا rpm إمكانية التوقيع الإلكتروني
    <alsadi> كذلك إمكانية عمل فحص لسلامة الملفات (أولا كان md5sum ثم تم تغييره إلى فحوصات أقوى حيث أن rpm مرن في هذا الجانب)
    <alsadi> كذلك من مزايا rpm أن الحمل فيها يمكن أن يكون مضغوطا بأي هيئة
    <alsadi> payload compression
    <alsadi> وليس بالضرورة أن يكون محصورا في gzip أو bz2
    <alsadi> حيث في الإصدارات الأخيرة من suse يستخدمون lzma وتستخدم فيدورا ضغط xz
    <alsadi> نأتي الآن على استخدام أداة rpm
    <alsadi> أول استخدام سنتعلمه هو لعمل query
    <alsadi> على قاعدة بيانات rpm
    <alsadi> حيث أن rpm تحتفظ بالكثير من المعلومات في قاعدة بياناتها
    <alsadi> الخيار المستخدم لذلك هو
    <alsadi> rpm --query
    <alsadi> أو
    <alsadi> rpm -q
    <alsadi> ثم نكتب المعاملات تباعا بحب الاستعلام الذي نريده
    <alsadi> مثلا يمكننا عرض معلومات عن حزمة عبر الأمر
    <alsadi> rpm -qi gedit
    <alsadi> http://fpaste.org/dPV5/
    <alsadi> هذه مخرجات الأمر عندي
    <alsadi> نلاحظ أنها تحتوي اسم الحزمة
    <alsadi> وإصدارها
    <alsadi> وإطلاقها
    <alsadi> ونوعها Group       : Applications/Editors
    <alsadi> ومن أي حزمة مصدرية جاءات
    <alsadi> وتاريخ بناءها وتاريخ تثبيتها
    <alsadi> والرخصة والتوقيع الإلكتروني ...
    <alsadi> كذلك رابط البرنامج الأصلي
    <alsadi> ‏‫كذلك ملخص من سطر واحد Summary     : Text editor for the GNOME desktop
    <alsadi> ثم وصف طويل
    <alsadi> لنفترض أني أريد معلومات عن حزمة غير مثبتة
    <alsadi> عندها أضيف p
    <alsadi> rpm -qip /path/to/gedit-2.26.3-2.fc11.i586.rpm
    <alsadi> ما بعد p هو اسم ملف ليس بالضرورة أن يكون مثبت
    <alsadi> وهذا مفيد حتى مثلا أعرف موقع البرنامج قبل أن أثبته
    <alsadi> لو نظرنا إلى كتيب rpm لوجدنا
    <alsadi> rpm {-q|--query} [select-options] [query-options]
    <alsadi> يعني بعد q نحدد الحزم التي نريدها والمعلومات التي نريدها
    <alsadi> أما عن المعلومات فهي كثيرة جدا
    <ahmed-araby> ?
    <alsadi> مثلا يمكنني طباعة أسماء ملفات الوثائق في حزمة معينة
    <alsadi> [alsadi@pc1 ~]$ rpm -qd httpd
    <alsadi> /usr/share/doc/httpd-2.2.14/ABOUT_APACHE
    <alsadi> /usr/share/doc/httpd-2.2.14/CHANGES
    <alsadi> /usr/share/doc/httpd-2.2.14/LICENSE
    <alsadi> /usr/share/doc/httpd-2.2.14/NOTICE
    <alsadi> /usr/share/doc/httpd-2.2.14/README
    <alsadi> /usr/share/doc/httpd-2.2.14/VERSIONING
    <alsadi> /usr/share/man/man8/apachectl.8.gz
    <alsadi> /usr/share/man/man8/htcacheclean.8.gz
    <alsadi> /usr/share/man/man8/httpd.8.gz
    <alsadi> /usr/share/man/man8/rotatelogs.8.gz
    <alsadi> /usr/share/man/man8/suexec.8.gz
    <alsadi> بهذا الأمر طبعت كل ملفات الوثائق امرتبطة بحزمة أباتشي
    <alsadi> ahmed-araby: تفضل اسأل
    <ahmed-araby> لدي حزمة مركبة
    <ahmed-araby> php-common
    <ahmed-araby> هل يمكنني معرفه مكان ملفات الظبط فقط
    <alsadi> نعم سأذكر ذلك
    <alsadi> نتابع الآن
    <alsadi> قلنا أن -qd تطبع أماكن ملفات الوثائق
    <alsadi> rpm -qd httpd
    <alsadi> أما ملفات الإعدادات والضبط كما سأل أخونا
    <alsadi> فتكون بالأمر rpm -qc
    <alsadi> rpm -qc httpd
    <alsadi> rpm -qc php-common
    <alsadi> ahmed-araby: هل هذا يجيب سؤالك ؟
    <ahmed-araby> نعم
    <alsadi> طيب نابع
    <alsadi> نتابع*
    <alsadi> لعرض كل الملفات التابعة لحزمة ما نستعمل rpm -ql
    <alsadi> مثلا
    <alsadi> rpm -ql php-common | less
    <alsadi> إن كانت الحزمة غير مثبتة نستعمل p كما ذكرنا سابقا
    <alsadi> rpm -qlp /path/to/gedit-2.26.3-2.fc11.i586.rpm
    <alsadi> q يعني query
    <alsadi> l يعني list files
    <alsadi> p تعني package file
    <alsadi> وليس حزمة مثبتة
    <alsadi> ليس بالضرورة أن تكون كل الملفات الظاهرة في l جاءت من الحزمة
    <alsadi> بل هناك خيار اسمه ghost
    <alsadi> يسمح لحزمة أن تملك ملفات يتولد من خارجها
    <alsadi> يمكن عرض أسماء كل الحزم المثبتة من خلال -a أو --all
    <alsadi> مثلا
    <alsadi> rpm -qa
    <alsadi> تطبع أسماء كل الحزم المثبتة
    <meGenius> !
    <alsadi> تفضل
    <alsadi> meGenius: تفضل
    <meGenius> فصل أكثر عن ghost
    <alsadi> مثلا ملفات initrd في النواة
    <alsadi> تتولد من وضع وحدات modules يتم توليدها منخلال السكربت mkinitrd
    <alsadi> بحسب التعريفات المستخدمة
    <alsadi> ولا تكون موجودة داخل حزمة النواة
    <alsadi> لكنها تكون مملوكة لحزمة النواة
    <meGenius> !
    <alsadi> تفضل
    <meGenius> و هل يجب أن يكون mkinitrd ضمن الحزمة؟؟
    <meGenius> أم فقط dependency؟؟
    <alsadi> هي اعتمادية
    <alsadi> مثال آخر يوضح الأمور
    <alsadi> تخيل حزمة تولد تقارير تتولد من خلال cron jobs
    <alsadi> أو تولد ملفات من خلال initscripts
    <alsadi> أو عند أول استعمال
    <alsadi> اظن أن من أمثلة ذلك ملف
    <alsadi> /usr/sbin/.sshd.hmac
    <alsadi> في حزمة openssh-server
    <alsadi> meGenius: هل الفكرة واضحة ؟
    <meGenius> alsadi: نعم وصلت الفكرة
    <EHAB> ?
    <alsadi> EHAB: تفضل
    <EHAB> كيف يمكن أن نستخدم الخيار ghost
    <alsadi> نحن لا نستعمله. بل من يقوم بعمل الحزمة هو من يحدد الملفات التي تنتمي للحزمة
    <alsadi> سواء كانت فيها أو لم تكن
    <alsadi> هل نتابع ؟
    <EHAB> y
    <alsadi> حسنا
    <alsadi> كنت نتحدث عن الخيار --all أو -a
    <alsadi> مثلا rpm -qa
    <alsadi> تطبع أسماء كل الحزم الموجودة في النظام
    <alsadi> يكن يمكننا تقييد ذلك دون استعمال grep
    <alsadi> عبر تحديد نمط ما هكذا
    <alsadi> rpm -qa '*ssh*'
    <alsadi> والذي يعني هات أسماء كل الحزم التي في اسمها كلمة ssh
    <alsadi> وهذا يطابق openssh-server وغيره من الحزم
    <alsadi> الخيار --all هو من عائلة خيارات selection option
    <alsadi> أي تحديد عن أي الحزم نريد العمل
    <alsadi> أما خيارات الاستعلام نفسها فقط تكون مثل d l c التي تحدثنا عنها
    <alsadi> من خيارات الاستعلام طباعة changelog لحزمة
    <alsadi> مثلا
    <alsadi> rpm -q --changelog gedit
    <alsadi> يمكن تطبيقها على حزمة غير مثبتة أيضا عبر p
    <ahmed-araby> !
    <alsadi> تفضل
    <ahmed-araby> هل يمكن استخدام p علي حزمة موجوده علي الانترنت ؟
    <alsadi> أظن ذلك حيث أن rpm قادرة على تنزيل الملفات
    <alsadi> لكني لم أجرب ذلك
    <ahmed-araby> شكرا
    <alsadi> ويجر بنا الإشارة إلى أن هذا السجل للتغيّرات ليس من ملف changelog
    <alsadi> لكنه خاص بالحزمة
    <alsadi> وغالبا ما يحتوي على معلومات خاصة بالتغييرات على التحزيم
    <alsadi> من الاستعلامات الاخرى -R أو --requires
    <alsadi> وهي تعطينا الاعتماديات
    <alsadi> مثلا
    <alsadi> rpm -q -R kernel
    <alsadi> حيث تخبرني على ماذا تعتمد النواة
    <alsadi> سنجد في المخرجات مثلا
    <alsadi> initscripts >= 8.11.1-1
    <alsadi> mkinitrd >= 6.0.61-1
    <alsadi> وهذا يجيب على سؤال سابق
    <alsadi> هذا يعني أن حزمة النواة تعتمد على حزمة initscripts بشرط أن يكون الإصدار أكبر من الرقم المحدد
    <alsadi> كذلك نجد في المخرجات
    <alsadi> /bin/sh
    <alsadi> أي أن حزمة النواة تعتمد على الملف المذكور
    <alsadi> وهذا فرق بين حزم rpm و deb
    <alsadi> حيث في deb يتم ذكر الاعتماديات باسم الحزمة
    <alsadi> أما في rpm فالغالب بالملف أو المكتبة أو الميزة
    <alsadi> وسبب ذلك أن تسمية الحزم غالبا عشوائية وتتخبط من توزيعة لأخرى ومن شخص لآخر
    <alsadi> كذلك من الخيارات --provides
    <alsadi> حيث نستعلم به عما تقدمه الحزمة من مزايا أو من حزم مكافئة
    <alsadi> مثلا
    <alsadi> rpm -q --provides abiword
    <alsadi> mimehandler(application/msword)
    <alsadi> أي أن حزمة abiword توفر برنامج يفتح ملفات msword
    <alsadi> ولو جربنا
    <alsadi> rpm -q --provides fedora-release
    <alsadi> أو
    <alsadi> rpm -q --provides ojuba-release
    <alsadi> لوجدنا سطر
    <alsadi> system-release = 11-1
    <alsadi> وهذه ميزة
    <alsadi> يعني يمكن لحزمة أن توفر بديل لحزمة أخرى أو ميزة وهمية
    <alsadi> ربما ما بقي من query options في الكتيب لا يعني المستخدم النهائي
    <alsadi> مثل عرض السكربتات و المصائد triggers  و تخصيص المخرجات
    <alsadi> rpm --qf 'version of %{Name} is %{Version}\n' -q gedit
    <alsadi> rpm --qf 'size of %{Name} is %{size}\n' -q gedit
    <alsadi> وحيث أننا عرجنا عن البحث عن المزايا يمكن البحث في مزايا حزم غير موجودة عندك من خلال yum
    <alsadi> بطريقة مشابهة
    <alsadi> من خلال --whatprovides
    <alsadi> في اداة rpm يمكن التحكم بخيارات عامة مثل v  أو verbose
    <alsadi> فكلما وضعنا v زادت ثرثرة الأداة
    <alsadi> rpm -qvl gedit
    <alsadi> تطبع معلومات تفصيلية عن الملفات مثل تاريخ التعديل والصلاحيات
    <alsadi> يمكن تكرار v أكثر من مرة
    <alsadi> نأتي الآن إلى التحقق من سلامة الحزم
    <alsadi> يمكننا استعمال
    <alsadi> rpm -V
    <alsadi> ثم نحدد الحزم المراد فحصها تماما كما كنا نفعل مع rpm -q
    <alsadi> مثلا
    <alsadi> rpm -V gedit
    <alsadi> عندي لا تعطي أي نتائج هذا لأنه لم يجر أي تغيير أو عبث بملفات تلك الحزمة
    <alsadi> في حين
    <alsadi> [alsadi@pc1 ~]$ rpm -V httpd
    <alsadi> S.5....T.  c /etc/httpd/conf/httpd.conf
    <alsadi> ..?......    /usr/sbin/suexec
    <alsadi> ....L....    /var/www/html
    <alsadi> تعني وجود تغييرات في الملفات المذكورة
    <alsadi> S تعني اختلف الحجم
    <alsadi> 5 تعني اختلف md5
    <alsadi> T تعني اختلف وقت آخر تعديل
    <alsadi> وهكذا للمزيد انظر
    <alsadi> man rpm
    <alsadi> كذلك هناك
    <alsadi> rpm --checksig
    <alsadi> متبوعة باسم ملف rpm
    <alsadi> التي تفحص التوقيع الإلكتروني
    <alsadi> يقي أن نقول طريقة تثبيت أو إزالة الحزم
    <alsadi> وهذه آخر ما نحتاج له بسبب أننا نستعمل yum
    <alsadi> حيث أن تثبيت الحزم مباشرة عبر rpm
    <alsadi> أمر لا ننصح به
    <alsadi> لكن نعرج عليه على عجالة
    <alsadi> rpm -i filename.rpm
    <alsadi> ويمكننا إضافة v أي verbose حتى نرى مراحل التثبيت
    <alsadi> أو مع h أي hash حتى نرى علامة #
    <alsadi> تتحرك ################
    <alsadi> بدلا من مشاهدة تقرير نصي "يجري عمل كذا كذا"
    <alsadi> فتصبح
    <alsadi> rpm -ivh foobar-2.1-1.noarch.rpm
    <alsadi> للترقية
    <alsadi> rpm -Uvh
    <alsadi> ثم اسم الملف
    <alsadi> يمكن إزالة حزمة ما عبر
    <alsadi> rpm -e
    <alsadi> ثم محددات لاختيار الحزمة كما في rpm -q
    <Albakry> !
    <alsadi> Albakry: تفضل
    <Albakry> لماذا تعتمد التوزيعات مديري حزم مختلفة
    <alsadi> Albakry: اظن هذا ليس موضوعنا
    <Albakry> اذا كانت rpm تقوم بالعمل
    <Albakry> !
    <alsadi> لماذا تتمسك ديبيان ب deb ليس موضوعنا
    <alsadi> كذلك لماذا تمسك slackware ب tgz
    <Albakry> لا اقصد التوزيعات الردهاتية
    <lio_013> يقصد لم yum في وجود rpm
    <Albakry> مندريفا وفيدورا
    <root3ksa> ما ذا يدل rpm -q
    <Albakry> انتهى
    <EHAB> !
    <alsadi> تفضل
    <alsadi> EHAB: تفضل
    <EHAB>  وهذه آخر ما نحتاج له بسبب أننا نستعمل yum حيث أن تثبيت الحزم مباشرة عبر rpm أمر لا ننصح به
    <EHAB> لماذا؟
    <alsadi> حتى لا نتعامل مع الاعتماديات
    <alsadi> حيث يقول yum
    <alsadi> بجلب الاعتماديات من المستودعات عبر الإنترنت
    <alsadi> EHAB: وصل الجواب ؟
    <EHAB> نعم شكرا
    <alsadi> ولا يعنينا شرح كيف نخبر rpm على تجاهل الاعتماديات
    <alsadi> أو تجاهل أشياء معينة لأن ذلك عاجلا أو آجلا سيؤدي لمشاكل كثيرة
    <alsadi> لكنها موجودة في الكتيب
    <alsadi> من بين الخيارات التي نستطيع تمريرها لخيارات التثبيت أو الإزالة هي
    <alsadi> --test
    <alsadi> التي تقوم بعمل كل شيء إلا التثبيت أو الإزالة
    <alsadi> كما يقال dry run
    <alsadi> "على الناشف"
    <lio_013> :)
    <alsadi> نأتي الآن على آخر موضوع وهو كيف نعمل وقوث بمفتاح التوقيع الألكتروني لجهة ما
    <alsadi> يكون ذلك عبر الأمر
    <alsadi> rpm --import
    <alsadi> ثم مسار ملف التوقيع الإلكتروني
    <alsadi> مثلا
    <alsadi> rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
    <alsadi> الآن ننهي الجلسة إذا لم يبقى أسئلة
    <ahmed-araby> !
    <alsadi> ahmed-araby: تفضل
    <ahmed-araby> كيف يفيد التوقيع
    <ahmed-araby> ?
    <alsadi> عندما تقوم بتثبيت حزمة من مصدر ما يتم فحص التوقيع الإكتروني عليها
    <ahmed-araby> اذن ان كان لدي ملف التوقيع لمخزن معين
    <alsadi> كل الحزم من المستودعات الرسمية تكون مختومة بالتوقيع الإكتروني الخاص بذاك المستودع
    <alsadi> مثلا التوقيع أعلاه هو توقيع فيدورا
    <ahmed-araby> وقمت بتثبيت حزمة فيجب ان يتاطابق التوقيع لكي اتاكد انها من ذلك المخن
    <alsadi> كذلك في المجلد نفسه تجد التوقيع الإلكتروني لأعجوبة و rpmfusion
    <alsadi> وغيرها
    <alsadi> هذا توقيع يستعمل gpg
    <alsadi> لفحص سلامة الحزمة
    <alsadi> إذا تغيير أي شيء في الحزمة فإن التوقيع عليها لن يتطابق
    <meGenius> !
    <alsadi> مثلا لنفرض أنك أحضرت توزيعة من مستودع أجوبة ونقرت عليها نقرا مزدوجا فإنها لن تتثبت في فيدورا
    <alsadi> لأن التوقيع الخاص بنا غير موثوق به بعد
    <alsadi> لكن إن قمت باستيراد المفتاح العام الخاص بنا بالأمر السابق
    <alsadi> فستعتبر الحزم الممهورة بتوقيعنا موثوقة ويسمح بتثبيتها
    <alsadi> ahmed-araby: هل أصبحت الفكرة واصحة ؟
    <lio_013> ؟
    <ahmed-araby> alsadi: تعم , شكرا
    <alsadi> meGenius: تفضل
    <meGenius> ماذا تقصد بـ"إذا تغير أي شيء في الحزمة"؟؟
    <alsadi> لنفرض أن شخصا ما قام بعمل حزمة openssh-server معدلة
    <alsadi> برقعة تؤدي إلى إضافة ثغرة
    <alsadi> الحزمة التي قام ببنائها تحتوي فحص md5 سليم
    <alsadi> لأنه عند بناء الحزمة يتم عمل ذلك
    <alsadi> (يتلف فحص md5 من خلال العبث بعد بناء الحزمة أو عدم اكتمال التنزيل)
    <alsadi> أما بناء حزمة من مصدرها فلا يمكن كشف التزوير فيها عبر md5
    <alsadi> لذا يجب أن يمتلك من يبني الحزمة مفتاحا عاما ومفتاحا سريا
    <alsadi> يقوم بوسم الحزمة بالمفتاح السري الخاص به
    <alsadi> كي تدل عليه
    <alsadi> وكل من يملك المفتاح العام الخاص به يمكنه التحقق من مصدرها أنها منه
    <alsadi> في مثالنا بما أن هذا الشخص لا يملك المفتاح السري الخاص بفيدورا
    <alsadi> فإن حزمته المشبوهة لن تطابق أي فحص للتواقيع الإلكترونية الموثوقة
    <alsadi> فإن قام بعمل توقيع خاص به
    <alsadi> يجب أن يقنع الضحية بالوثوق بتوقيعه الإلكتروني عبر
    <alsadi> rpm --import
    <alsadi> وإلا فإن yum سيرفط تثبيتها
    <alsadi> كذلك rpm يخبرك أنها غير موثوقة
    <alsadi> meGenius: هل أجبت عن السؤال ؟
    <meGenius> نعم، جزاك الله خيراً
    <EHAB> ؟
    <alsadi> lio_013: تفضل
    <lio_013> اذن هل يتم استيراد مفتاح مستودع اعجوبة  اوتوماتيكيا عند اضافته  الي فيدورا ؟؟
    <alsadi> نعم
    <alsadi> ذلك جزء من السكربت فيه
    <lio_013> تمام
    <alsadi> حيث أن حزم كذا كذا -release
    <alsadi> هدفها إضافة إعدادات الوصول للمستودع والوثوق به
    <alsadi> EHAB: تفضل
    <EHAB> فى حالة استخدام برامج أعجوبة على فيدورا وفى عدم وجود إنتر نت قام أحد الأصدقاء بنقل توقيع أعجوبة فكيف أتأكد أن هذا التوقيع سليم؟
    <alsadi> عملية التوقيع اللإلكتروني عملية يستحيل كسرها
    <alsadi> لكن ضعفها هو في نقطة تبدال المفاتيح
    <alsadi> يعني يجب أن تحصل على المفتاح العام من مصدر موثوق
    <alsadi> طبعا موقع أعجوبة ينشر المفتاح العام
    <alsadi> كذلك حزمة ojuba-release تحتوي المفتاح العام
    <alsadi> ...إلخ
    <alsadi> EHAB: هل أجبت عن السؤال ؟
    <EHAB> يعنى أنه ليس هناك طريقة لفحص التوقيع؟
    * Sameer-Jubeh (~sameer@a136-102.adsl.paltel.net) has joined #linuxac
    <alsadi> حتى تفحص التوقيع على الحزمة أنت بحاجة للمفتاح العام
    <alsadi> لكن كيف تفحص المفتاح العام ؟
    <alsadi> في النهاية أنت تريد شيء تثق في مصدره تقارن الأشياء به
    <alsadi> في حالة rpm
    <alsadi> يجب أن تحصل على المفتاح من مصدر موثوق
    <alsadi> عندها يمكن التحقق من كل الحزم
    <EHAB> إذن لا يجب أن أثق فى أيا كان لآخذ منه توقيع معين إلا الموقع الرسمى نفسه
    <EHAB> شكرا
    <alsadi> نعم
    alsadi> أما الحزم فيمكن مطابقة التوقيع عليها
    <alsadi> ولهذا تستخدم التوزيعات mirrors
    <alsadi> حيث لا يمكن للتوزعة التحكم في ال mirrors وضمانها
    <alsadi> لكن إن قامت بأي شيء سيكتشف من فساد التوقيع
    <alsadi> ملاحظة في ما تم لصقه على ال #linux-social
    <alsadi> rpm -qip ftp://ftp.pbone.net/mirror/ftp.pld-linux.org/dists/3.0/PLD/i486/RPMS/gedit2-2.26.2-1.i486.rpm
    <alsadi> 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
    <alsadi> هذا يعني أن الحزمة المشار إليها لا تحمل توقيع موثوق
    <alsadi> لاحظ كلمة NOKEY
    <lio_013> هذا لان المفتاح العام لها غير موجود في نظام rpm علي جهازي ........اليس كذلك
    <alsadi> EHAB: هل أجبت سؤالك ؟
    <alsadi> lio_013: كلامك صحيح
    <EHAB> نعم مشكور
    <alsadi> وآخر دعوانا أن الحمد لله رب العالمين

    نرحب بالنقاش على ما دار في الجلسة بهذا الموضوع
    This article was originally published in forum thread: الجلسة التعليمية الأولى: نظام الحزم فى انظمة ريدهات started by bahaa2008 View original post