دليل التعبئة أوبونتو

كابل بيانات

التغليف مع Debhelper


[مهم]

المتطلبات: المتطلبات من قسم يسمى "تغليف من الصفر" بالإضافة إلى debhelper و dh-make

بصفتك جهاز ربط ، نادرًا ما ستقوم بإنشاء حزم من البداية كما فعلنا في القسم السابق. كما يمكنك أن تتخيل ، العديد من المهام والمعلومات في ملف القواعد ، على سبيل المثال ، شائعة في الحزم. لجعل التعبئة أسهل وأكثر كفاءة ، يمكنك استخدام debhelper للمساعدة في هذه المهام. Debhelper هو مجموعة من البرامج النصية Perl (مسبوقة بـ dh_ ) تعمل على أتمتة عملية إنشاء الحزم. مع هذه النصوص ، يصبح بناء حزمة دبيان أمرًا بسيطًا للغاية.

في هذا المثال ، سنبني حزمة GNU Hello مرة أخرى ، ولكن هذه المرة سنقوم بمقارنة عملنا مع حزمة Ubuntu hello-debhelper . مرة أخرى ، قم بإنشاء دليل حيث ستعمل:

mkdir ~ / hello-debhelper cd ~ / hello-debhelper wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir ubuntu cd ubuntu

ثم ، احصل على حزمة مصدر أوبونتو:

apt-get source hello-debhelper cd ..

مثل المثال السابق ، فإن أول شيء يتعين علينا القيام به هو فك الأكياس الأصلية (المنبع).

tar -xzvf hello-2.1.1.tar.gz

بدلاً من نسخ tarball إلى الأعلى hello_2.1.1.orig.tar.gz كما فعلنا في المثال السابق ، سنقوم dh_make بعمل العمل لنا. الشيء الوحيد الذي عليك القيام به هو إعادة تسمية المجلد المصدر بحيث يكون في شكل - حيث يكون packagename صغيرًا. في هذه الحالة ، ينتج فقط عدم انتظام التعمية دليل مصدر مسمى بشكل صحيح حتى نتمكن من الانتقال إليه:

مؤتمر نزع السلاح مرحبا -1.2.1

لإنشاء "debianization" الأولي للمصدر ، سنستخدم dh_make .

dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz

عندها سيطلب منك dh_make سلسلة من الأسئلة:

نوع الحزمة: ثنائي واحد ، ثنائي متعدد ، مكتبة ، وحدة النواة أو cdbs؟ [s / m / l / k / b] s
اسم جهة الصيانة: Captain Packager عنوان البريد الإلكتروني: packager@coolness.com التاريخ: Thu، 6 Apr 2006 10:07:19 -0700 اسم الحزمة: hello الإصدار: 2.1.1 الترخيص: blank نوع الحزمة: Single Hit to تأكيد: أدخل


[الحذر]

فقط قم بتشغيل dh_make -e مرة واحدة. إذا قمت بتشغيله مرة أخرى بعد القيام بذلك في المرة الأولى ، فإنه لن يعمل بشكل صحيح. إذا كنت ترغب في تغييرها أو ارتكبت خطأ ، فقم بإزالة الدليل المصدر وقم بإعادة تنشيط tarball tar المنبع من جديد. ثم يمكنك الانتقال إلى الدليل المصدر والمحاولة مرة أخرى.

تشغيل dh_make -e يفعل شيئين:

برنامج Hello ليس معقدًا للغاية ، وكما رأينا في القسم المسمى "Packaging From Scratch" ، لا يتطلب التغليف أكثر من الملفات الأساسية. لذلك ، دعونا نزيل ملفات .ex :

cd debian rm * .ex * .EX

مرحبا ، أنت أيضا لن تفعل ذلك

* الترخيص

* دليل اوبونتو دليل التغليف

تحتاج إلى README.Debian (ملف README لمشكلات Debian المحددة ، وليس README للبرنامج) ، dirs (المستخدمة من قبل dh_installdirs لإنشاء الأدلة المطلوبة) ، والمستندات (المستخدمة من قبل dh_installdocs لتثبيت وثائق البرنامج) ، أو المعلومات (المستخدمة من قبل dh_installinfo لتثبيت المعلومات الملفات) في دليل debian . لمزيد من المعلومات حول هذه الملفات ، راجع القسم المسمى "dh_make example files".

في هذه المرحلة ، يجب أن يكون لديك ملفات سجل التغيير والامتثال والتحكم وحقوق الطبع والنشر فقط في دليل debian . من المقطع المسمى "Packaging From Scratch" ، الملف الوحيد الجديد هو توافق ، وهو ملف يحتوي على إصدار debhelper (في هذه الحالة 4) الذي يتم استخدامه.

ستحتاج إلى ضبط التغيير قليلاً في هذه الحالة ليعكس أن هذه الحزمة تسمى hello-debhelper بدلاً من مجرد مرحبًا :

hello-debhelper (2.1.1-1) dapper؛ إلحاح = منخفض * الإصدار الأولي - كابتن الرابط الخميس ، 6 أبريل 2006 10:07:19 -0700

باستخدام debhelper ، فإن الأشياء الوحيدة التي نحتاج إلى تغييرها في التحكم هي الاسم (استبدال مرحبًا hello-debhelper ) وإضافة debhelper (> = 4.0.0) إلى حقل Build-Depends لحزمة المصدر. تبدو حزمة أوبونتو لـ hello-debhelper مثل:

يمكننا نسخ ملف حقوق الطبع والنشر ونصوص بريدينت و prerm من حزمة أوبونتو هيل -ديسيليبر ، لأنهم لم يتغيروا منذ القسم المسمى "تغليف من سكراتش". سننسخ أيضًا ملف القواعد حتى يمكننا فحصه.

cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright. cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst. cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm. cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules.

الملف الأخير الذي نحتاج إلى النظر إليه هو القواعد ، حيث يمكن رؤية قوة مخطوطات debhelper . إصدار debhelper من القواعد أصغر إلى حد ما (54 سطر بدلاً من 72 سطر في الإصدار من المقطع المسمى "القواعد").

تبدو نسخة debhelper مثل:

#! / usr / bin / make -f package = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq (، $ (findstring noopt، $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 endif #export DH_VERBOSE = 1 clean : dh_testdir dh_clean rm -f build - $ (MAKE) -i distclean install: build dh_clean dh_installdirs $ (MAKE) prefix = $ (CURDIR) / debian / $ (package) / usr \ mandir = $ (CURDIR) / debian / $ (الحزمة) / usr / share / man \ infodir = $ (CURDIR) / debian / $ (package) / usr / share / info \ install build: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binary-indep: install # لا توجد ملفات مستقلة عن البنية يتم تحميلها # تم إنشاؤها بواسطة هذه الحزمة. إذا كان هناك أي أنها سوف تكون # صنعت هنا. binary-arch: install dh_testdir -a dh_testroot -a dh_installdocs -a NEWS dh_installchangelogs -a ChangeLog dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a binary: binary-indep binary- قوس. PHONY: ثنائي ثنائي ثنائي الثقب الثنائي التنقيط indep نظيفة

لاحظ أن المهام مثل الاختبار إذا كنت في الدليل الصحيح ( dh_testdir ) ، مع التأكد من أنك تقوم ببناء الحزمة مع امتيازات الجذر ( dh_testroot ) ، وتثبيت الوثائق ( dh_installdocs و dh_installchangelogs ) ، والتنظيف بعد الإنشاء ( dh_clean ) يتم التعامل معها تلقائيًا . العديد من الحزم أكثر تعقيداً بكثير من hello تحتوي على ملفات قواعد لا أكبر لأن البرامج النصية debhelper معالجة معظم المهام. للحصول على قائمة كاملة بنصوص debhelper ، يرجى الاطلاع على القسم المسمى "قائمة مخطوطات debhelper ". هم أيضا موثقة توثيقا جيدا في صفحات الرجل الخاصة بهم. إنه تمرين مفيد لقراءة الصفحة man (مكتوبة بشكل جيد و ليست طويلة) لكل نص برمجي مساعد مستخدم في ملف القواعد أعلاه.