راهنمای بسته بندی اوبونتو

مستندات

بسته بندی با Debhelper


[مهم]

مورد نیاز: الزامات بخش "بسته بندی از ابتدا" به همراه debhelper و dh-make

همانطور که در قسمت قبلی انجام دادیم، به عنوان یک بسته بندی کننده، به ندرت بسته ها را از ابتدا ایجاد می کنید. همانطور که می توانید تصور کنید، به عنوان مثال، بسیاری از وظایف و اطلاعات در پرونده های پرونده، برای بسته ها رایج هستند. برای ساختن بسته بندی ساده تر و کارآمدتر، میتوانید از debhelper برای کمک به این کارها استفاده کنید. Debhelper مجموعه ای از اسکریپت های پرل (با پیشوند dh_ ) است که به طور خودکار فرآیند ساخت بسته را انجام می دهد. با استفاده از این اسکریپت ها، ایجاد یک بسته دبیان بسیار ساده می شود.

در این مثال، ما دوباره بسته GNU Hello را ایجاد خواهیم کرد، اما این بار ما کار خود را با پلاگین 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 ..

همانند مثال قبلی، اولین چیزی که باید انجام دهیم این است که توزیع اصلی (upstream) توزیع شود.

tar -xzvf hello-2.1.1.tar.gz

به جای کپی کردن tarball upstream به hello_2.1.1.orig.tar.gz همانطور که در مثال قبلی انجام دادیم، ما اجازه می دهیم dh_make کار را برای ما انجام دهد. تنها کاری که باید انجام دهید این است که پوشه منبع را تغییر نام دهید تا در فرم - قرار گیرد که در آن بسته بندی کوچک است. در این مورد، فقط untarring tarball یک دایرکتوری منبع درست ایجاد شده را ایجاد می کند تا ما بتوانیم به آن حرکت کنیم:

cd hello-2.1.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، Apr 6 2006 10:07:19 -0700 نام بسته: hello نسخه: 2.1.1 مجوز: blank نوع بسته: Single Hit to تایید: وارد شوید


[احتیاط]

فقط یک بار dh_make را اجرا کنید اگر پس از اولین بار آن را اجرا کنید، این کار درست نخواهد بود. اگر می خواهید آن را تغییر دهید یا اشتباه کرد، دایرکتوری منبع را حذف کرده و دوباره از میانبر بالادست خارج شوید. سپس می توانید به دایرکتوری مهاجم بروید و دوباره امتحان کنید.

در حال اجرا dh_make -e دو چیز را انجام می دهد:

برنامه Hello خیلی پیچیده نیست و همانطور که در قسمت "Packaging From Scratch" دیده می شود بسته بندی آن نیازی به بیش از فایل های اساسی ندارد. بنابراین، اجازه دهید فایلهای .ex را حذف کنیم:

cd debian rm * .ex * .EX

برای سلام ، شما هم نخواهید بود

* مجوز

* راهنما فهرست بسته بندی اوبونتو

نیاز به README.Debian (فایل README برای مسائل مربوط به دبیان خاص، نه README برنامه)، dirs (استفاده شده توسط dh_installdirs برای ایجاد دایرکتوری های مورد نیاز)، docs (استفاده شده توسط dh_installdocs برای نصب مستندات برنامه)، یا اطلاعات (توسط dh_installinfo برای نصب اطلاعات استفاده می شود فایل) به دایرکتوری debian . برای اطلاعات بیشتر در مورد این فایل ها، به بخش "dh_make example files" مراجعه کنید.

در این مرحله، شما باید تنها تغییرات ، قرارداد ، کنترل ، حق تکثیر و قوانین فایل ها در دایرکتوری debian داشته باشید . از بخش "Packaging From Scratch" نام فایل جدیدی است که compat است که یک فایل است که حاوی نسخه debhelper است (در این مورد 4) که مورد استفاده قرار می گیرد.

شما باید کمی تغییرات را در این مورد تنظیم کنید تا منعکس شود که این بسته به جای hello به hello-debhelper نامگذاری شده است:

hello-debhelper (2.1.1-1) dapper؛ فوری = کم * انتشار اولیه - Captain Packager Thu، Apr 6 2006 10:07:19 -0700

با استفاده از debhelper ، تنها چیزهایی که ما باید در کنترل تغییر نام دهیم نام (جایگزین سلام برای hello-debhelper ) و اضافه کردن debhelper (> = 4.0.0) به فیلد Build-Depends برای بسته منبع است. بسته اوبونتو برای hello-debhelper به نظر می رسد:

ما می توانیم فایل کپی رایت و اسکریپت های postinst و prerm را از بسته ی hello-debhelper اوبونتو کپی کنیم چون آنها از بخش "بسته بندی از ابتدا" تغییر نکرده اند. ما همچنین فایل قوانین را کپی می کنیم تا بتوانیم آن را بررسی کنیم.

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 تمیز : 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 / $ (package) / 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: نصب 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: دوتایی دوتایی-قوس باینری- مستقل checkroot تمیز

توجه داشته باشید که وظایف مانند تست اگر شما در دایرکتوری راست ( dh_testdir ) هستید، مطمئن شوید که بسته را با امتیازات ریشه ( dh_testroot )، نصب مستندات ( dh_installdocs و dh_installchangelogs ) و تمیز کردن پس از ساخت ( dh_clean ) به صورت خودکار پردازش می کنید . بسیاری از بسته ها بسیار پیچیده تر از سلام هستند قوانین فایل ها بزرگتر نیستند زیرا اسکریپت های debhelper بیشترین کار را انجام می دهند. برای لیست کامل اسکریپتهای debhelper ، لطفا بخش «لیست اسکریپتهای debhelper » را ببینید. آنها نیز در صفحات مربوطه خود به خوبی مستند شده اند. این یک تمرین مفید برای خواندن صفحه مرد (آنها به خوبی نوشته شده و طولانی نیست) برای هر اسکریپت کمکی استفاده شده در فایل قوانین بالا.