جدول المحتويات
إنشاء حزم 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/