بــــــسم الله الرحمن الرحيـــــــــــم
السلام عليكم ورحمة الله وبركاته

### شرح تركيب باكج ال RPM ومعالجة مشكلة ال dependency من الآلف الى الياء بأمر الله ###


- تنصيب البرامج او الباكجات packages هو أمر نقوم به كمديرين للسيرفرات وذلك عند حاجتنا الى برنامج لكى يضيف مزايا أكثر للسيرفر ويعطينا أيضا امكانيات أفضل
- تنصيب الباكج سهل جدا بامر الله ولكنه فى بعض الاحيان يتطلب الى الصبر
- الباكج هى ملف قابل للتنفيذ executable وذلك تحت بيئة لينكس وينتهى دائما بالامتداد rpm
- يتم تنصيب الباكجات باستخدام برنامج ال RPM (Redhat Package Manager) وهو الذى يمنحنا التحكم وادارة الباكجات ,مثل تنصيب, تحديث, ازالة, والاستعلام عن باكج وغيرها من مهام ادارية للباكجات الموجودة على الخادم ,,,

* ما الذى نحتاجه لكى نستطيع تنصيب باكج ؟؟
1) معرفة عامة وبسيطة عن ملف الباكج وأجزائه
2) موقع لتنزيل الباكج من خلاله
3) اسم الباكج المراد تنصيبها
4) اختيار وتحديد الباكج المناسبة لسيرفرنا
5) تنصيب الباكج
6) معالجة باكجات ال dependency (ان تم احتياجها)


1) قبل ان يتم التعامل مع ملف الباكج فانه يلزم معرفة مما يتكون ,حيث يتكون ملف الباكج من التالى :
كود:
Packagename-version-release.architecture.rpm
- ال Packagename , هو اسم البرنامج المراد تنصيبه

- ال version , هو رقم اصدار البرنامج (مثل الاصدار الآول , الثانى , ...وهكذا)

- ال release , هو رقم نسخة الاصدار (مثل الاصدار الآول النسخة الاولى , الثانية , ... وهكذا)

- ال architecture , هو اصدار البروسيسور الخاص بسيرفرك , وفيما يلى الاصدرات التى ستجدها متوفرة :

الاصدار Noarch ,بمعنى لا اصدار محدد اى ان الباكج ستعمل على اى اصدار للبروسيسور بدون اى مشاكل بامر الله

الاصدار 1386 ,للآنظمة ذات ال 32 bit X68

الاصدار I586 ,للبروسيورز الخاصة بالجيل الآول Pantium I وبروسيسورز من النوع AMD

الاصدار I686 ,للبروسيسورز الخاصة بالجيل الآول, الثانى ,الثالث, والرابع Intel® Pentium® II, Intel Pentium III, Intel Pentium 4 , وايضا بروسيسورز من النوعAMD® Athlon, و AMD Duron

الاصدار X86_64 ,للآنظمة ذات ال 46 bit مثل البروسيسورز AMD Athlon64, AMD Opteron, Phenom and Intel EM64T (Core 2 Duo, Core 2 Quad)

الاصدار Ppc ,للآنظمة ذات ال 32 bit من النوع IBM® POWER, IBM eServer™ pSeries®, and IBM eServer iSeries

2) مواقع تنزيل الباكج كثيرة جدا ومنها هذا الموقع على سبيل المثال
http://rpm.pbone.net
(هذا هو الموقع المفضل لدى وهو ما سيتم التعامل معه اثناء الشرح بأمر الله)

3) لكى تقوم بانزال باكج فانه يجب عليك ايضا معرفة اسم الباكج المطلوب تنصيبه

4) الآن لا ينقصنا لتنزيل اى باكج سوى تحديد اى باكج المناسبة للسيرفر الخاص بنا , من خلال ما سبق شرحه فالمكتمل لدينا الآن هو التالى
كود:
Packagename(ok)-verson(ok)-release(ok).architecture(no).rpm(ok)
لدينا اسم الباكج , وعليه سنختار احدث اصدار واحدث نسخة والتى كما اتفقنا ستنتهى بامتداد rpm ,ولكن اى باكج متوافقة مع البروسيسور الخاص بسيرفرنا ؟؟؟

لمعرفة ذلك ولتحديد الباكج المناسبة لنا ,فانه يلزمنا تحديد نوع البروسيسور الخاص بالخادم, وذلك من خلال الآمر التالى :
كود:
uname –p
ناتج هذا الآمر سيوضح لنا نوع البروسيسور الخاص بالسيرفر وعليه سنختار الباكج المناسبة له ,مثال i386

ولمعرفة اسم نسخة نظام التشغيل الخاص بالسيرفر حتى يسهل علينا اكثر فى اختيار الباكج , نستخدم الامر التالى
كود:
cat /etc/redhat-release
ناتج هذا الآمر سيوضح اسم نسخة نظام التشغيل الخاصة بالسيرفر, مثال CentOS release 5.5 Final

5) الآن نذهب الى الموقع http://rpm.pbone.net/ , ونقوم بالبحث عن الباكج المطلوبة ومن ناتج البحث نختار الباكج المتوافقة مع التالى :
- نظام التشغيل الخاص بنا
- نوع البروسيسور الخاص بالسيرفر

عند استخدام الموقع فى البحث عن باكج فانه هناك عدة خيارات للبحث ,كما هو موضح فى الصورة التالية




- الاختيار الآول ,تحدده فى حالة اردت ان تحصل على باكج تحتوى على ملف معين او برنامج معين ,مثال , libname.so او libname

- الاختيار الثانى ,تحدده فى حالة اذا اردت ان تبحث عن روابط اف تى بى لتزيل الباكج من خلالها مثال , packagename او libname او filename

- الاختيار الثالث ,تحدده فى حالة اذا اردت ان تبحث عن اسم باكج محدد اى انك ستقوم بادخال اسم باكج وليس مكتابات او ملفات خاصة بالباكج, مثال packagename

- الاختيار الرابع , تحدده فى حالة اذا اردت ان تبحث عن روابط اف تى بى لتزيل الباكج من خلالها ولكن البحث يكون باسم الباكج فقط, مثال packagename

بعد البحث سنجد نسخ عديدة من الباكج , قم باختيار الباكج المناسبة لسيرفرك ونسخة نظام التشغيل الخاصة بك, بعد اختيار الباكج ستجد روابط عديدة لتنزيل الباكج من خلالها , على سبيل المثال اخترت التالى

كود:
http://www.domain.com/flvtool2-1.0.6-1.el5.rf.noarch.rpm
الان لكى نقوم بتنصيب الباكج لدينا اختيارين :

الآول , هو انزال الباكج الى الخادم ومن ثم تنصيبها

الثانى , هو تنصيب الباكج مباشرة من خلال الرابط
(وهذا افضل وهو ما ساعتمد عليه بأمر الله)

لتنصيب الباكج من خلال الرابط نستخدم الامر التالى :
كود:
rpm –Uvh http://www.domain.com/flvtool2-1.0.6-1.el5.rf.noarch.rpm
هذا الامر سيقوم بتنصيب الباكج مباشرة على الموقع الموجود به ,دون الحاجة الى انزالها ومن ثم تنصيبها

تحليل الآمر rpm –Uvh

- برنامج ال
rpm ,هو البرنامج المسؤل عن ادارة الباكج كما رأينا سابقا


- اوبشن ال
U ,معناه تحديث او Upgrade وهو سيقوم باعادة تنصيب الباكج مرة اخرى فى حالة اذا كانت موجودة ولكن بنسخة اقدم او تنصيبها اذا كانت غير موجودة


- اوبشن ال
v ,معناه جعل عملية التنصيب مرئية او verbose ,وهو مفيد جدا لكى تكون على علم بما يتم عمله اثناء التنصيب


- اوبشن ال
h ,معناه الهاش او hash حيث يقوم باظهار هاشات (#) اثناء عملية التنصيب


الان المفترض ان يتم تنصيب البرنامج بدون اى مشاكل الا فى حالات مثل :


- وجود نسخة تطابق النسخة التى يتم تنصيبها مما يؤدى الى ظهرو خطأ عدم التوافق او conflicts , ولكى تجبر عملية التنصيب على الاكتمال واهمال هذا الخطأ فانك ستحتاج الى استخدام اوبشن اخر وهو --force ,لكى يصبح الآمر كالتالى :

كود:
rpm –Uvh --force http://www.domain.com/flvtool2-1.0.6-1.el5.rf.noarch.rpm

- احتياج البرنامج الى برنامج أخر يسمى
dependency ,وهو برنامج يعتمد عليه برنامج أخر (فى مثالنا هو flvtool2 ) بشكل اساسى فى عمله, لذلك لا يتم تنصيبه الا بعد ان يكون ال dependency موجود ومثبط على النظام, ولكن لتجبر عملية التنصيب على الاستكمال واهمال عدم وجود ال dependency فاننا سنحتاج الى اوبشن --nodeps ,لكى يصبح الآمر بالشكل التالى :

كود:
rpm –Uvh --nodeps http://www.domain.com/flvtool2-1.0.6-1.el5.rf.noarch.rpm
6) كيف يتم معالجة او تنصيب برامج ال dependencies ؟؟

- المشكلة الآولى التى تواجها عند تنصيب اى باكج (ذات الامتداد rpm ) تكمن فى احتياج الباكج لآكثر من برنامج dependency والتى لا توجد عندما يتم تنصيب برنامج فى صيغة المصدر او source ذات الامتداد .tar.gz او غيرها من امتدادات اخرى

- لحل مشكلة ال
dependencies فانه يوجد حلين لا ثالث لهما :


الحل الآول , هو ان يتم تنصيب كل dependency يدويا ,وهو امر شاق وياخذ وقت طويل وذلك لآن كل dependency قد تعتمد على برامج او dependencies اخرى

الحل الثانى ,هو اضافة مسار الموقع يسمى
repository الى برنامج ال yum واستخدام برنامج ال yum فى تنصيب الباكج حيث بعد اضافة ال repository اليها فان برنامج ال yum سيقوم بتنصيب الباكج وايضا سيقوم بتنصيب كل ما يحتاجه الباكج من dependencies بشكل اوتوماتيكيا ,وبالتالى سيوفر وقت وجهد ولهذا فانه أفضل حل لمشكلة ال dependencies



كيف يتم حل مشكلة ال
dependencies باستخدام ال repository فى برنامج yum ؟؟؟

- لاضافة مسار ال reposritory الخاص بموقع http://rpm.pbone.net/ الى برنامج ال yum سنحتاج الى :

1) ايجاد ال repository ,وهذا نستطيع الحصول عليه من الموقع من خلال اختيار
YUM REPOمن قائمة الموقع على اليسار ,وبعد الضغط عليها ستدخل الى صفحة تقوم بتعبئة النموذج لكى تسجل بالموقع ,والنموذج كالتالى :




- بعد اتباع الخطوات من 1 الى 4 نضغط على زر register لكى يتم ارسال رسالة التفعيل الى حسابك البريدى الذى قمت بادخالة, حيث ستجد الرسالة باسم PBONE email validation ,بعد الدخول الى الرسالة ستجد رابط بعد الضغط عليه ستجد الرسالة التالية :

كود:
   You have successfully confirmed your account. Enter your username and your password to log in.
Now you have 14-day free trial access to PBONE yum repository.
After logon click on Yum Conf to receive yum configuration
معنى الرسالة هو الاتى, انه قد تم تأكيد حسابكم وانه بامكانك الدخول الى الموقع باستخدام اسم المستخدم وكلمة المرور, وان مسار ال repository تستطيع انزاله من خلال الضغط على كلمة Yum Conf التى ستظهر لك بعد تسجيل الدخول فى نفس الصفحة ,وايضا مسار ال repository يمكن استخدامه لمدة 14 يوم فقط كفترة تجريبية

- بعد الضغط على كلمة yum conf ستذهب الى صفحة من خلالها يتم اعداد وضبط مسار ال repository وذلك بتحديد نقطتين فقط :

الآولى ,هى نوع او اصدار البروسيسور على السيرفر الذى سيتم اضافة مسار ال
repository الى برنامج ال Yum عليه


الثانية ,هى اسم نسخة نظام التشغيل الخاصة بالسيرفر

فمثلا ,البروسيسور الخاص بى هو I386 واسم نسخة نظام التشغيل هو CentOS واصدارها 5 ,اذا اختيارى سيكون كالتالى :





بعد ذلك سنقوم بالضغط على كلمة generate ,وبعدها سيتم توليد مسار ال repository المتوافق مع السيرفر ويكون كالتالى :




الآن لكى نقوم باضافة مسار ال repository الى برنامج ال yum سنقوم باتباع الآتى ولكن بالترتيب :

1) نضيف مسار ال repository الى برنامج ال Yum وذلك بفتح كونفيج البرنامج واضافة المسار ,باستخدام التالى :
كود:
vi /etc/yum.conf
الان تم فتح كونفيج برنامج ال yum ,نضغط shift + g لكى نذهب الى أخر سطر فى الكونفيج, ونضغط Insert لكى نبدأ فى التعديل ونضغط end لكى نذهب الى نهاية أخر سطر ,ثم نضغط enter حتى نكون فى سطر جديد ,نذهب الى مسار ال repository فى الموقع وننسخه الى ملف نصى ونعدل عليه باضافة كلمة مرور الحساب ,بعد ذلك نؤشر على جميع سطور المسار ونضغط ctrl + c لكى يتم نسخها ,الآن نذهب الى كونفيج ال yum فى أخر سطر ونضغط كليك يمين بداخل الشيل حتى يتم لصق سطور مسار ال repository وهى :

كود:
   [55i386]
name=PBONE CentOS 5 i386
baseurl=http://yum.pbone.net/55/i386/
gpgcheck=0
proxy=http://proxy.pbone.net:3127/
proxy_username=account-name
proxy_password=account-password


ثم بعد ذلك نضغط على زر
Esc ثم نكتب :wq ثم نضغط Enter, لكى نقوم بحفظ ما تمت اضافته الى كونفيج برنامج ال yum


2) نستخدم برنامج ال yum فى تنصيب الباكج المطلوبة وذلك باستخدام الآمر التالى
كود:
yum –y install flvtool2
اوبشن ال y ,مهم جدا لآن معناه انك موافق yes على كل ما سيقوم برنامج ال yum بتنزيله من dependencies من اجل الانتهاء من تنصيب الباكج المطلوبة


بعض الآوبشنز المهمة لبرنامج ال rpm ,

- اوبشن ال i ,يستخدم فى التنصيب install ,مثال :
كود:
rpm –ivh packagename.version.release.architecture.rpm
- اوبشن ال e ,يستخدم فى ازالة erase باكج من على نظام التشغيل ,مثال :
كود:
rpm –e packagename
- اذا كان هناك باكج واحدة مثبتة باكثر من اصدار بالخطأ وأدت الى حدوث مشكلة عدم توافق conflicts , وتريد ان يتم ازالة الباكج بجميع اصداراتها, تستخدم اوبشن ال --allmatches ,مثال :

كود:
rpm –e --allmatches packagename
- اوبشن ال q ,يستخدم فى الاستعلام query عن باكج, ومعرفة اذا كانت موجودة على النظام ام لا ,مثال :
كود:
rpm –q packagename
- لعرض جميع الباكج الموجودة او المثبتة على النظام يتم استخدام الآمر التالى :
كود:
rpm –qa
وبامكاننا عرض الناتج صفحة صفحة باستخدام الآمر التالى :
كود:
rpm –qa | more
- للبحث عن باكج معين ,نستخدم الآمر التالى :
كود:
rpm –qa | grep packagename
تم بفضل الله العلى العظيم


أتمنى الاستفادة من جميع اخوتى المسلمين, وارجو معذرتى ان قد أطالت عليكم او تم الاغفال عن نقطة او التقصير فى الشرح


هذا الشرح خاص بى وليس منقولا ,لذلك يرجى ممن يقوم بنقله ان يذكر اسم صاحب الموضوع وهو Human.bieng@hotmail.com


لا تنسونى من دعائكم وتقبلوا وافر تقديرى واحترامى وترقبوا المزيد بامر الله
والسلام عليكم ورحمة الله وبركاته

خاص بشركة الرحمة للاستضافة www.ALR4H.com
للعمل وليس للدردشة او التعارف human.bieng@hotmail.com