docs:إنشاء_حزم_rpm
اختلافات
عرض الاختلافات بين النسخة المختارة و النسخة الحالية من الصفحة.
جانبي المراجعة السابقةالمراجعة السابقة | |||
docs:إنشاء_حزم_rpm [2010/02/23 23:40] – alsadi | docs:إنشاء_حزم_rpm [2015/04/23 03:19] (حالي) – تحرير خارجي 127.0.0.1 | ||
---|---|---|---|
سطر 1: | سطر 1: | ||
+ | {{tag> | ||
+ | ====== إنشاء حزم RPM ====== | ||
+ | ===== مقدمة ===== | ||
+ | ==== ما هي الحزم ==== | ||
+ | |||
+ | الحزم الجاهزة هي ملفات مضغوطة قد تحتوي على برامج أو وثائق أو حتى مجرد إعدادت يتم تثبيتها بشكل مؤتمت automated دون إلقاء أي أعباء على كاهل المستخدم وتلقيها على كاهل برنامج مدير الحزم. مدير الحزم هو برنامج يعمل على التأكد من سلامة الحزمة وتحقق كل الشروط التي تلزم لتثبيتها ثم فك الضغط ووضع الملفات في مكانها المناسب والقيام بكل الإعدادات المطلوبة دون الإضرار بالبرامج الأخرى. كما أن مدير الحزم يمكنه إزالة الحزم المثبتة أو ترقيتها بطريقة آمنة ونظيفة. | ||
+ | |||
+ | كما أن الحزم تزيل الكثير من الأعباء عن مطور البرنامج. | ||
+ | |||
+ | تتألف أي حزمة من الحمل Payload (وهو الأرشيف المضغوط والمعلومات المرافقة) والنصوص التنفيذية المصغرة المسؤولة عن التثبيت scriptlets | ||
+ | |||
+ | ==== ما هي حزم RPM ==== | ||
+ | حزم RPM أي مدير حزم ريدهات Redhat Package Manager وحديثا أصبح RPM Package Manager (أي أن الحرف الأول R جاء من RPM وليس Redhat كما في غنو وغيرها من الاختصارات المتداخلة) وهو مدير حزم حر مفتوح المصدر أطلقته ريدهات ويستعمل في كثير من التوزيعات حتى التي تقف وراءها شركات أخرى (مثل ماندريفا Mandriva وسوزة Suse وغيرهما) | ||
+ | بل وتستخدم في أنظمة غير مبنية على لينكس | ||
+ | مثل Novell Netware (منذ الاصدار 6.5 SP3) و نظام AIX (منذ الإصدار 4) . | ||
+ | |||
+ | وقد اختارت | ||
+ | |||
+ | ===== تحضير المستلزمات ===== | ||
+ | يجب أن يكون لديك بعض الحزم مثبتة بشكل مسبق حتى تتمكن من بناء حزم RPM، للحصول عليها اكتب الأمر **بصلاحيات الجذر**: | ||
+ | |||
+ | yum install rpm-build | ||
+ | |||
+ | وحيث أن أغلب الحزم ستحتاج إلى مصنف لغة سي فإنك ستحتاج إلى تثبيت أدوات التطوير (مثل gcc) ويمكن تثبيتها بالامر | ||
+ | |||
+ | yum groupinstall " | ||
+ | |||
+ | يجب أن تتم عملية بناء الحزم **دون** صلاحيات حتى لا تؤثر هذه العملية على النظام (مثلا إذا كان هناك خطأ إملائي في ملف محددات البناء) وحتى نتمكن من القيام بذلك يجب أن نخصص مجلد نقوم بعملية البناء بداخله ويكون ذلك بكتابة الأمر التالي كمستخدم عادي **دون** صلاحيات | ||
+ | |||
+ | mkdir -p ~/ | ||
+ | echo ' | ||
+ | |||
+ | ===== بناء حزمة RPM مصدرية معدة مسبقا SRPM ===== | ||
+ | الحزم المصدرية التي تنتهي بالامتداد .src.rpm وتسمى أحيانا SRPMs جاهزة كي يتم إعادة بناؤها بأمر واحد وهو | ||
+ | |||
+ | rpmbuild --rebuild FILE.src.rpm | ||
+ | |||
+ | الحزم المصدرية SRPMs تحتوي على الملفات المصدرية (والتي غالبا ما تكون على شكل أرشيف tar.gz أو tar.bz2) إلى جانب الرقاع patches إن وجدت وملف المحددات SPEC file وهو الذي يحدد خطوات البناء. | ||
+ | |||
+ | كذلك يمكن بناء الحزمة من ملف المحددات إذا كانت الملفات المصدرية موجودة في المكان المخصص لها وهو مجلد المصادر SOURCES والذي هو في مثالنا داخل rpmbuild داخل البيت ويمكن إرسالها هناك بشكل آلي بتثبيت الحزمة المصدرية كأي حزمة عادية بالأمر | ||
+ | rpm -i FILE.src.rpm | ||
+ | |||
+ | ويجب تنفيذ الأمر السابق كمستخدم عادي **دون صلاحيات** عندها يتم نقل الملفات المصدرية الموجودة بداخل الحزمة | ||
+ | |||
+ | ويمكنك نقل المفات المصدرية هناك بشكل يدوي عبر مدير الملفات أو عبر أمر النسخ cp ...إلخ وبعد ذلك يتم بناء الحزمة بالأمر | ||
+ | rpmbuild -ba FILE.spec | ||
+ | |||
+ | ملف المحددات FILE.spec تجده داخل المجلد SPECS داخل مجلد البناء وهو في مثالنا rpmbuild داخل البيت | ||
+ | |||
+ | ===== بناء الأرشيفات المصدرية tarballs المعدة مسبقا ===== | ||
+ | إذا كان الأرشيف المصدري المضغوط (بطريقة .tar.gz أو .tar.bz2) يحتوي على ملف المحددات SPEC بنفس اسم الأرشيف فإنه يمكن بناؤه بأمر واحد وهو | ||
+ | rpmbuild -ta FILE.tar.gz | ||
+ | |||
+ | ===== بناء حزمة RPM من الصفر ===== | ||
+ | ===== حزم خاصة ===== | ||
+ | ==== حزم الخطوط ==== | ||
+ | انظر هذا الدرس من فيدورا [[http:// | ||
+ | |||
+ | كذلك استعمل هذا القالب http:// | ||
+ | والاستفادة من القاولب الموجودة في هذا الأرشيف http:// | ||
+ | |||
+ | فيدورا [[http:// | ||
+ | |||
+ | |||
+ | ===== مراجع ===== | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * https:// | ||
+ | * http:// | ||
+ | * http:// | ||