Sådan opretter du en .deb-pakke trin for trin

Sidste ændring: 04/12/2025
Forfatter: Isaac
  • En .deb-pakke kombinerer installationsfiler og metadata i en mappestruktur med en obligatorisk DEBIAN-mappe.
  • Kontrolfilen definerer navn, version, arkitektur, afhængigheder og beskrivelser, sammen med scripts som postinst og postrm.
  • dpkg-deb og dpkg-buildpackage giver dig mulighed for at generere pakker fra simple strukturer eller kompleks kildekode med debhelper-understøttelse.
  • Testning, installation og om nødvendigt eftermontering af pakker sikrer en ren og vedligeholdelsesvenlig integration i Debian og afledte systemer.

Trin-for-trin guide til oprettelse af en .deb-pakke

Hvis du bruger Debian, Ubuntu eller en anden afledningsversion, vil du måske før eller siden få lyst til at oprette din egen .deb-pakke for at installere scripts, binære filer, baggrunde eller andre ressourcer på en ren og gentagelig måde. Korrekt pakning ser ikke kun professionel ud, men det sparer dig også tid, når du vil installere den samme pakke på flere maskiner eller dele den med andre brugere.

Selvom det måske lyder lidt kompliceret i starten, er virkeligheden den, at .deb-formatet følger meget klare regler.En pakke består af en specifik mappestruktur, kontrolfiler, der indeholder pakkeoplysninger, og eventuelt vedligeholdelsesscripts, der kører på forskellige stadier af installation eller afinstallation. Forståelse af disse grundlæggende koncepter vil give dig mulighed for at oprette alt fra en typisk .deb-fil, der kopierer en pakke, til en mere kompleks pakke. script en /usr/bin op til mere avancerede pakker med skrifttyper, baggrunde eller komplette applikationer samlet fra kildekode.

Hvad er en .deb-pakke præcist?

En fil med filendelsen .deb er det softwarepakkeformat, der bruges af Debian og alle dets derivater (Ubuntu, Deepin baseret på Debian osv.). I denne fil finder du komprimerede filer, der vil blive installeret på dit system, samt en række metadata, der beskriver pakken: navn, version, arkitektur, afhængigheder, scripts efter installation osv.

Lavniveauprogrammet, der administrerer disse pakker, er dpkg , som håndterer udpakning, installation, konfiguration og fjernelse af .deb-filer. Mere brugervenlige værktøjer som apt , aptitude eller grafiske pakkehåndteringsprogrammer som Synaptic , PackageKit , Gdebi eller Ubuntu Software Center arbejder ovenpå det. Men når du opretter en .deb-fil manuelt, vil du næsten altid arbejde med dpkg og dpkg-deb.

I praksis er en .deb-pakke intet andet end en installerbar fil på Debian-systemer der integrerer alt, hvad der er nødvendigt for korrekt at implementere en applikation eller ressourcer. Sammenlignet med en simpel tar.gz Ligesom et AppImage integreres .deb-filen med pakkesystemet, respekterer standardstier og muliggør ordnet administration af afhængigheder og versioner.

Intern struktur af en deb-pakke

Grundlæggende struktur af en .deb-pakke

Før du pakker noget, er det vigtigt at forstå, at En .deb-fil er bygget fra en rodmappe hvis navn normalt matcher pakkens navn (f.eks. miapp, fuentes-personales, debosv.). I den mappe har vi to store blokke: mappen DEBIAN (med store bogstaver) og installationshierarkiet, hvor pakkefilerne skal kopieres til.

Mappen DEBIAN indeholder kontrolfilerne af pakken. Den obligatoriske er controlhvor pakkenavn, version, arkitektur, afhængigheder, beskrivelse osv. er defineret. Derudover kan der oprettes særlige scripts, f.eks. postinst y postrm, som kører automatisk efter installation eller fjernelse af pakken.

Resten af ​​strukturen replikeres systemstierne, hvor du vil have dine filer til at endeHvis du vil installere et script i /usr/binDu bliver nødt til at oprette miapp/usr/bin/ og placer den eksekverbare fil der. Hvis de er kildefiler, skal du bruge /usr/share/fonts/Hvis det er tapeter, måske /usr/share/backgrounds/Pakkeren udpakker simpelthen indholdet af .deb-filen i disse stier og respekterer hierarkiet.


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

Så, indeni deb, ville du oprette deb/DEBIAN/ og filen deb/DEBIAN/control med pakkemetadataene. Denne struktur vil derefter blive pakket med dpkg-deb o dpkg -b for at generere den endelige .deb-fil.

Kontrolfilen: pakkens hjerte

kontrolfilen for en deb-pakke

Inde i mappen DEBIAN Filen er obligatorisk. control, som definerer alle de grundlæggende oplysninger om pakkenDet er en almindelig tekstfil uden filtypenavn, der indeholder felter i formatet Clave: ValorEn pr. linje. Nogle af de mest almindelige felter er:


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

Marken Pakke angiver det interne pakkenavn og Den tillader ikke mellemrum eller understregninger.Der bruges normalt kun små bogstaver, tal og bindestreger (-). Dette er det navn, som pakkesystemet vil se, når det installeres.

  Tips til, hvordan du opretter en Microsoft-konto ved hjælp af Gmail

Marken Version Den angiver den nøjagtige version af pakken, og det er vigtigt at opdatere den, når du foretager væsentlige ændringer. Du kan følge et simpelt format som f.eks. 1.0 eller en mere udførlig type 1.0-3 for at angive revisioner inden for den samme softwareversion. Hvis du har brug for at fortryde ændringer, kan du lære, hvordan du gør det vende tilbage til en tidligere version af en pakke.

Felter Sektion y Prioritet De hjælper med at sortere pakken. Sektion Det kunne være noget i retning af misc, custom, netosv., især nyttigt hvis du planlægger at udgive pakken i et arkiv. Prioritet Det afspejler vigtigheden: fælles værdier er required, important, standard, optional o extra, være optional det mest almindelige for brugerdefinerede pakker.

Marken arkitektur Angiv hvilken arkitektur pakken er beregnet til: amd64, i386, x86, arm64osv. Hvis pakken kun indeholder arkitekturuafhængige scripts eller filer (såsom billeder, skrifttyper eller bash-scripts eller Python), kan du bruge alle for at indikere, at det virker på enhver platform.

Feltet Vedligeholder angiver den udvikler eller person, der er ansvarlig for pakken, normalt med deres navn og e-mailadresse. Feltet Erstatter bruges til at angive pakker eller versioner, som denne nye pakke erstatter, hvilket er nyttigt, når du udgiver en ny version, der skal erstatte en tidligere installeret version. Hvis du foretrækker at vedligeholde flere versioner, kan du se, hvordan du installerer to versioner af den samme pakkeLinux.

Marken afhænger Angiv de afhængigheder, der skal installeres før eller under pakkeinstallationen. Hvis din applikation f.eks. er skrevet i Python, og du ikke selv installerer bibliotekerne fra et script, kan du angive de nødvendige pakker her. apt løser dem automatisk. Hvis din pakke allerede håndterer dette (for eksempel ved at downloade afhængigheder fra et installationsscript), kan du lade den være som den er. Depends: tom.

Endelig har feltet Beskrivelse et trick: den første linje indeholder en kort beskrivelse , og efterfølgende linjer (valgfrit) danner den lange beskrivelse. Det er obligatorisk, at hver linje i den lange beskrivelse begynder med et mellemrum før teksten. Dette gør det muligt for Debian-værktøjer at skelne mellem de to dele og vise informationen korrekt i pakkelister og administratorer.

Post-inst og post-rm scripts: automatisering af opgaver

Ud over filen control, i mappen DEBIAN Du kan oprette adskillige vedligeholdelsesscripts, der kører automatisk på forskellige tidspunkter. De mest almindeligt anvendte i simple pakker er: postinst y postrmselvom der er andre som f.eks. preinst o prerm for mere fremskredne tilfælde.

Post-installation- scriptet kører efter udpakning og installation af filerne . Det er det ideelle sted at køre konfigurationskommandoer : for eksempel at køre programmets installationsprogram, regenerere cacher, genindlæse tjenester eller ændre konfigurationsfiler, der genereres under installationen.

Manuskriptet postrm er henrettet efter at have fjernet pakkenDet bruges typisk til at rydde op i resterende filer, der ikke strengt taget er en del af pakken, eller til at afinstallere ændringer foretaget i systemkonfigurationen. For eksempel kan du slette en mappe, der er oprettet i /usr/share/fonts/fuentes-personales/ efter afinstallation af en skrifttypepakke.

Disse manuskripter er simpelthen eksekverbare tekstfiler indeholder de kommandoer, der skal udføres, normalt i bash. Tilføjelse af linjen er ikke obligatorisk. #!/bin/bash I starten, selvom det er god praksis, er det vigtigt, at de har de korrekte udførelsestilladelser, normalt noget i retning af 755 (dvs. læse og udføre for alle, skrive kun for ejeren). Generelt anbefales det, at de er mellem 0555 y 0755.


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

Ved at gøre dette vil pakken blive fjernet. dpkg -r o apt remove, den angivne mappe forsvinder automatiskundgå unødvendigt spild i systemet.

Oprettelse af pakkekataloghierarkiet

For at pakken kan fungere som forventet, skal du afspil i din rodmappe den præcise struktur, hvor du vil have filerne installeret. Ideen er, at det, du indsætter miapp/usr/bin/ vil ende i /usr/bin/, hvad end der er i miapp/usr/share/fonts/ vil ende i /usr/share/fonts/ og så videre.

Forestil dig, at du vil oprette en pakke, der installerer nye skrifttyper på dit system. Mappens træ kan se sådan ud:


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

I dette tilfælde, når du installerer pakken, Skrifttyperne vil blive kopieret til /usr/share/fonts/personal-fonts/Hvis du senere udgiver en ny version med yderligere eller forbedrede skrifttyper, behøver du kun at opdatere indholdet af den pågældende mappe og uploade versionen i filen. control.

Et andet typisk scenarie er emballering af en script downloadet fra GitHubFor eksempel et værktøj, som du vil placere i /opt og måske tilføje en launcher /usr/binDu kunne downloade projektet (for eksempel) 4nonimizer), opret en mappe deb/opt/ og indsæt den komplette kode der:

  Denne røde advarsel angiver, at din computer er låst.


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

Hvis du også ønsker, at en kommando skal udføres, når pakken installeres, f.eks. 4nonimizer installDu kunne bruge et script postinst få den til automatisk at køre den kommando efter udpakning af filerne. På denne måde behøver brugeren kun at installere .deb-filen, og det er det, uden yderligere manuelle trin.

Glem ikke, at det, før du bygger pakken, kraftigt anbefales, at ejeren af ​​hele rodmappen er root , da systemfilerne i den faktiske udførelse tilhører denne bruger. Du kan justere ejerskabet med:


sudo chown -R root:root ./deb

Generer .deb-pakken manuelt

Når du har strukturen forberedt med mappen DEBIAN, filen controlde mulige manuskripter postinst/postrm og hierarkiet hvor filerne placeres, er det næste trin byg .deb-pakkenDer er flere måder at gøre dette på, men de mest almindelige for simple pakker er dpkg -b y dpkg-deb –build.


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

I tilfælde af ansøgningen miappDen sædvanlige rækkefølge ville være noget i retning af:


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

Dette vil oprette en fil med et navn der ligner myapp.deb Eller, afhængigt af hvordan du har konfigureret den, og hvor du starter den fra, en fil, der følger et mønster som miapp-1.0_amd64.debDen fil vil derefter være den installerbare pakke, som du kan kopiere til andre maskiner eller uploade til et arkiv.

Efter konstruktionen kan du inspicere de interne pakkeoplysninger med:


dpkg --info fuentes-personales.deb

Kommandoen viser data såsom størrelse, sektioner, prioritet, vedligeholder, arkitektur, kort og lang beskrivelse samt referencer til vedligeholdelsesscripts (f.eks. postinst o postrm) hvis du har inkluderet dem.

Installer og test din .deb-pakke

Når .deb-filen er genereret, er det tid til at teste, at den rent faktisk gør, hvad du forventer . Du kan installere den fra et grafisk miljø, ved hjælp af værktøjer som GDebi eller din distributions pakkeinstallationsprogram, eller direkte fra terminalen.


sudo dpkg -i nombre-del-paquete.deb

Hvis dit system advarer dig om ødelagte afhængigheder, kan du rette dem med sudo apt -f installsom vil forsøge at downloade og installere de manglende pakker. Det er en god idé. Derefter skal du kontrollere, at filerne er blevet installeret i de tilsigtede stier. (for eksempel at kontrollere, om scriptet er i /usr/bin eller hvis kilderne vises i den tilsvarende mappe og genkendes af systemet).

For at se pakkeoplysningerne igen efter installationen eller blot gennemgå indholdet, har du også følgende muligheder:


dpkg --info nombre-del-paquete.deb

Og hvis du vil afinstallere det, skal du blot bruge:


sudo dpkg -r nombre-del-paquete

Hvis du har defineret et postrm- script korrekt , vil de planlagte rengøringsopgaver i denne fase blive udført, hvorved resterende mapper eller filer fjernes for at efterlade systemet så rent som muligt.

Kompilering fra kildekode og genopbygning af avancerede pakker

Ud over blot at oprette pakker til scripts eller statiske ressourcer, er det i mere avancerede miljøer almindeligt at rekompilere eksisterende pakker fra deres kildekode . Dette kan være nødvendigt, når du har brug for en nyere version af et program end den, der følger med din distribution, eller når du vil ændre standardkompileringsindstillingerne.

Denne proces med at kompilere en nyere version af en pakke til at fungere på en stabil distribution kaldes normalt backporting . Typisk tager du kildekoden fra en nyere Debian-version (f.eks. Testing eller Unstable), tilpasser den og genopbygger .deb-filen, så den er kompatibel med dit stabile system.

For at downloade kildekoden til en pakke, der allerede findes i arkiverne, kan du bruge:


apt source nombre-del-paquete

For eksempel med samba:


apt source samba

Denne kommando er ansvarlig for download kildefilerne (normalt en .dsc kontrol og en eller flere komprimerede filer .tar.gz, .tar.xzosv.), verificer deres integritet og udpak dem til en mappe, hvis navn kombinerer pakken og versionen, for eksempel samba-4.13.13+dfsg.

Hvis du har filens URL direkte. .dsc På et Debian-spejl eller på vedligeholderens hjemmeside er en anden praktisk mulighed at bruge dget (fra pakken) devscripts), som downloader .dsc-filen, tilhørende filer og verificerer signaturer ved hjælp af dscverify og udtrækker kildepakken, så alt er klar til brug.

  Sådan installeres og konfigureres en FTP-server i Windows 11 trin for trin

Rediger kompileringsregler og afhængigheder

Når det, du har brug for, er skift byggemulighederDu skal primært redigere filen debian/rulessom styrer pakkeopbygningsfaserne. I de enkleste tilfælde vil du se tydelige kald til ./configure ..., make ..., cmake ... eller lignende, og du skal blot justere indstillingerne, så de passer til dine behov.

I pakker, der bruger den moderne stil baseret på debhelper (med kommandoen dhDisse opkald kan være mere skjulte. I så fald skal du muligvis oprette tilsidesættelser specifik for dh_auto_configure o dh_auto_buildså dine ekstra parametre udføres under konfiguration eller kompilering.

En anden nøglefil er debian/control (bemærk, forskellig fra) DEBIAN/control (fra en allerede bygget .deb), som beskriver de binære pakker, der vil blive genereret fra kildekoden og frem for alt dens kompileringsafhængigheder gennem feltet Byggeafhængig.

Dette felt indeholder typisk meget specifikke afhængighedsversioner , der er designet til at sikre, at autobuildere altid bruger de forventede biblioteksversioner. Men når du manuelt eftermonterer, findes disse versioner muligvis ikke i din stabile distribution.

I de tilfælde kan du overveje lemp nogle alt for strenge afhængighederForudsat at du er sikker på, at softwaren kan kompilere korrekt med lidt ældre versioner. Det anbefales at læse filer som INSTALL eller projektdokumentationen for at identificere, hvilke biblioteker der virkelig er essentielle, og hvilke minimumversioner de kræver.

Nogle gange skal du, for at fuldføre en backport, eftermontere pakker, der er angivet i Build-Depends , og som ikke er tilgængelige på dit system. Dette kan blive en rekursiv og ret kompleks proces, hvis du ikke er forsigtig. Derfor anbefales det at holde disse typer afhængighedskæder på et minimum, når det er muligt.

Byg den binære pakke fra kildekoden

Når du har foretaget de nødvendige ændringer i pakkefilerne (f.eks. i debian/rules y debian/control), tiden er inde til at regenerer .deb binærpakkenDette gøres primært ved hjælp af kommandoen dpkg-buildpackage, som orkestrerer hele kompilerings- og pakningsprocessen i henhold til Debians standarder.

Det er almindeligt at bruge indstillinger til at forhindre automatisk signering af genererede kontrolfiler, f.eks. .dsc og .changesFor eksempel mulighederne -os y -uc De bruges til at angive, at kildepakken og ændringerne ikke skal signeres, hvilket er rimeligt, hvis du kun udfører lokal testning.

Mange udviklere foretrækker at bruge et værktøj på højere niveau, som f.eks. opbygge (også inkluderet i) devscripts), som internt kalder dpkg-buildpackage Den udfører også en række ekstra kontroller af de genererede pakker, verificerer om de overholder Debians politik og rydder op i miljøvariabler, der kan forstyrre kompileringen.

Resultatet af denne proces vil være en eller flere .deb-filer, der er klar til installation på dit system, ligesom enhver anden pakke. Det smukke ved denne tilgang er, at den giver dig mulighed for at tilpasse komplekse programmer til dine specifikke behov eller bringe nyere versioner ind i stabile distributioner uden at skulle ty til potentielt mindre pålidelige eksterne arkiver.

Mastering fra den minimale struktur med DEBIAN/control Fra et par grundlæggende scripts til de mest avancerede teknikker til rekompilering fra kildekode og afhængighedsstyring, har du alt hvad du behøver lige ved hånden. Byg og vedligehold dine egne .deb-pakkerUanset om det drejer sig om hjemmescripts, baggrundssamlinger eller komplette applikationer, med et niveau af systemintegration identisk med enhver officiel pakke.

apt 3.0 debian-0
Relateret artikel:
APT 3.0 revolutionerer pakkehåndtering i Debian med visuelle og tekniske forbedringer