Skip to main content

Ръководство за опаковане на Ubuntu - Опаковка с Debhelper

Week 9, continued (Април 2025)

Week 9, continued (Април 2025)

Съдържание:

Anonim

Опаковка с Debhelper

Важно

Изисквания: Изискванията от секцията "Опаковка от нулата" плюс debhelper и dh-make

Като опаковка, рядко ще създавате пакети от нулата, както направихме в предходната секция. Както можете да си представите, много от задачите и информацията в правилник файла, например, са общи за пакетите. За да направите опаковката по-лесна и по-ефективна, можете да я използвате debhelper за да помогне с тези задачи. Debhelper е набор от скриптове на Perl (с префикс) dh_), които автоматизират процеса на изграждане на пакети. С тези скриптове, изграждането на Debian пакет става съвсем проста.

В този пример отново ще изградим пакета GNU Hello, но този път ще сравняваме работата си с Ubuntu здравей-debhelper пакет. Отново създайте директория, в която ще работите:

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

След това вземете пакета за Ubuntu източник:

apt-get източник hello-debhelper cd ..

Подобно на предишния пример, първото нещо, което трябва да направите, е да разопаковате оригиналния (нагоре) тарбал.

tar -xzvf hello-2.1.1.tar.gz

Вместо да копирате лентата нагоре по веригата hello_2.1.1.orig.tar.gz както направихме в предишния пример, ще позволим dh_make вършете работата за нас. Единственото нещо, което трябва да направите, е да преименувате папката на източника, така че да е под формата на - където името на пакета е малка. В този случай, просто неработещ 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 / к / Ь с Име на пакета: Captain Packager Имейл адрес: [email protected] Дата: Thu, 6 Apr 2006 10:07:19 -0700 Име на пакета: hello Версия: 2.1.1 Лиценз: празна Тип опаковка: Single Hit за да потвърдите: Въведете

Внимание

Само бягай dh_make -e веднъж. Ако го стартирате отново, след като го направите за първи път, той няма да работи правилно. Ако искате да го промените или да направите грешка, премахнете директорията на източника и го направете отново нагоре. След това можете да мигрирате в директорията на източника и да опитате отново.

Работещи dh_make -e правят две неща:

  • Създава hello_2.1.1.orig.tar.gz файл в основната директория,
  • Създава основните файлове, необходими в Debian / и много файлове с шаблони (.ex), които може да са необходими.

Най- Здравейте програмата не е много сложна и както видяхме в раздела "Опаковка от нулата", опаковането не изисква много повече от основните файлове. Ето защо нека да премахнем .ex файлове:

cd debian rm * .ex * .ex

За Здравейте, вие също няма да го направите

* Разрешително

* Индекс на указанията за опаковане на Ubuntu

трябва README.Debian (Файл README за конкретни проблеми с Debian, а не README на програмата), директории (използван от dh_installdirs да създадете необходимите директории), документи (използван от dh_installdocs да инсталирате програмна документация), или инфо (използван от dh_installinfo да инсталирате информационния файл) в Debian директория. За повече информация относно тези файлове вижте раздела, наречен "примерни файлове dh_make".

На този етап трябва само да имате с промени, COMPAT, контрол, Авторско право, и правилник файлове в Debian директория. От раздела, наречен "Packaging From Scratch", единственият нов файл е COMPAT, който е файл, който съдържа debhelper версия (в този случай 4), която се използва.

Ще трябва да настроите с променималко в този случай, за да отразим, че този пакет е наречен здравей-debhelper отколкото просто Здравейте:

hello-debhelper (2.1.1-1) dapper; неотложност = ниско * Първоначално освобождаване - капитан партьор Ср, 6 апр 2006 10:07:19 -0700

Като се използва debhelper, единствените неща, които трябва да променим контрол са името (заместващо Здравейте за здравей-debhelper) и добавяне debhelper (> = 4.0.0) към Зависимости при компилиране зависимости поле за пакета източник. Пакетът на Ubuntu за здравей-debhelper изглежда като:

Източник: hello-debhelper Раздел: devel Приоритет: extra Поддържан: Capitan Packer Стандарти-версия: 3.6.1 Build-Depends: debhelper (> = 4) Опаковка: hello-debhelper Архитектура: всяка Зависима: $ {shlibs: Depends} Конфликти: Здравей Осигурява: Здравей Заменя: Здравей Описание: добър пример Програмата GNU hello създава познат, приятелски поздрав. Тя позволява на непрограмиращите да използват класически инструмент за компютърни науки, който в противен случай би бил недостъпен за тях. , Сериозно обаче: това е пример за това как да направите пакет с Debian. Това е дебианската версия на програмата "hello world" на GNU Project (която сама по себе си е пример за проекта GNU). , Това е същото като пакета за здраве, с изключение на това, че използва debhelper, за да направи deb. Моля, вижте Debhelper за това, което е.

Можем да копираме Авторско право и файла postinst и prerm скриптове от Ubuntu здравей-debhelper тъй като те не са се променили от секцията, наречена "Packaging From Scratch". Също така ще копираме правилник файл, за да можем да го проверим.

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 пакет = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq (, $ (findingstring noopt, $ (DEB_BUILD_OPTIONS)) CFLAGS + = O2 endif #export DH_VERBOSE = : dh_testdir dh_clean rm -f изграждане - $ (MAKE) -i distclean install: изграждане dh_clean dh_installdirs $ (MAKE) префикс = $ (CURDIR) / debian / $ (пакет) / usr mandir = $ (пакет) / usr / share / man infodir = $ (CURDIR) / debian / $ (пакет) / usr / share / info install build: ./configure --prefix = / usr $ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binary-indep: install # Няма файлове, независими от архитектура, които да бъдат качени # генерирани от този пакет. Ако имаше такива, щяха да бъдат направени тук. binary-arch: инсталирате dh_testdir -a dh_testroot -a dh_installdocs -a НОВИНИ dh_installchangelogs -a ChangeLog dh_strip -a dh_compress -a dh_fixperms -dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -а двоичен: двоичен-indep двоичен- arch .PHONE: двоичен двоичен арх двоичен-indep чист checkroot

Забележете, че задачите като тестване, ако сте в правилната директория (dh_testdir), като се уверите, че изграждате пакета с правата на root (dh_testroot), инсталиране на документация (dh_installdocs и dh_installchangelogs) и почистване след построяването (dh_clean) се обработват автоматично. Много пакети много по-сложни от Здравейте имам правилник файлове не по - големи, защото debhelper скриптовете се справят с повечето задачи. За пълен списък с debhelper скриптове, моля, вижте раздела "Списък на debhelper скриптове ".Те също са добре документирани в съответните им мъж страници. Това е полезно упражнение за четене на страницата на човека (те са добре написани и не са продължителни) за всеки помощен скрипт, използван в горното правилник файл.