Debian

Как да създадем пакети за Debian

Как да създадем пакети за Debian

1. Предговор

Да отговаряш за машина означава да се грижиш както за хардуера, така и за софтуерните компоненти. Както се вижда във всекидневния живот като системен администратор, много по-добре е да инсталирате софтуер като софтуерен пакет, а не като куп изходни файлове. Това намалява разходите за правилно поддържане на системата.

Пакетите, които се предлагат от вашия предпочитан дистрибутор, се валидират и контролират от поддръжника на пакети. Той тества софтуера и гарантира, че той отговаря на другите софтуерни пакети, налични в дистрибуцията. Освен това пакетът е подписан с GPG ключ от поддържащия пакет. Това гарантира целостта на пакета и ви показва, че пакетът е от надежден източник.

Форматът на пакета зависи от вашата дистрибуция на Linux. Избраните формати са следните:

деб

Пакети, използвани в: Debian GNU / Linux, Ubuntu, Armbian, Linux Mint, Knoppix

об / мин

Пакети, използвани в: RedHat, Fedora, CentOS, OpenSuse

tgz и txz

Пакети, използвани в: Slackware

катран.xz

Пакети, използвани в: Arch Linux

Този документ обяснява как да изградите накратко пакет за Debian GNU / Linux. За подробна информация относно формата на пакета на Debian и инструментите за поддържане на Linux базирана на 'deb' система, може да разгледате книгата за управление на пакети на Debian [dpmb] За да създадете пакети за Debian GNU / Linux, тези документи са от съществено значение:

Пакетът, с който ще работим, се нарича „helloworld“ и има номер на версията 0.1. За демонстрационни цели той просто съдържа един-единствен Python скрипт, който извежда известното съобщение „Здравей, свят!”:

#!/ usr / bin / python print ("Здравей, свят!") 

2. Изисквания

2.1. GPG ключ

Като стъпка 1, нека вашият GPG ключ е на разположение. По-късно ключът ще е необходим за подписване на пакета. Имайте предвид, че неподписаните пакети са ненадеждни и не могат да бъдат част от вселената на Debian.

В случай, че все още нямате GPG ключ, създайте такъв. Можете да следвате трите стъпки по-долу. Първата команда генерира нов ключ, втората експортира новия ви ключ в отделен файл, а третата добавя ключа към вашия личен ключодържател.

$ gpg --gen-key $ gpg -a --output ~ /.gnupg / YOUR_NAME.gpg --export 'YOUR NAME' $ gpg --import ~ /.gnupg / YOUR_NAME.gpg 

По време на създаването се уверете, че даденото име _YOUR NAME_ е правилно. Често се използва комбинация от собствено и фамилно име. Това име трябва да бъде абсолютно същото в пакета, тогава, когато създавате файла 'control' на пакета Debian. За повече информация относно GPG погледнете наръчника за поверителност на GNU [gph].

2.2. Веригата на инструментите за опаковане

За да създадете пакет Debian с изходен код, на вашата система са необходими следните софтуерни пакети:

Като потребителски 'root' можете да ги инсталирате, като използвате следната команда:

# apt-get install изграждане на съществени autoconf automake autotools-dev dh-make debhelper devscripts fakeroot xutils lintian pbuilder 

2.3. Подгответе софтуера за пакетиране

Трябва да подготвим директория за изграждане на пакета. Създайте директория, за да подготвите средата, в която ще изградим пакета:

$ mkdir -p ~./ build / helloworld / 0.1 

Копирайте 'tar.gz 'компресиран архив в директорията:

$ cp helloworld-0.1.катран.gz ~./ build / helloworld / 0.1 

Променете в директорията и извлечете пакета:

$ cd ~./ build / helloworld / 0.1 ~ / build / helloworld / 0.1 $ tar -xzf helloworld-0.1.катран.gz 

Сега директорията съдържа както изходния код в отделна директория, така и компресирания архив:

~ / build / helloworld / 0.1 $ ls helloworld-0.1 helloworld-0.1.катран.gz 

3. Дебианизация

На този етап ще добавим файловете, които са специфични за пакет Debian. Ето защо тази стъпка е наречена _Debianization_ на софтуера. Това се прави в няколко единични стъпки.

3.1 Подгответе структурата на пакета

Променете в директорията, която съхранява целия изходен код на пакета. В нашия пример пакетът съдържа файла 'helloworld.py ', само:

~ $ cd build / helloworld / 0.1 / helloworld-0.1 ~ / build / helloworld / 0.1 / helloworld-0.1 $ ls helloworld.py 

Нека добавим файловете, които са специфични за пакет Debian. Инструментът "dh_make" влиза в игра. Превключвателят „-e“ използва дадения адрес като имейл адрес в полето „Maintainer“ на файла „debian / control“. Вместо изграждането на пакета използвайте вашия собствен имейл адрес. Не забравяйте да използвате същия имейл адрес, който съответства на вашия GPG ключ.

Ключът -f използва дадения файл като оригинален архив на източника и прескача копирането на текущото дърво на програмата в програма.ориг.

~ / build / helloworld / 0.1 / helloworld-0.1 $ dh_make -e [имейл защитен] -f… / helloworld-0.1.катран.gz 

В подканата ще бъдете помолени да изберете типа на пакета, който трябва да бъде създаден. За да изберете _ единичен двоичен_ тип 's'.

Тип на пакета: единичен двоичен, indep двоичен, множествен двоичен, библиотека, модул на ядрото, корекция на ядрото? [s / i / m / l / k / n] s Име на поддръжника: Frank Hofmann Email-адрес: [имейл защитен] Дата: Събота, 04 Ноември 2017 21:16:13 +0100 Име на пакета: helloworld Версия: 0.1 Лиценз: празен Тип пакет: Еднократно попадение  за потвърждение: В момента няма най-високо ниво Makefile. Това може да изисква допълнителна настройка. Свършен. Моля, редактирайте файловете в debian / поддиректорията сега. Също така трябва да проверите дали helloworld Makefiles се инсталира в $ DESTDIR, а не в / . 

Това води до директория, наречена 'debian':

~ / build / helloworld / 0.1 / helloworld-0.1 $ ls debian helloworld.py 

Тази директория съдържа всички специфични за пакета файлове.

3.2. Регулирайте контролния файл

Файлът 'debian / control' запазва зависимостите, които са необходими за изграждането на пакета. Използване на командата 'dpkg-depcheck -d ./ configure 'получавате списък с всички необходими пакети. В нашия случай не е необходим допълнителен пакет, защото Python е интерпретиран език.

След това трябва да редактираме файла 'debian / control' и да добавим специфични за пакета стойности. За нашия пример изглежда по следния начин:

Източник: helloworld Раздел: python Приоритет: по избор Поддръжка: Frank Hofmann <[email protected]> Изграждане-зависи: debhelper (> = 9) Стандарти-версия: 3.9.5 Начална страница: http: // www.efho.de / # Vcs-Git: git: // anonscm.debian.org / collab-maint / helloworld.git # Vcs-Browser: http: // anonscm.debian.организация /?p = collab-maint / helloworld.git; a = резюме Пакет: helloworld Архитектура: всеки Зависи: $ shlibs: Зависи, $ разни: Зависи, python Описание: Отпечатва Hello World в Python Отпечатва Hello World в Python 

3.3. Настройте файла с авторските права

Файлът „debian / copyright“ съдържа информация за лиценза за софтуерния пакет. Подготвен е за издаване чрез GNU Public License 2 (GPLv2). За нашия пример изглежда по следния начин:

Формат: http: // www.debian.org / doc / ръководства за опаковане / формат за авторски права / 1.0 / Upstream-Name: helloworld Източник: http: // www.efho.de / Файлове: debian / * Авторско право: 2017 Франк Хофман <[email protected]> Лиценз: GPL-2 + Този пакет е безплатен софтуер; можете да го разпространявате и / или модифицирате съгласно условията на Общия публичен лиценз на GNU, публикуван от Фондацията за свободен софтуер; или версия 2 на Лиценза, или (по ваш избор) всяка по-нова версия ... Този пакет се разпространява с надеждата, че ще бъде полезен, но БЕЗ ВСЯКА ГАРАНЦИЯ; без дори подразбиращата се гаранция за ПРОДАВАЕМОСТ ИЛИ ПРИГОДНОСТ ЗА КОНКРЕТНА ЦЕЛ. Вижте GNU General Public License за повече подробности ... Трябваше да получите копие от GNU General Public License заедно с тази програма. Ако не, вижте  . В системите на Debian пълният текст на GNU General Public License версия 2 може да бъде намерен в "/ usr / share / common-licenses / GPL-2". 

3.4. Регулирайте файла с промените

След информацията за авторските права трябва да се коригира файлът 'debian / changelog'. В нашия пример добавяме информацията „Първоначално пускане“.

helloworld (0.1-1) нестабилен; спешност = ниска * Първоначално освобождаване - Франк Хофман <[email protected]> Събота, 04 ноември 2017 21:16:13 +0100 

Това е всичко, от което се нуждаем досега - сега най-накрая можем да изградим пакета.


4. Изградете пакета

За да изградим пакета, трябва да се придвижим нагоре с една директория и да изпълним следната команда:

~ / build / helloworld / 0.1 / helloworld-0.1 $ dpkg-buildpackage -rfakeroot

Опцията '-rfakeroot' позволява на 'dpkg-buildpackage' да изпълнява команди като потребител с привилегия с помощта на командата 'fakeroot'. Това е необходимо за подготовка на пакета и за създаване на файлове и директории.
Командата по-горе води до по-дълъг списък с изходни съобщения (показан тук в среда на немски език):

dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellversion 0.1-1 dpkg-buildpackage: Quelldistribution нестабилен dpkg-buildpackage: Quellen geändert durch Frank Hofmann <[email protected]> dpkg-buildpackage: Host-Architektur amd64 dpkg-source --before-build helloworld-0.1 fakeroot debian / rules clean dh clean dh_testdir dh_auto_clean dh_clean dpkg-source -b helloworld-0.1 dpkg-източник: Информация: Quellformat "3.0 (юрган) "wird verwendet dpkg-източник: Информация: helloworld wird unter Benutzung des existierenden ./ helloworld_0.1.ориг.катран.gz gebaut dpkg-source: Информация: helloworld wird в helloworld_0.1-1.debian.катран.xz gebaut dpkg-source: Информация: helloworld wird в helloworld_0.1-1.DSC gebaut Debian / правила изграждане DH изграждане dh_testdir dh_auto_configure dh_auto_build dh_auto_test fakeroot Debian / правила двоични DH двоични dh_testroot dh_prep dh_auto_install dh_installdocs dh_installchangelogs dh_perl dh_link dh_compress dh_fixperms dh_strip dh_makeshlibs dh_shlibdeps dh_installdeb dh_gencontrol Dpkg-gencontrol: Warnung: Фелд зависи фон Paket HelloWorld: unbekannte Substitutionsvariable $ shlibs : Зависи dh_md5sums dh_builddeb dpkg-deb: Пакет "helloworld" wird in "... / helloworld_0.1-1_amd64.deb "gebaut. dpkg-genchanges <… /helloworld_0.1-1_amd64.changes dpkg-genchanges: kompletter Quellcode beim Hochladen hinzufügen dpkg-source --after-build helloworld-0.1 dpkg-buildpackage: Alles hochzuladen (Originalquellen enthalten) signfile helloworld_0.1-1.dsc Sie benötigen eine Passphrase, um den geheimen Schlüssel zu entsperren. Benutzer: "Frank Hofmann (Hofmann EDV) <[email protected]> "4096-битов RSA Schlüssel, ID D431AC07, erzeugt 2014-09-05 

4.1. Проверка на пакета

Поздравления - успяхте да създадете пакет Debian - да! Сега, нека разгледаме по-отблизо опаковката. Тук влиза в игра „lintian“. Този инструмент валидира вашия пакет, за да открие нарушения срещу строгите правила, които трябва да изпълняват пакетите на Debian.

За да стартирате тестовете, въведете следната команда:

lintian helloworld_0.1-1_amd64.деб 

Инструментът не открива нарушения на правилата, но също така правописни грешки и грешни символи. Превключвателят „-педант“ изисква „линтиан“ да бъде много по-критичен от обикновено. Както можете да видите по-долу, „lintian“ е малко мръсен и е открил три предупреждения и една грешка.

С изключение на първото предупреждение, ние можем лесно да направим „lintian“ щастлив и да коригираме съдържанието на пакета според зададените правила. Предупреждението „new-package-should-close-itp-bug“ означава, че няма доклад за грешка срещу пакета ITP (ITP означава _предназначен за package_). За обикновен пакет на Debian трябва да се изпрати доклад за грешка до програма за проследяване на грешки за пакет ITP, за да се уведомят други, че възнамерявате да започнете да опаковате този софтуер.

4.2. Предупреждение: 'readme-debian-contains-debmake-template

Файлът „README.Debian 'има за цел да води допълнителни бележки относно този пакет. 'dh_make' създаде този файл за нас:

helloworld за Debian ---------------------  -- Франк Хофман <[email protected]> Събота, 04 ноември 2017 21:16:13 +0100 

В нашия пример нямаме допълнителна информация, така че можем да изтрием файла.

4.3. Предупреждение: „описание-стартира-с-водещи интервали“

Това предупреждение се повдига, защото по-дългото описание на нашия пакет във файла 'debian / control' започва с повече от едно пространство. Веднага след като премахнем едно пространство, предупреждението ще изчезне.

4.4. Грешка: 'description-synopsis-is-duplicated'

Всеки пакет изисква както кратко, така и по-дълго описание в 'debian / control'. Тази грешка е повдигната, тъй като и двете описания са идентични. Веднага след като удължихме по-дългото описание, грешката изчезна.


5. Връзки и справки

- [ddr] Андреас Барт, Адам Ди Карло, Рафаел Херцог, Лукас Нусбаум, Кристиан Шварц, Иън Джаксън: Справочникът на разработчиците на Debian
- [dnmg] Йосип Родин, Осаму Аоки: Ръководството на новия поддръжник на Debian
- [dpmb] Аксел Бекерт, Франк Хофман: Книгата за управление на пакети на Debian
- [dpm] Ръководството за политика на Debian
- [dpt] Урок за пакетиране на Debian
- [gph] Наръчникът за поверителност на GNU
- [lushpaiPackage] Алекс Лушпай: Как да създам debian пакет от източника


6. Благодарности

Авторът би искал да благодари на Axel Beckert и Gerold Rupprecht за тяхната подкрепа и критиците при подготовката на тази статия.

Пренастройте бутоните на мишката си по различен начин за различен софтуер с X-Mouse Button Control
Може би се нуждаете от инструмент, който може да промени контрола на мишката с всяко приложение, което използвате. Ако случаят е такъв, можете да изпр...
Преглед на безжична мишка на Microsoft Sculpt Touch
Наскоро прочетох за Microsoft Sculpt Touch безжична мишка и реших да я купя. След като го използвах известно време, реших да споделя опита си с него. ...
Екранен тракпад и указател на мишката на AppyMouse за таблети с Windows
Потребителите на таблети често пропускат показалеца на мишката, особено когато са привични да използват лаптопите. Смартфоните и таблетите със сензоре...