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

# yum groupinstall "Development Tools"
ملخص الجلسة
الوقت المستغرق: ساعة ونصف
عدد الحضور: 18 شخص
نص الجلسة
الوقت المستغرق: ساعة ونصف
عدد الحضور: 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> وآخر دعوانا أن الحمد لله رب العالمين
نرحب بالنقاش على ما دار في الجلسة بهذا الموضوع


Menu
Cat Widget