Debian

Debian pakotņu izveides instrukcijas

Debian pakotņu izveides instrukcijas

1. Priekšvārds

Atbildība par mašīnu nozīmē rūpēties par aparatūru, kā arī programmatūras komponentiem. Kā ikdienā redzams kā sistēmas administrators, daudz labāk ir instalēt programmatūru kā programmatūras pakotni, nevis daudz avota failu. Tas samazina izmaksas, lai pareizi uzturētu sistēmu.

Iepakojumus, kas ir pieejami no jūsu vēlamā izplatītāja, paketes uzturētājs pārbauda un pārrauga. Viņš pārbaudīja programmatūru un apliecina, ka tā der citām izplatīšanas programmām. Turklāt pakotne tiek parakstīta ar paketes uzturētāja GPG atslēgu. Tas garantē paketes integritāti un parāda, ka pakete ir no uzticama avota.

Pakotnes formāts ir atkarīgs no Linux izplatīšanas. Atlasītie formāti ir šādi:

deb

Paketes, kas izmantotas: Debian GNU / Linux, Ubuntu, Armbian, Linux Mint, Knoppix

apgr./min

Paketes, kas izmantotas: RedHat, Fedora, CentOS, OpenSuse

tgz un txz

Iepakojumi, kas izmantoti: Slackware

darva.xz

Paketes, kas izmantotas: Arch Linux

Šajā dokumentā ir paskaidrots, kā īsi izveidot paketi Debian GNU / Linux. Lai iegūtu detalizētu informāciju par Debian pakotnes formātu un rīkiem, lai uzturētu “deb” balstītu Linux sistēmu, iespējams, ieskatieties Debian pakešu pārvaldības grāmatā [dpmb]. Lai izveidotu paketes Debian GNU / Linux, ir svarīgi:

Pakete, ar kuru mēs strādāsim, tiek nosaukta par “helloworld”, un tās versijas numurs ir 0.1. Demonstrācijas nolūkos tas vienkārši satur vienu Python skriptu, kas izdod slaveno ziņojumu “Sveika, pasaule!”:

#!/ usr / bin / python print ("Sveiki, pasaule!") 

2. Prasības

2.1. GPG atslēga

1. solī ir pieejama GPG atslēga. Vēlāk atslēga būs nepieciešama, lai parakstītu paketi. Paturiet prātā, ka neparakstītas paketes ir neuzticamas un nevar būt daļa no Debian Visuma.

Gadījumā, ja jums vēl nav GPG atslēgas, izveidojiet to. Jūs varat veikt trīs tālāk norādītās darbības. Pirmā komanda ģenerē jaunu atslēgu, otra - jūsu jauno atslēgu eksportē uz atsevišķu failu, bet trešā - atslēgu jūsu personīgajai atslēgu piekariņai.

$ gpg --gen-key $ gpg -a --output ~ /.gnupg / JŪSU_NAME.gpg - eksportēt “JŪSU VĀRDS” $ gpg --import ~ /.gnupg / JŪSU_NAME.gpg 

Izveidošanas laikā pārliecinieties, vai vārds _JŪSU VĀRDS_ ir pareizs. Parasti tiek izmantots vārdu un uzvārdu kombinācija. Šim nosaukumam paketē būs jābūt tieši tādam pašam, tad, veidojot Debian pakotnes 'control' failu. Lai iegūtu vairāk informācijas par GPG, skatiet GNU privātuma rokasgrāmatu [gph].

2.2. Iepakojuma instrumentu ķēde

Lai izveidotu Debian pakotni ar avota kodu, jūsu sistēmā ir nepieciešamas šādas programmatūras pakotnes:

Kā lietotāja root varat tos instalēt, izmantojot šādu komandu:

# apt-get install build-essential autoconf automake autotools-dev dh-make debhelper devscripts fakeroot xutils lintian pbuilder 

2.3. Sagatavojiet iesaiņojamo programmatūru

Mums ir jāsagatavo direktorijs, lai izveidotu paketi. Izveidojiet direktoriju, lai sagatavotu vidi, kurā mēs veidosim pakotni:

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

Nokopējiet darvu.gz 'saspiests arhīvs direktorijā:

$ cp helloworld-0.1.darva.gz ~./ build / helloworld / 0.1 

Pārslēdzieties uz direktoriju un izvelciet pakotni:

$ cd ~./ build / helloworld / 0.1 ~ / build / helloworld / 0.1 $ tar -xzf helloworld-0.1.darva.gz 

Tagad direktorijā ir gan avota kods atsevišķā direktorijā, gan saspiests arhīvs:

~ / build / helloworld / 0.1 $ lellow-world-0.1 kolēģis-0.1.darva.gz 

3. Debianizācija

Šajā brīdī mēs pievienosim failus, kas raksturīgi Debian pakotnei. Tāpēc šī darbība tiek nosaukta par programmatūras _diagnozēšanu_. Tas tiek darīts vairākos atsevišķos soļos.

3.1 Sagatavojiet iepakojuma struktūru

Pārslēdzieties uz direktoriju, kurā glabājas viss pakotnes avota kods. Mūsu piemērā pakotne satur failu 'helloworld.tikai py:

~ $ cd build / helloworld / 0.1 / kolēģis-0.1 ~ / build / helloworld / 0.1 / kolēģis-0.1 $ ls kolēģis.py 

Pievienosim failus, kas raksturīgi Debian pakotnei. Tiek palaists rīks 'dh_make'. Slēdzis '-e' norādīto adresi izmanto kā e-pasta adresi faila 'debian / control' laukā 'Maintainer'. Veidojot paketi, tā vietā izmantojiet savu e-pasta adresi. Atcerieties izmantot to pašu e-pasta adresi, kas atbilst jūsu GPG atslēgai.

Slēdzis '-f' izmanto norādīto failu kā sākotnējo avota arhīvu un izlaiž pašreizējā programmas koka kopēšanu programmā.orig '.

~ / build / helloworld / 0.1 / kolēģis-0.1 $ dh_make -e [aizsargāts ar e-pastu] -f… / helloworld-0.1.darva.gz 

Uzvednē jums tiek lūgts izvēlēties izveidojamās pakotnes veidu. Lai izvēlētos _viena binārā_ tipa 's'.

Iepakojuma veids: viens binārs, indep binārs, daudzkārtējs binārs, bibliotēka, kodola modulis, kodola ielāps? [s / i / m / l / k / n] s Uzturētāja vārds: Frenks Hofmans E-pasta adrese: [E-pasts aizsargāts] Datums: Sestdiena, 2017. gada 4. novembris 21:16:13 +0100 Paketes nosaukums: helloworld Versija: 0.1 Licence: tukša Iepakojuma veids: Single Hit  lai apstiprinātu: Pašlaik nav augstākā līmeņa Makefile. Tas var prasīt papildu noregulēšanu. Gatavs. Lūdzu, tagad rediģējiet failus debian / apakšdirektorijā. Jums vajadzētu arī pārbaudīt, vai kolēģi Makefiles instalējas $ DESTDIR, nevis mapē / . 

Rezultātā tiek izveidots direktorijs ar nosaukumu “debian”:

~ / build / helloworld / 0.1 / kolēģis-0.1 $ ls debianas kolēģis.py 

Šajā direktorijā ir visi pakotnei raksturīgie faili.

3.2. Pielāgojiet vadības failu

Fails 'debian / control' saglabā atkarības, kas nepieciešamas, lai _izveidotu_ pakotni. Izmantojot komandu 'dpkg-depcheck -d ./ configure 'jūs saņemat sarakstu ar visām nepieciešamajām pakotnēm. Mūsu gadījumā papildu pakete nav nepieciešama, jo Python ir interpretēta valoda.

Pēc tam mums ir jārediģē fails 'debian / control' un jāpievieno pakotnei raksturīgās vērtības. Mūsu piemērs izskatās šādi:

Avots: helloworld Sadaļa: pitons Prioritāte: pēc izvēles Uzturētājs: Frank Hofmann <[email protected]> Build-Depends: debhelper (> = 9) Standarti-versija: 3.9.5 Mājas lapa: http: // www.efho.de / # Vcs-Git: git: // anonscm.debian.org / cooper-maint / helloworld.git # Vcs-Browser: http: // anonscm.debian.org /?p = sadarbība-uzturēšana / kolēģu pasaule.git; a = kopsavilkums Iepakojums: helloworld Arhitektūra: jebkurš Atkarīgs: $ shlibs: Atkarīgs, $ misc: Atkarīgs, python Apraksts: Drukā Hello World programmā Python Drukā Hello World Python 

3.3. Pielāgojiet autortiesību failu

Fails “debian / copyright” satur programmatūras pakotnes informāciju par licenci. Tas ir sagatavots izlaišanai, izmantojot GNU Public License 2 (GPLv2). Mūsu piemērs izskatās šādi:

Formāts: http: // www.debian.org / doc / packaging-manuals / copyright-format / 1.0 / Upstream-Name: helloworld Avots: http: // www.efho.de / Faili: debian / * Autortiesības: 2017 Frank Hofmann <[email protected]> Licence: GPL-2 + Šī pakete ir bezmaksas programmatūra; jūs varat to pārdalīt un / vai modificēt saskaņā ar GNU General Public License noteikumiem, ko publicējis Free Software Foundation; vai nu licences 2. versija, vai (pēc jūsu izvēles) jebkura jaunāka versija ... Šī pakete tiek izplatīta, cerot, ka tā būs noderīga, bet BEZ GARANTIJAS; pat bez netiešas garantijas par pārdodamību vai piemērotību noteiktam mērķim. Lai iegūtu sīkāku informāciju, skatiet GNU General Public License ... Jums kopā ar šo programmu ir jāsaņem GNU General Public License kopija. Ja nē, skatiet  . Debian sistēmās GNU General Public License 2. versijas pilns teksts ir atrodams mapē "/ usr / share / common-licences / GPL-2". 

3.4. Pielāgojiet izmaiņu žurnāla failu

Pēc informācijas par autortiesībām fails 'debian / changelog' ir jāpielāgo. Mūsu piemērā mēs pievienojam informāciju “Sākotnējā izlaišana”.

kolēģis (0.1-1) nestabils; steidzamība = zema * Sākotnējā atbrīvošana - Frenks Hofmans <[email protected]> Sestdien, 2017. gada 4. novembrī 21:16:13 +0100 

Tas ir viss, kas mums līdz šim vajadzīgs - beidzot varam izveidot paketi.


4. Izveidojiet paketi

Lai izveidotu pakotni, mums jāpārvietojas uz augšu vienā direktorijā un jāizpilda šāda komanda:

~ / build / helloworld / 0.1 / kolēģis-0.1 $ dpkg-buildpackage -rfakeroot

Opcija '-rfakeroot' ļauj 'dpkg-buildpackage' vadīt komandas kā priviliģētu lietotāju, izmantojot komandu 'fakeroot'. Tas ir nepieciešams, lai sagatavotu paketi un izveidotu failus un direktorijus.
Iepriekš norādītās komandas rezultātā tiek izveidots garāks izvades ziņojumu saraksts (šeit parādīts vācu valodas vidē):

dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellversion 0.1-1 dpkg-buildpackage: nestabila Quelldistribution dpkg-buildpackage: Quellen geändert durch Frank Hofmann <[email protected]> dpkg-buildpackage: Host-Architektur amd64 dpkg-source - pirms būvēt helloworld-0.1 fakeroot debian / noteikumi clean dh clean dh_testdir dh_auto_clean dh_clean dpkg-source -b helloworld-0.1 dpkg-source: Informācija: Quellformat "3.0 (sega) "wird verwendet dpkg-source: Informācija: Helloworld wird unter Benutzung des egzistierenden ./ helloworld_0.1.orig.darva.gz gebaut dpkg-source: Informācija: helloworld wird in helloworld_0.1-1.debian.darva.xz gebaut dpkg-source: Informācija: helloworld wird in helloworld_0.1-1.DSC gebaut Debian / noteikumi veidot dh būvēt dh_testdir dh_auto_configure dh_auto_build dh_auto_test fakeroot Debian / noteikumi binārais dh binārais 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: Feld atkarīgs von Paket helloworld: unbekannte Substitutionsvariable $ shlibs : Atkarīgs dh_md5sums dh_builddeb dpkg-deb: Paket "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 bitu RSA Schlüssel, ID D431AC07, erzeugt 2014-09-05 

4.1. Apstiprina paketi

Apsveicu - jums izdevās izveidot Debian paketi - jā! Tagad apskatīsim iepakojumu tuvāk. Šeit spēlē 'lintian'. Šis rīks apstiprina jūsu paketi, lai atklātu pārkāpumus pret stingrajiem noteikumiem, kas jāpilda Debian paketēm.

Lai palaistu testus, ierakstiet šādu komandu:

lintian helloworld_0.1-1_amd64.deb 

Rīks neatrod noteikumu pārkāpumus, bet arī pareizrakstības kļūdas un nepareizas rakstzīmes. Slēdzis “-pedantic” lūdz “lintian” būt daudz kritiskākam nekā parasti. Kā jūs varat redzēt zemāk, "lintian" ir mazliet kašķīgs un ir atklājis trīs brīdinājumus un vienu kļūdu.

Izņemot pirmo brīdinājumu, mēs varam viegli padarīt "lintian" laimīgu un pielāgot iepakojuma saturu atbilstoši noteiktajam noteikumam. Brīdinājums “new-package-should-close-itp-bug” nozīmē, ka pret ITP pakotni nav kļūdu ziņojuma (ITP nozīmē _ paredzēts pakotnei_). Parastai Debian pakotnei ir jānosūta kļūdu ziņojums pakotnes ITP kļūdu izsekotājam, lai paziņotu citiem, ka jūs plānojat sākt iepakot šo programmatūru.

4.2. Brīdinājums: 'readme-debian-satur-debmake-template

Fails “README.Debian 'ir paredzēts, lai saglabātu papildu piezīmes par šo paketi. 'dh_make' izveidoja mums šo failu:

Debianas kolēģis ---------------------  -- Frenks Hofmans <[email protected]> Sestdien, 2017. gada 4. novembrī 21:16:13 +0100 

Šajā piemērā mums nav papildu informācijas, tāpēc mēs varam izdzēst failu.

4.3. Brīdinājums: “apraksts-sākas-ar-ved-atstarpes”

Šis brīdinājums tiek izvirzīts, jo mūsu paketes garāks apraksts failā “debian / control” sākas ar vairāk nekā vienu atstarpi. Tiklīdz noņemsim vienu atstarpi, brīdinājums pazudīs.

4.4. Kļūda: 'description-synopsis-is-duplicated'

Katrai paketei ir nepieciešams gan īss, gan garāks apraksts “debian / control”. Šī kļūda ir radusies, jo abi apraksti ir identiski. Tiklīdz mēs esam paplašinājuši garāku aprakstu, kļūda vairs nav.


5. Saites un atsauces

- [ddr] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: Debian izstrādātāja atsauce
- [dnmg] Josips Rodins, Osamu Aoki: Debian jaunā uzturētāja rokasgrāmata
- [dpmb] Aksels Bekerts, Frenks Hofmans: Debian pakešu pārvaldības grāmata
- [dpm] Debian politikas rokasgrāmata
- [dpt] Debian iepakojuma apmācība
- [gph] GNU privātuma rokasgrāmata
- [lushpaiPackage] Alex Lushpai: Kā izveidot Debian pakotni no avota


6. Pateicības

Autore vēlas pateikties Akselam Bekertam un Geroldam Rupprechtam par atbalstu un kritiķiem, sagatavojot šo rakstu.

Kā izmantot AutoKey, lai automatizētu Linux spēles
AutoKey ir darbvirsmas automatizācijas lietderība operētājsistēmām Linux un X11, kas ieprogrammēta Python 3, GTK un Qt. Izmantojot skriptu un MACRO fu...
Kā parādīt FPS skaitītāju Linux spēlēs
Linux spēles ieguva lielu impulsu, kad Valve 2012. gadā paziņoja par Linux atbalstu Steam klientam un viņu spēlēm. Kopš tā laika daudzas AAA un indie ...
Kā lejupielādēt un atskaņot Sid Meier Civilization VI operētājsistēmā Linux
Ievads spēlē Civilization 6 ir mūsdienīga klasiskā koncepcija, kas ieviesta Age of Empires spēļu sērijā. Ideja bija diezgan vienkārša; jūs sāktu pašā ...