.deb-paketin luominen vaihe vaiheelta

Viimeisin päivitys: 04/12/2025
Kirjoittaja: Isaac
  • .deb-paketti yhdistää asennustiedostot ja metatiedot hakemistorakenteeseen, jossa on pakollinen DEBIAN-kansio.
  • Ohjaustiedosto määrittää nimen, version, arkkitehtuurin, riippuvuudet ja kuvaukset sekä komentosarjat, kuten postinst ja postrm.
  • dpkg-deb- ja dpkg-buildpackage-komentojen avulla voit luoda paketteja yksinkertaisista rakenteista tai monimutkaisesta lähdekoodista debhelper-tuen avulla.
  • Pakettien testaaminen, asentaminen ja tarvittaessa jälkiasentaminen varmistaa puhtaan ja ylläpidettävän integroinnin Debian- ja johdannaisjärjestelmiin.

Vaiheittainen opas .deb-paketin luomiseen

Jos käytät Debiania, Ubuntua tai mitä tahansa niiden johdannaista, saatat ennemmin tai myöhemmin haluta luoda oman .deb-paketin asentaaksesi skriptejä, binäärejä, taustakuvia tai muita resursseja siistillä ja toistettavalla tavalla. Oikea pakkaaminen ei ainoastaan ​​näytä ammattimaiselta, vaan se myös säästää aikaasi, kun haluat ottaa saman paketin käyttöön useilla koneilla tai jakaa sen muiden käyttäjien kanssa.

Vaikka se saattaa aluksi kuulostaa hieman monimutkaiselta, todellisuudessa .deb-muoto noudattaa erittäin selkeitä sääntöjä.Paketti koostuu tietystä hakemistorakenteesta, pakettitietoja sisältävistä ohjaustiedostoista ja valinnaisesti asennuksen tai asennuksen poiston eri vaiheissa suoritettavista ylläpitoskripteistä. Näiden peruskäsitteiden ymmärtäminen antaa sinulle mahdollisuuden luoda mitä tahansa tyypillisestä paketin kopioivasta .deb-tiedostosta monimutkaisempaan pakettiin. käsikirjoitus en /usr/bin jopa monimutkaisempiin paketteihin, jotka sisältävät fontteja, taustakuvia tai kokonaisia ​​lähdekoodista käännettyjä sovelluksia.

Mikä tarkalleen ottaen on .deb-paketti?

.deb -tiedostopääte on Debianin ja kaikkien sen johdannaisten (Ubuntu, Debianiin perustuva Deepin jne.) käyttämä ohjelmistopakettimuoto . Tästä tiedostosta löydät pakattuina järjestelmääsi asennettavat tiedostot sekä sarjan pakettia kuvaavia metatietoja: nimi, versio, arkkitehtuuri, riippuvuudet, asennuksen jälkeiset komentosarjat jne.

Näitä paketteja hallinnoiva matalan tason ohjelma on dpkg , joka käsittelee .deb-tiedostojen purkamisen, asentamisen, konfiguroinnin ja poistamisen. Käyttäjäystävällisemmät työkalut, kuten apt , aptitude , tai graafiset paketinhallintaohjelmat, kuten Synaptic , PackageKit , Gdebi tai Ubuntu Software Center, toimivat sen päällä. .deb-tiedostoa manuaalisesti luotaessa käytetään kuitenkin lähes aina dpkg- ja dpkg-deb-komentoja.

Käytännössä .deb-paketti ei ole muuta kuin asennettava tiedosto Debian-järjestelmissä joka yhdistää kaiken tarvittavan sovelluksen tai resurssien oikeaan käyttöönottoon. Verrattuna yksinkertaiseen tar.gz Kuten AppImage, .deb-tiedosto integroituu pakettijärjestelmään, noudattaa vakiopolkuja ja mahdollistaa riippuvuuksien ja versioiden järjestelmällisen hallinnan.

Deb-paketin sisäinen rakenne

.deb-paketin perusrakenne

Ennen kuin pakataan mitään, on tärkeää ymmärtää, että .deb-tiedosto luodaan juurikansiosta jonka nimi yleensä vastaa paketin nimeä (esimerkiksi miapp, fuentes-personales, debjne.). Kyseisessä kansiossa on kaksi suurta lohkoa: kansio DEBIAN (isoilla kirjaimilla) ja asennushierarkia, johon pakettitiedostot kopioidaan.

Kansio DEBIAN sisältää ohjaustiedostot paketista. Pakollinen on controljossa määritellään paketin nimi, versio, arkkitehtuuri, riippuvuudet, kuvaus jne. Lisäksi voidaan luoda erityisiä komentosarjoja, kuten postinst y postrm, jotka käynnistyvät automaattisesti paketin asentamisen tai poistamisen jälkeen.

Loput rakenteesta toistetaan järjestelmäpolut, joihin haluat tiedostojesi päätyvänJos haluat asentaa skriptin /usr/binSinun täytyy luoda miapp/usr/bin/ ja sijoita suoritettava tiedosto sinne. Jos ne ovat lähdekooditiedostoja, käytät /usr/share/fonts/Jos ne ovat taustakuvia, ehkä /usr/share/backgrounds/Pakkaaja yksinkertaisesti purkaa .deb-tiedoston sisällön näihin polkuihin hierarkiaa kunnioittaen.


mkdir deb
mkdir -p deb/usr/bin
cp execute.sh deb/usr/bin/

Sitten, sisällä deb, loisit deb/DEBIAN/ ja tiedosto deb/DEBIAN/control paketin metatietojen kanssa. Tämä rakenne pakataan sitten dpkg-deb o dpkg -b lopullisen .deb-tiedoston luomiseksi.

Ohjaustiedosto: paketin ydin

deb-paketin ohjaustiedosto

Kansion sisällä DEBIAN Tiedosto on pakollinen. control, joka määrittelee kaikki perustiedot paketistaSe on tavallinen tekstitiedosto ilman tiedostopäätettä, joka sisältää kenttiä muodossa Clave: ValorYksi riviä kohden. Joitakin yleisimpiä kenttiä ovat:


Package: nombre-del-paquete
Version: 1.0
Section: misc
Priority: optional
Architecture: all
Maintainer: Nombre Apellido <email@dominio>
Depends: paquete1, paquete2
Replaces: paquete-viejo (>= 1.0)
Description: descripción corta
descripción larga del paquete en una o varias líneas

Kenttä Paketti ilmaisee sisäisen paketin nimen ja Se ei salli välilyöntejä tai alaviivoja.Yleensä käytetään vain pieniä kirjaimia, numeroita ja yhdysviivoja (-). Tämä on nimi, jonka pakettijärjestelmä näkee asentaessaan sitä.

  Windows 11:n esikonfigurointi mieleiseksesi asennusskriptien avulla

Kenttä Versio Se määrittää paketin tarkan version, ja on tärkeää päivittää se aina, kun teet merkittäviä muutoksia. Voit noudattaa yksinkertaista muotoa, kuten 1.0 tai monimutkaisempi tyyppi 1.0-3 osoittaaksesi saman ohjelmistoversion sisällä olevia muutoksia. Jos haluat peruuttaa muutokset, opi miten se tehdään palata paketin edelliseen versioon.

Kentät Osa y prioriteetti Ne auttavat paketin lajittelussa. Osa Se voisi olla jotain tällaista misc, custom, netjne., erityisen hyödyllinen, jos aiot julkaista paketin repositoriossa. prioriteetti Se heijastaa yhteisten arvojen tärkeyttä required, important, standard, optional o extra, oleminen optional yleisin räätälöidyissä paketeissa.

Kenttä arkkitehtuuri Määritä, mille arkkitehtuurille paketti on tarkoitettu: amd64, i386, x86, arm64jne. Jos paketti sisältää vain arkkitehtuurista riippumattomia skriptejä tai tiedostoja (kuten kuvia, fontteja tai bash-skriptejä tai Python), voit käyttää kaikki osoittamaan, että se toimii millä tahansa alustalla.

Ylläpitäjä - kenttä määrittää paketin kehittäjän tai siitä vastaavan henkilön, yleensä nimen ja sähköpostiosoitteen. Korvaa -kenttää käytetään osoittamaan paketteja tai versioita, jotka tämä uusi paketti korvaa, mikä on hyödyllistä, kun julkaiset uuden version, jonka on korvattava aiemmin asennettu versio. Jos haluat mieluummin ylläpitää useita versioita, katso, miten asennat kaksi versiota samasta paketista Linuxiin.

Kenttä riippuu Listaa riippuvuudet, jotka on asennettava ennen paketin asennusta tai sen aikana. Jos esimerkiksi sovelluksesi on kirjoitettu Pythonilla etkä asenna kirjastoja itse komentosarjasta, voit määrittää tarvittavat paketit tässä. osuva ratkaisee ne automaattisesti. Jos pakettisi hoitaa tämän jo (esimerkiksi lataamalla riippuvuuksia asennusskriptistä), voit jättää sen sellaisenaan. Depends: tyhjä.

Lopuksi, Kuvaus- kentässä on oma kikkansa: ensimmäinen rivi sisältää lyhyen kuvauksen ja seuraavat rivit (valinnainen) muodostavat pitkän kuvauksen. Pitkän kuvauksen jokaisen rivin on aluttava välilyönnillä ennen tekstiä. Tämä mahdollistaa Debian-työkalujen erottaa nämä kaksi osaa toisistaan ​​ja näyttää tiedot oikein pakettiluetteloissa ja hallintaohjelmissa.

Post-inst- ja post-rm-skriptit: tehtävien automatisointi

Tiedoston lisäksi controlkansiossa DEBIAN Voit luoda useita ylläpitoskriptejä, jotka suoritetaan automaattisesti eri aikoina. Yleisimmin yksinkertaisissa paketeissa käytetyt ovat: postinst y postrmvaikka on muitakin, kuten preinst o prerm edistyneempiin tapauksiin.

Asennuksen jälkeinen komentosarja suoritetaan tiedostojen purkamisen ja asentamisen jälkeen . Se on ihanteellinen paikka suorittaa määrityskomentoja : esimerkiksi sovelluksen asennusohjelman suorittamiseen, välimuistien uudelleenluomiseen, palveluiden uudelleenlataamiseen tai asennuksen aikana luotujen määritystiedostojen muokkaamiseen.

Käsikirjoitus postrm juoksee pakkauksen poistamisen jälkeenSitä käytetään tyypillisesti sellaisten jäännöstiedostojen poistamiseen, jotka eivät ole varsinaisesti osa pakettia, tai järjestelmäkokoonpanoon tehtyjen muutosten poistamiseen. Voit esimerkiksi poistaa kansion, joka on luotu kohdassa /usr/share/fonts/fuentes-personales/ fonttipaketin poistamisen jälkeen.

Nämä skriptit ovat yksinkertaisesti suoritettavat tekstitiedostot joka sisältää suoritettavat komennot, yleensä bash-muodossa. Rivin lisääminen ei ole pakollista. #!/bin/bash Aluksi, vaikka se onkin hyvä käytäntö, on tärkeää, että heillä on oikeat suoritusoikeudet, yleensä jotain tällaista 755 (eli lue ja suorita kaikki, kirjoita vain omistaja). Yleisesti ottaen on suositeltavaa, että ne ovat välillä 0555 y 0755.


#!/bin/bash
rm -Rf /usr/share/fonts/fuentes-personales/

Tekemällä näin paketti poistetaan. dpkg -r o apt remove, määritetty hakemisto katoaa automaattisestivälttäen tarpeetonta hukkaa järjestelmässä.

Pakettihakemistohierarkian luominen

Jotta paketti toimisi odotetulla tavalla, sinun on toista juurikansiossasi tarkka rakenne, johon haluat tiedostot asennettavan. Ajatuksena on, että se, mitä laitat miapp/usr/bin/ päättyy /usr/bin/, mitä tahansa siinä onkin miapp/usr/share/fonts/ päättyy /usr/share/fonts/ ja niin edelleen.

Kuvittele, että haluat luoda paketin, joka asentaa uusia fontteja järjestelmääsi. Hakemistopuu voisi näyttää suunnilleen tältä:


fuentes-personales/
├── DEBIAN/
│ └── control
└── usr/
└── share/
└── fonts/
└── fuentes-personales/
├── fuente1.ttf
└── fuente2.otf

Tässä tapauksessa pakettia asennettaessa Fontit kopioidaan kansioon /usr/share/fonts/personal-fonts/Jos julkaiset myöhemmin uuden version, jossa on lisää tai paranneltuja fontteja, sinun tarvitsee vain päivittää kyseisen kansion sisältö ja ladata tiedostossa oleva versio. control.

Toinen tyypillinen skenaario on pakkaaminen GitHubista ladattu skriptiEsimerkiksi työkalu, jonka haluat sijoittaa /opt ja ehkä lisätä käynnistysohjelman /usr/binVoit ladata projektin (esim. 4nonimizer), luo kansio deb/opt/ ja lisää koko koodi sinne:

  Levyn välimuistin vuodot Windows 11:ssä: Syyt, oireet ja ratkaisut


mkdir -p deb/opt/
cp -R 4nonimizer deb/opt/

Jos haluat myös komennon suoritettavan paketin asennuksen yhteydessä, kuten 4nonimizer installVoit käyttää skriptiä postinst anna sen suorittaa kyseinen komento automaattisesti tiedostojen purkamisen jälkeen. Tällä tavoin käyttäjän tarvitsee vain asentaa .deb-tiedosto, eikä manuaalisia lisävaiheita tarvita.

Muista, että ennen paketin rakentamista on erittäin suositeltavaa, että koko juurikansion omistaja on root , koska varsinaisessa suorituksessa järjestelmätiedostot kuuluvat tälle käyttäjälle. Voit muuttaa omistajuutta seuraavasti:


sudo chown -R root:root ./deb

.deb-paketin luominen manuaalisesti

Kun olet valmistellut rakenteen kansion avulla DEBIAN, tiedosto controlmahdolliset skriptit postinst/postrm ja hierarkia, johon tiedostot menevät, seuraava vaihe on rakentaa .deb-pakettiTähän on useita tapoja, mutta yleisimmät yksinkertaisille paketeille ovat dpkg -b y dpkg-deb –build.


dpkg -b ./deb /home/usuario/SCRIPTS.deb

Hakemuksen tapauksessa miappTavallinen järjestys olisi jotakuinkin seuraavanlainen:


cd ruta/donde/este/miapp
dpkg-deb --build miapp

Tämä luo tiedoston, jonka nimi on samankaltainen kuin myapp.deb Tai, riippuen siitä, miten olet sen määrittänyt ja mistä käynnistät sen, tiedosto, joka noudattaa kaavaa, kuten miapp-1.0_amd64.debTuo tiedosto on sitten asennettava paketti, jonka voit kopioida muille koneille tai ladata arkistoon.

Rakentamisen jälkeen voit tarkistaa pakkauksen sisäiset tiedot seuraavasti:


dpkg --info fuentes-personales.deb

Komento näyttää tietoja, kuten koon, osiot, prioriteetin, ylläpitäjän, arkkitehtuurin, lyhyen ja pitkän kuvauksen sekä viittauksia ylläpitoskripteihin (esimerkiksi postinst o postrm), jos olet sisällyttänyt ne.

Asenna ja testaa .deb-pakettisi

Kun .deb-tiedosto on luotu, on aika testata , että se todella toimii odotetulla tavalla . Voit asentaa sen graafisesta ympäristöstä käyttämällä työkaluja, kuten GDebi tai jakelusi pakettiasennusohjelmaa, tai suoraan terminaalista.


sudo dpkg -i nombre-del-paquete.deb

Jos järjestelmäsi ilmoittaa sinulle rikkinäisistä riippuvuuksista, voit korjata ne seuraavasti: sudo apt -f installjoka yrittää ladata ja asentaa puuttuvat paketit. Se on hyvä idea. Tarkista tämän jälkeen, että tiedostot on asennettu oikeisiin polkuihin. (esimerkiksi tarkistetaan, onko skripti tallennettu /usr/bin tai jos lähteet näkyvät vastaavassa hakemistossa ja järjestelmä tunnistaa ne).

Voit tarkastella paketin tietoja uudelleen asennuksen jälkeen tai yksinkertaisesti tarkistaa sen sisällön myös seuraavilla tavoilla:


dpkg --info nombre-del-paquete.deb

Ja jos haluat poistaa sen, käytä vain:


sudo dpkg -r nombre-del-paquete

Jos olet määrittänyt postrm- komentosarjan oikein , tässä vaiheessa suoritetaan ajoitetut puhdistustehtävät, jotka poistavat jäännöshakemistoja tai -tiedostoja järjestelmän mahdollisimman puhtaaksi jättämiseksi.

Lähdekoodista kääntäminen ja edistyneiden pakettien uudelleenrakentaminen

Sen lisäksi, että luodaan paketteja pelkästään skripteille tai staattisille resursseille, kehittyneemmissä ympäristöissä on yleistä kääntää olemassa olevia paketteja uudelleen niiden lähdekoodista . Tämä voi olla tarpeen, kun tarvitset uudemman version ohjelmasta kuin jakelusi mukana toimitettu versio tai kun haluat muuttaa oletuskäännösasetuksia.

Tätä prosessia, jossa paketin uudempi versio käännetään toimimaan vakaassa jakelussa, kutsutaan yleensä takaisinporttaukseksi . Yleensä lähdekoodi otetaan uudemmasta Debian-versiosta (esimerkiksi Testing tai Unstable), mukautetaan sitä ja .deb-tiedosto rakennetaan uudelleen yhteensopivaksi vakaan järjestelmän kanssa.

Voit ladata jo repositorioissa olevan paketin lähdekoodin seuraavasti:


apt source nombre-del-paquete

Esimerkiksi samba:


apt source samba

Tämä komento on vastuussa lataa lähdetiedostot (yleensä .dsc ohjausobjekti ja yksi tai useampi pakattu tiedosto .tar.gz, .tar.xzjne.), tarkista niiden eheys ja pura ne hakemistoon, jonka nimi yhdistää paketin ja version, esimerkiksi samba-4.13.13+dfsg.

Jos sinulla on tiedoston URL-osoite suoraan. .dsc Debianin peilillä tai ylläpitäjän verkkosivustolla toinen kätevä vaihtoehto on käyttää dget (pakkauksesta) devscripts), joka lataa .dsc-tiedoston ja siihen liittyvät tiedostot sekä tarkistaa allekirjoitukset käyttämällä dscverify ja purkaa lähdekoodipaketin, jolloin kaikki on valmiina toimimaan.

  Opi tekemään tulostimesta verkossa Home Windows 11/10:ssä

Muokkaa käännössääntöjä ja riippuvuuksia

Kun tarvitset sitä, mitä tarvitset muuta rakennusasetuksiaSinun tarvitsee pääasiassa muokata tiedostoa debian/rulesjoka ohjaa paketin koontivaiheita. Yksinkertaisimmissa tapauksissa näet selkeitä kutsuja ./configure ..., make ..., cmake ... tai vastaavaa, ja sinun tarvitsee vain säätää asetuksia tarpeidesi mukaan.

Paketeissa, jotka käyttävät modernia tyyliä, joka perustuu debhelper (komennolla dhNämä puhelut voivat olla piilossa. Siinä tapauksessa sinun on ehkä luotava ohittaa erityinen dh_auto_configure o dh_auto_buildjotta ylimääräiset parametrisi suoritetaan konfiguroinnin tai kääntämisen aikana.

Toinen avaintiedosto on debian/control (huom., eri kuin) DEBIAN/control (jo rakennetusta .deb-tiedostosta), joka kuvaa luotavat binääripaketit lähdekoodista ja ennen kaikkea sen käännösriippuvuuksista kentän kautta Kokoonpano riippuu.

Tämä kenttä sisältää tyypillisesti hyvin tarkat riippuvuusversiot , joiden tarkoituksena on varmistaa, että automaattiset rakentajat käyttävät aina odotettuja kirjastoversioita. Jos kuitenkin päivität niitä manuaalisesti, näitä versioita ei välttämättä ole vakaassa jakelussasi.

Näissä tapauksissa voit harkita rentouta joitakin liian tiukkoja riippuvuuksiaEdellyttäen, että olet varma, että ohjelmisto käänntyy oikein hieman vanhemmilla versioilla. On suositeltavaa lukea tiedostoja, kuten INSTALL tai projektidokumentaatiota sen selvittämiseksi, mitkä kirjastot ovat todella välttämättömiä ja mitä vähimmäisversioita ne vaativat.

Joskus onnistuneen takaisinporttauksen suorittamiseksi sinun on asennettava uudelleen Build-Depends-luettelossa lueteltuja paketteja , jotka eivät ole käytettävissä järjestelmässäsi. Tästä voi tulla rekursiivinen ja melko monimutkainen prosessi, jos et ole varovainen. Siksi on suositeltavaa pitää tällaiset riippuvuusketjut mahdollisimman vähäisinä aina kun mahdollista.

Rakenna binääripaketti lähdekoodista

Kun olet tehnyt tarvittavat muutokset pakkaustiedostoihin (esimerkiksi debian/rules y debian/control), aika koittaa luo uudelleen .deb-binääripakettiTämä tehdään pääasiassa komennolla dpkg-buildpackage, joka orkestroi koko käännös- ja pakkausprosessin Debianin standardien mukaisesti.

On yleistä käyttää asetuksia, jotka estävät luotujen ohjaustiedostojen automaattisen allekirjoittamisen, kuten .dsc ja .changesEsimerkiksi vaihtoehdot, -meille y -uc Niitä käytetään osoittamaan, että lähdekoodipakettia ja muutoksia ei tule allekirjoittaa, mikä on kohtuullista, jos teet vain paikallista testausta.

Monet kehittäjät käyttävät mieluummin korkeamman tason työkaluja, kuten purkaa (myös mukana) devscripts), joka sisäisesti kutsuu dpkg-buildpackage Se suorittaa myös joukon lisätarkistuksia luoduille paketeille varmistaakseen, että ne ovat Debianin käytäntöjen mukaisia, ja poistaakseen ympäristömuuttujat, jotka saattavat häiritä käännöstä.

Tämän prosessin tuloksena syntyy yksi tai useampi .deb-tiedosto, jotka ovat valmiita asennettaviksi järjestelmääsi, aivan kuten minkä tahansa muun paketin. Tämän lähestymistavan etuna on, että se antaa sinun mukauttaa monimutkaisia ​​ohjelmia erityistarpeisiisi tai tuoda uudempia versioita vakaisiin jakeluihin ilman, että sinun tarvitsee turvautua mahdollisesti vähemmän luotettaviin ulkoisiin arkistoihin.

Minimalistisesta rakenteesta masterointi DEBIAN/control Muutamasta perusskriptistä aina lähdekoodin uudelleenkääntämisen ja riippuvuuksien hallinnan edistyneimpiin tekniikoihin asti, sinulla on kaikki tarvittava sormiesi ulottuvilla. Luo ja ylläpidä omia .deb-pakettejasiOlipa kyseessä sitten kotiskriptit, taustakokoelmat tai kokonaiset sovellukset, järjestelmäintegraation taso on identtinen minkä tahansa virallisen paketin kanssa.

apt 3.0 debian-0
Aiheeseen liittyvä artikkeli:
APT 3.0 mullistaa pakettien hallinnan Debianissa visuaalisilla ja teknisillä parannuksilla