- .deb-paketti sisältää binääritiedostot, kokoonpanon ja metatiedot, ja sitä hallitaan dpkg:llä ja APT:llä Debianilla, Ubuntulla ja johdannaisilla.
- Oikein pakkaamiseen käytetään puuta, joka sisältää DEBIAN-hakemiston, ohjaustiedoston ja ylläpitoskriptit, käyttäen debhelperiä ja dpkg-buildpackage-pakettia.
- Pakettien laatu varmistetaan työkaluilla, kuten Lintianilla, puhtailla koontiympäristöillä sekä pakettien ja repositorioiden GPG-allekirjoituksella.
- Paikalliset arkistot, joissa on reprepro ja apuohjelmia, kuten alien, checkinstall tai dh-make-perl, laajentavat jakelu- ja yhteensopivuusasetuksia.
.deb-pakettien luominen ja allekirjoittaminen Debianissa, Ubuntussa ja johdannaisissa ei ole vain kokeneiden kehittäjien asia. Oikeilla työkaluilla, järjestelmällisyydellä ja neljän keskeisen käsitteen ymmärtämisellä kuka tahansa terminaalin käyttäjä voi paketoida omaa ohjelmistoaan ja pitää sen hallinnassaan aivan kuten minkä tahansa muun jakelun paketin.
Jos olet kyllästynyt asentamaan asioita /usr/local- tai /opt-hakemistoon ilman paketinhallintaa , "orpoihin" binääreihin, joiden alkuperää et muista, tai siihen, että olet riippuvainen jonkun muun paketoimasta ohjelman puolestasi, kun sinulla on vain lähdekoodia tai .tar.gz-tiedosto, .deb-pakettien luomisen opettelu on ratkaisu. Lisäksi, jos viimeistelet prosessin hyvällä GPG-allekirjoituksella ja halutessasi omalla pienellä repositoriolla, saat puhtaan, toistettavan ja helposti ylläpidettävän järjestelmän.
Mikä tarkalleen ottaen on .deb-paketti ja miten sitä käsitellään?
.deb -tiedostopääte on Debianin ja koko sen tuoteperheen, kuten Ubuntun ja Linux Mintin, vakiomuotoinen pakettimuoto. Se sisältää binäärit, kirjastot, asetustiedostot, dokumentaation ja metatiedot, jotka kuvaavat ohjelman asentamisen ja hallinnan.
Järjestelmän ydin on dpkg (Debian Package Manager) , matalan tason apuohjelma, joka asentaa, listaa, tarkistaa ja poistaa .deb-paketteja. Käyttäjäystävällisemmät työkalut, kuten APT, aptitude tai graafiset käyttöliittymät (Synaptic, GDebi, ohjelmistokeskukset jne.), tukevat sitä, lisäävät automaattisen riippuvuuksien ratkaisemisen ja paremman käyttökokemuksen.
Kun asennat valmiin .deb-paketin, sinulla on useita vaihtoehtoja. dpkg:n avulla:
sudo dpkg -i paquete.deb
Jos riippuvuusvirheitä ilmenee, ne korjataan yleensä seuraavasti:
sudo apt --fix-broken install
Nykyaikaisella APT:llä voit asentaa suoraan paikallisen tiedoston ja antaa sen ratkaista riippuvuudet:
sudo apt install ./paquete.deb
Ja jos haluat mieluummin jotain .deb-tiedostoihin keskittyvää, GDebi (CLI- tai graafisessa tilassa) on erittäin kätevä asennusohjelma:
sudo apt install gdebi
sudo gdebi paquete.deb
.deb-paketin sisäinen perusrakenne

.deb-tiedosto on itse asiassa AR-tiedosto, joka sisältää kaksi tar-pakettia: control.tar.* ja data.tar.*Sen rakentaminen "käsin" on yksinkertaisempaa ajatella hakemistopuuta, joka sitten pakataan dpkg-deb.
Kuvittele, että haluat luoda paketin nimeltä henkilökohtaiset lähteet joka asentaa fontteja /usr/share/fonts/fuentes-personalesEnsin määrität tällaisen puun työhakemistoon:
fuentes-personales/
DEBIAN/
usr/share/fonts/fuentes-personales/
Kansio DEBIAN (Pakollinen nimi isoilla kirjaimilla) sisältää metatiedot ja ohjausskriptit; loput puusta toistavat tarkasti lopullisen polun järjestelmässä, johon asennetut tiedostot sijaitsevat. usr/share/fonts/fuentes-personales/ Laittaisit lähteet itse.
Osoitekirjassa DEBIAN On olemassa useita keskeisiä tiedostoja, jotka sinun tulisi tuntea:
- ohjaus: paketin tekninen datalehti (nimi, versio, riippuvuudet, kuvaus jne.).
- postinst: skripti, joka suoritetaan asennuksen tai purkamisen jälkeen.
- postrm: skripti, joka käynnistetään paketin poistamisen jälkeen.
- luottamuksellisia: luettelo päivitysten aikana erityisen huolellisesti käsitellyistä määritystiedostoista.
Ylläpitoskriptit, kuten postinstin ja postrmin on oltava suoritettaviakäyttöoikeuksilla välillä 0555 ja 0755. Ne ovat yleensä komentosarjoja, vaikka riviä ei ole pakko sisällyttää. #!/bin/bash jos sitä käytetään dpkg:stä.
DEBIAN-tiedosto/ohjausobjekti: keskeiset kentät ja suhteet

DEBIAN /control-tiedosto on paketin deklaratiivinen ydin . Se sisältää nimen, version, ylläpitäjän, arkkitehtuurin, kuvauksen ja, mikä erittäin tärkeää, riippuvuudet ja suhteet muihin paketteihin.
Yksinkertaisen fonttipaketin minimaalinen ohjaus voisi näyttää suunnilleen tältä (esimerkkinä uudelleenkirjoitettuna):
Package: fuentes-personales
Version: 1.0-3
Section: misc
Priority: optional
Maintainer: Nombre Apellido <[email protected]>
Architecture: all
Replaces: fuentes-personales (<= 1.0-2)
Description: Colección de fuentes personales
Instala un conjunto de tipografías adicionales para el sistema.
Joitakin keskeisiä osa-alueita, jotka sinun tulisi hallita:
- Paketti: binääripaketin nimi (ei välilyöntejä, pienet kirjaimet, kohtuullinen pituus).
- Versionormaalisti
version_upstream-revision(esimerkiksi1.0-3). - Osa: tiedoston kategoria (admin, devel, net, x11, games, libs, misc jne.).
- prioriteettitärkeys (pakollinen, tärkeä, vakio, valinnainen, ylimääräinen).
- arkkitehtuuri: Kaikki (käännetty arkkitehtuurin mukaan), kaikki (riippumaton, esim. lähdekoodit, skriptit) tai tietty arkkitehtuuri (amd64, i386…).
- riippuu, suosittelee, Ehdottaa, Konfliktit, Tarjoaa, Korvaa, Pre-Depends: pakettien väliset suhteet.
Debianin riippuvuusjärjestelmä on erittäin hienostunut. Depends- paketin käyttö edellyttää muiden pakettien asentamista toimiakseen; Recommends- ja Suggests-pakettien avulla annat APT- ja dselect-vihjeitä paketeista, jotka täydentävät sinun pakettiasi; Conflicts- ja Replaces-pakettien avulla hallitset yhteensopimattomia tai tiedostoja jakavia paketteja; ja Provides-paketin avulla ilmoitat tarjoavasi "virtuaalista" toiminnallisuutta (kuten "mail-transport-agent").
Jaetuissa kirjastoissa on yleistä käyttää ${shlibs:Depends} Depends-kohdassa, joka korvataan automaattisesti dh_shlibdeps pakettia luotaessa niiden kirjastojen mukaan, joita binääritiedostosi todellisuudessa käyttää.
.deb-tiedoston manuaalinen rakentaminen dpkg-deb-komennolla
Jos hakemistopuu on jo valmis, DEBIAN/control on täytetty oikein ja tiedostot ovat paikoillaan , .deb-tiedoston luominen perustyökaluilla on hyvin yksinkertaista:
dpkg-deb -b fuentes-personales
Tämä tuottaa fuentes-personales.deb, asennettava paketti. Voit tarkistaa sen metatiedot komennolla:
dpkg --info fuentes-personales.deb
Näet jotain tällaista: koko, ohjaus, postinst/postrm-skriptit (jos sellaisia on) ja yhteenvedon sisällöstä. Näet paketin tiedostopuun yksinkertaisesti seuraavasti:
dpkg -c fuentes-personales.deb
Kun olet tyytyväinen, asennat sen kuten minkä tahansa muun:
sudo dpkg -i fuentes-personales.deb
Ja varmistat, että tässä esimerkissä fontit on sijoitettu kansioon /usr/share/fonts/personal-fonts juuri odotetulla tavalla.
Kehitystyökalut monimutkaisten ohjelmistojen pakkaamiseen
Kun siirrytään yksinkertaisista paketeista (kuten kourallisesta lähdekoodia) täydellisiin sovelluksiin, jotka sisältävät käännöksen, kirjastot, dokumentaation ja paljon muuta, on suositeltavaa luottaa Debianin kehitystyökalujen koko ekosysteemiin.
Joitakin keskeisiä paketteja "vakavien" ohjelmien .deb-pakettien kehittämiseen:
- dpkg-devTyökalut lähdekoodipakettien purkamiseen, rakentamiseen ja lataamiseen.
- binutils, gcc, make, libc6-dev: C/C++:n vakiokäännöstyökaluketju.
- autoconf, automake, autotools-dev: tuki projekteille, joissa on "konfiguroi ja tee" -järjestelmä.
- debhelper, dh-make: kokoelma skriptejä, jotka automatisoivat pakkaamisen.
- devscripts: ylläpitäjien apuohjelmat (debuild, uscan, dch jne.).
- fakeroot: jäljittelee pääkäyttäjän oikeuksia rakentamisen aikana ilman todellisia oikeuksia.
- lintian, lindaautomaattiset pakkausten laaduntarkastajat.
- debian-policy, kehittäjien viitevirallinen dokumentaatio siitä, miltä pakettien tulisi näyttää.
Ajatuksena on, että et mene suorittamaan dpkg-deb -ba hair kohtalaisen monimutkaisille operaatioilleSen sijaan käytät Debianin vakiotyönkulkua: lähdekoodipaketti, hakemisto debian/ sääntöjen ja rakentamisen avulla dpkg-buildpackage tai debuild.
Lähdekoodista Debian-pakettiin: yleinen työnkulku
Uuden Debianin ylläpitäjän oppaan noudattama "tyypillinen" prosessi voidaan tiivistää seuraavasti (yksinkertaistaen mutta jättämättä pois tärkeitä osia):
- Asenna pakkaustyökalut (ne, jotka juuri listasimme).
- Lataa ja kokeile ohjelmaa Käännä se alkuperäisestä lähdekoodista (tar.gz jne.), asenna se kansioon /usr/local ja katso, että se toimii.
- Valmistele työhakemisto, yleensä sisään
/usr/local/src/nombrePura koodi siellä ja nimeä se tarvittaessa uudelleen esimerkiksi näin:nombre-versión. - Sovita projekti Debianin hierarkiaan: ei mitään hakemistossa /usr/local, kaikki hakemistoissa /usr, /etc, /var FHS:n mukaisesti.
- Luo Debian-runko dh-make-komennollajoka lisää hakemiston
debian/mallipohjien kanssa. - Täytä ja säädä Debian-tiedostoja/: hallinta, säännöt, tekijänoikeudet, muutosloki, conffiles jne.
- Käännä paketti komennolla dpkg-buildpackage, mieluiten käyttäen fakerootia.
- Tarkista .deb-tiedosto lintianin ja lindan kanssa, korjaa ongelmat ja rakenna uudelleen, kunnes se on puhdas.
- Testaa asennus, päivitys ja asennuksen poisto puhtaassa koneessa tai häkissä (chroot, pbuilder, cowbuilder).
- (Valinnainen) Lataa paketti arkistoon ja tarvittaessa Debianille/Ubuntulle virallisen prosessin kautta.
Tätä työnkulkua täydentävät hyvät käytännöt, kuten versionhallintajärjestelmän (Subversion, Git jne.) käyttö, puhtaan chroot-häkin valmistelu pbuilderilla/cowbuilderilla koontiversioiden toistamiseksi ja pienen paikallisen APT-arkiston perustaminen repreprolla omien .deb-tiedostojen jakamista ja APT:n oikein havaitsemisen testaamista varten.
dh-maken, debhelperin ja debian/rules-komentojen käyttö
Ensimmäinen suuri harppaus tapahtuu, kun jätät "manuaaliset" paketit taaksesi ja otat käyttöön Debianin standardin, joka perustuu debhelperiin ja debian/rules-tiedostoon . Debian/rules on erityinen Makefile, joka kuvaa, miten paketti käännetään ja asennetaan.
Ohjelman lähdekoodin osia (esim. gentoo-0.9.12/) ja suoritat:
dh_make
Se kysyy sinulta haluamasi paketin tyyppiä (yksinkertainen binääri, monibinääri, kirjasto jne.) ja luo sinulle hakemiston. debian/ malleilla: ohjaus, säännöt, tekijänoikeudet, muutosloki, esimerkkiskriptit, .docs-tiedostot, .menu, .manpage.ex jne.
Tiedosto debian/säännöt debhelperillä luotu sisältää tavoitteita, kuten build, clean, install, binary-arch y binary-indep. Osassa binary-arch Useita komentoja kutsutaan dh_*:
- dh_asennusdokumentit: asentaa dokumentaation
/usr/share/doc/paquete. - dh_asennusesimerkkejä: kopioi esimerkit vastaavaan kansioon.
- dh_asennusmansivut: sijoittaa käyttöohjesivut ja niiden linkit.
- dh_installchangelogs: asentaa muutoslokit.
- dh_strip, dh_compress, dh_fixpermskoon optimointi ja oikeat käyttöoikeudet.
- dh_shlibdeps, dh_gencontrol, dh_builddeb: riippuvuuksien laskenta, kontrollien luonti ja lopullinen .deb-tiedoston rakentaminen.
Sen kauneus piilee siinä, että nämä skriptit lue muita tiedostoja Debianin alla/ (esimerkiksi paquete.docs, paquete.manpagesjne.) ja toimi sen mukaisesti. Tällä tavoin debian/rules-tiedostostasi voi tulla melko lyhyt ja luettava, ja jos myöhemmin muutat jotain, sinun tarvitsee muokata vain aputiedostoja.
Laadunvalvonta: Lintian, Linda ja puhtaan ympäristön testaus
Vaikka paketti käännetään ja asennetaan koneellesi, se ei tarkoita, että se toimii oikein. Päästäksesi lähemmäksi Debianin standardeja, on tärkeää ajaa staattisen analyysin työkaluja, kuten lintian ja linda.
Esimerkiksi:
lintian -i paquete_1.0-1_i386.deb
linda -i paquete_1.0-1_i386.deb
Molemmat työkalut tuottavat varoituksia (W) ja virheitä (E) melko yksityiskohtaisine selityksineen. Ne havaitsevat tyypillisiä ongelmia, kuten:
- Man-sivut asennettiin hakemistoon /usr/man hakemiston /usr/share/man sijaan (rikkoo FHS:n).
- Kaksoislisenssit hakemistossa /usr/share/doc, jonka pitäisi mennä vain debian/copyright-kansioon.
- Ylläpitoskripti, jossa on virheitä, vääriä käyttöoikeuksia tai kutsuja vanhentuneisiin työkaluihin.
- Paketit, jotka rikkovat osio-, prioriteetti- tai tiedostorakennekäytäntöä.
Lisäksi on erittäin suositeltavaa testata paketti chroot-jailissa, joka on luotu pbuilder/cowbuilder-komennoilla , jossa asennetaan vain ilmoitetut riippuvuudet. Näin voit havaita unohdetut riippuvuudet (asiat, jotka sinulla on järjestelmässäsi, mutta joita et ole ilmoittanut hallintaasi) ja varmistaa asennus-, päivitys- ja poistoprosessin toistettavissa olevassa ympäristössä.
Pakettien ja repositorioiden allekirjoittaminen GPG:llä
Jos aiot jakaa .deb-pakettejasi muille, ei ole hyvä ajatus tehdä sitä ilman lisävahvistusta. Ihannetapauksessa sinun tulisi allekirjoittaa paketit ja tietovarasto GPG-avaimella, jotta käyttäjät voivat varmistaa, että heidän asentamansa sisältö on todella sinulta eikä sitä ole muokattu matkan varrella.
Prosessi on yksinkertainen: luot GPG-avaimen (julkisen/yksityisen avaimen parin), käytät yksityistä avainta allekirjoittamiseen ja julkaiset julkisen avaimen muiden tuotavaksi. Yleensä allekirjoitetaan vain .deb-tiedoston itsensä sijaan muutosloki (.changes), lähdekoodin kuvaajat (.dsc) ja repositorion julkaisutiedosto.
APT-arkistossa, joka on liitetty nuhteluEsimerkiksi tiedosto dists/<distribución>/Release mukana Release.gpgjoka on allekirjoitus. Kun käyttäjä lisää repositoriosi ja tuo avaimesi, APT tarkistaa allekirjoituksen automaattisesti aina, kun se päivittää pakettiluetteloa. Jos jokin ei täsmää (manipuloitu tiedosto, väärä avain), APT antaa turvallisuusvaroituksen eikä hän luota kehenkään.
Kehittäjälle ihanteellinen integraatio on käyttää debuildia tai pdebuildia auto-debsignin kanssa , jolloin pakettien valmistuttua se kysyy GPG-avaimen salasanaa ja allekirjoittaa tarvittavat tiedostot ilman, että sinun tarvitsee tehdä sitä yksi kerrallaan.
Paikalliset arkistot ja julkaisu: reprepro, Apache, rsync…
Kun sinulla on useita pakkauksia, niiden yksittäinen seuranta muuttuu hankalaksi. Luonnollista on luoda omasi. paikallinen APT-arkistovaikka se olisi omalla koneellasi tai kotipalvelimella. Tällä tavoin kuka tahansa asiakas (myös sinä itse) voi käyttää sitä apt install paquete kuten minkä tahansa virallisen arkiston kanssa.
Tähän on useita työkaluja, mutta yksi erittäin suosittu on nuhtelu, joka vastaa koko rakenteen luomisesta dists/ y pool/Release-tiedosto ja sen allekirjoitus. Tyypillinen työnkulku koostuu seuraavista:
- Luo peruspuu, esimerkiksi
/var/packages/ubuntu. - Määritä jakeluversiot (gutsy, stable, testing jne.) reprepro-tiedostoissa.
- Lisää binääripaketteja includedeb-komennolla ja lähteet, joihin sisältyy includedsc.
- Allekirjoita vapautus GPG-avaimellasi.
Julkaistaksesi arkiston verkossa, yksinkertaisesti paljasta kyseinen hakemisto komennolla Apache tai mikä tahansa muu HTTP/FTP-palvelinSitten asiakkaat-osioon lisätään rivi /etc/apt/sources.list tai "Software Originsin" graafiset valintaikkunat, esimerkiksi:
deb http://tuservidor/ubuntu gutsy main
deb-src http://tuservidor/ubuntu gutsy main
ja julkinen avain tuodaan (apt-key add claveDebian.asc (tai graafisen käyttöliittymän kautta). Siitä eteenpäin arkisto toimii aivan kuten mikä tahansa muukin, mukaan lukien automaattiset päivitykset.
Jos tietokoneesi ei ole aina päällä tai et voi tarjota HTTP:tä suoraan, toinen vaihtoehto on synkronoida sisällön /var/packages hosting-palveluntarjoajalle kautta lftp-peili, rsync tai vastaavaniin että julkinen palvelin palvelee tietovarastoa, mutta sinä luot ja päivität sen paikallisesti.
Muunnos formaattien ja vaihtoehtojen välillä, kun .deb-tiedostoa ei ole.
Vaikka käyttäisit Debiania/Ubuntua, ennemmin tai myöhemmin törmäät ohjelmistoihin, jotka on pakattu vain muihin formaatteihin. Alien- apuohjelma mahdollistaa muuntamisen .deb-, .rpm-, Slackware-pakettien, LSB:n jne. välillä. Se ei tuota yhtä viimeisteltyjä artefakteja kuin natiivipakkaus, mutta se on hyödyllinen ratkaisu.
Käytännön esimerkkejä:
- Muunna mikä tahansa muoto .deb-muotoon:
sudo alien archivo.rpm→ tuottaaarchivo.deb. - Muuntaminen .deb-tiedostosta .rpm-tiedostoon:
sudo alien --to-rpm paquete_1.0-1_i386.deb.
Sinun on tarkistettava tuloste (ylläpitoskriptit, polut, riippuvuudet), mutta ohjelmistoille, joilla ei ole natiivia versiota, tämä voi olla erittäin hyödyllistä. Toinen kätevä vaihtoehto itse käännettäessä on checkInstall, joka kytkee vaiheen make installSe kirjaa kopioidut tiedostot ja rakentaa perus-.deb-paketin, jonka se asentaa välittömästi. Se ei ole kelvollinen virallisille repositorioille, mutta se estää dpkg:n hallinnan ulkopuolella olevien asioiden pääsyn käsiin.
CPAN Perl -moduuleille on toinen erityinen työkalu dh-make-perl, joka luo moduulista Debian-pakettirungon (esimerkiksi dh-make-perl --cpan XML::Writer), jotta voit integroida sen järjestelmääsi kuten minkä tahansa muun .deb-tiedoston.
Kaiken kaikkiaan .deb-pakettien rakentamisen ja allekirjoittamisen hallitseminen Debian-pohjaisissa Linux-jakeluissa antaa sinulle paljon enemmän kuin vain kyvyn asentaa ohjelmia: sen avulla voit versioida omia kehityshankkeitasi, ottaa ne käyttöön turvallisesti, tarkastaa koneidesi sisällön ja, jos tunnet olosi kunnianhimoiseksi, osallistua ekosysteemiin lähettämällä pakettejasi virallisiin arkistoihin tai jakamalla niitä oman allekirjoitetun APT-tiedostosi kautta.
Intohimoinen kirjoittaja tavujen maailmasta ja tekniikasta yleensä. Rakastan jakaa tietämykseni kirjoittamalla, ja sen aion tehdä tässä blogissa, näyttää sinulle kaikki mielenkiintoisimmat asiat vempaimista, ohjelmistoista, laitteistoista, teknologisista trendeistä ja muusta. Tavoitteeni on auttaa sinua navigoimaan digitaalisessa maailmassa yksinkertaisella ja viihdyttävällä tavalla.
