docs:إنشاء_حزم_rpm

إنشاء حزم RPM

مقدمة

ما هي الحزم

الحزم الجاهزة هي ملفات مضغوطة قد تحتوي على برامج أو وثائق أو حتى مجرد إعدادت يتم تثبيتها بشكل مؤتمت automated دون إلقاء أي أعباء على كاهل المستخدم وتلقيها على كاهل برنامج مدير الحزم. مدير الحزم هو برنامج يعمل على التأكد من سلامة الحزمة وتحقق كل الشروط التي تلزم لتثبيتها ثم فك الضغط ووضع الملفات في مكانها المناسب والقيام بكل الإعدادات المطلوبة دون الإضرار بالبرامج الأخرى. كما أن مدير الحزم يمكنه إزالة الحزم المثبتة أو ترقيتها بطريقة آمنة ونظيفة.

كما أن الحزم تزيل الكثير من الأعباء عن مطور البرنامج.

تتألف أي حزمة من الحمل Payload (وهو الأرشيف المضغوط والمعلومات المرافقة) والنصوص التنفيذية المصغرة المسؤولة عن التثبيت scriptlets

ما هي حزم RPM

حزم RPM أي مدير حزم ريدهات Redhat Package Manager وحديثا أصبح RPM Package Manager (أي أن الحرف الأول R جاء من RPM وليس Redhat كما في غنو وغيرها من الاختصارات المتداخلة) وهو مدير حزم حر مفتوح المصدر أطلقته ريدهات ويستعمل في كثير من التوزيعات حتى التي تقف وراءها شركات أخرى (مثل ماندريفا Mandriva وسوزة Suse وغيرهما) بل وتستخدم في أنظمة غير مبنية على لينكس مثل Novell Netware (منذ الاصدار 6.5 SP3) و نظام AIX (منذ الإصدار 4) .

وقد اختارت مؤسسة لينكس LinuxFoundation.org حزم RPM لتكون الحزم المعتمدة في معيار لينكس الأساس Linux Standard Base انظر الباب 22 من LSB

تحضير المستلزمات

يجب أن يكون لديك بعض الحزم مثبتة بشكل مسبق حتى تتمكن من بناء حزم RPM، للحصول عليها اكتب الأمر بصلاحيات الجذر:

yum install rpm-build

وحيث أن أغلب الحزم ستحتاج إلى مصنف لغة سي فإنك ستحتاج إلى تثبيت أدوات التطوير (مثل gcc) ويمكن تثبيتها بالامر

yum groupinstall "Development Tools"

يجب أن تتم عملية بناء الحزم دون صلاحيات حتى لا تؤثر هذه العملية على النظام (مثلا إذا كان هناك خطأ إملائي في ملف محددات البناء) وحتى نتمكن من القيام بذلك يجب أن نخصص مجلد نقوم بعملية البناء بداخله ويكون ذلك بكتابة الأمر التالي كمستخدم عادي دون صلاحيات

mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

بناء حزمة 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://fedoraproject.org/wiki/Packaging/FontsSpecTemplate والاستفادة من القاولب الموجودة في هذا الأرشيف http://nim.fedorapeople.org/fontpackages/fontpackages-1.10.tar.bz2

فيدورا تنصح مصممي الخطوط وضعها بأرشيف كهذا القالب الذي عملته ديبيان http://svn.debian.org/wsvn/pkg-fonts/foo-open-font-sources/

مراجع

نقاش

djilani sm, 2008/11/24 17:24

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

إن كان يفيد الموضوع إضافة فقرة تتحدث عن إنشاء حزمة RPM من حزمة deb. لأنه تتوفر أحيانا حزم deb وقد لا تجد المقابل لها في RPM.

ودمت بود.

exchangeboss, 2008/12/01 18:49

السلام عليكم ارجو اكمال المقالة

red mercury, 2008/12/16 10:06

كيف أبني الحزمة لمعالجي فقط؟

مؤيد السعدي, 2008/12/17 23:03

نعم الحزم تبنى لمعالجك فقط

محمد , 2009/04/18 09:30

السلام عليكم ممكن سؤال توجد بعض الحزم بصسغة المصدر ويلزم تثبتها عملية كومبايل وانستول هل استطيع ان احولل الحزمة المصدرية الى حزمة تنفيذية ؟ مثلا التحويل من x.sh الى x.rpm؟ هل هذه العملية يجب ان تتم بعد عمل كومبايل للبرنامج على جهازي ثم عمل كومبايل عكسي؟ وهل تعمل على جميع الاجهزة؟

شكرا

Lukhanyo, 2012/06/06 04:46

Thanks for shairng. Your post is a useful contribution.

Malak, 2012/06/06 04:59

That addresses several of my concerns acutally.

Mine, 2012/07/30 01:49

That iinhsgt solves the problem. Thanks!

xylgekrm, 2012/07/30 17:59

h1aUQ5 <a href=“http://losxcrjmtctj.com/”>losxcrjmtctj</a>

Lucinda, 2012/10/08 00:39

A spimle and intelligent point, well made. Thanks!

norllfv, 2012/10/09 05:22

QnFTU4 , [url=http://etwaeftlkozz.com/]etwaeftlkozz[/url], [link=http://ysxlszczffwj.com/]ysxlszczffwj[/link], http://rizciebhlhdl.com/

Nicki, 2013/01/17 23:28

This is just the perfect asnewr for all forum members

ابراهيم, 2016/01/21 21:32
Gf
أدخل تعليقك:
 
آخر تعديل:: 23 نيسان 2015 الساعة 00:19 (تحرير خارجي)