Introduktion til den interne struktur af en Debian-pakke

Blandt fordelene ved at kende strukturen inde i en Debian-pakke er at vide mere om systemet. For dem, der ikke forstår, er Debian-pakken en .deb-arkivfil pakket til Debian-familiens system. Du vil forstå mere senere, i nogle aspekter, hvordan apt-get og dpkg fungerer. Det er vigtigt, fordi det er relateret direkte til dit pakkehåndteringssystem. Denne artikel er primært skrevet til dem, der ønsker at begynde at lære Debian-emballage.

Krav

For at se strukturen i en Debian-pakke har du brug for en Debian-pakke. Har en fra hvor som helst din / var / cache / apt / archives / eller download en fra http://packages.ubuntu.com. Her bruger vi emacs_46.1_all.deb pakke fra Ubuntu 15.04 officielle depot. Du kan åbne enhver .deb-fil med File Roller i Ubuntu eller en anden filarkiver, du har.

1. Katalogstruktur

I hver Debian-pakke er der hver især generelt to forælderskataloger, der hedder usr og DEBIAN. De gemmer nogle filer eller en anden mappe inde i en Debian-pakke. Der er grunde til, at disse to findes der, og der er konsekvenser for at have dem.

usr


/ / Usr-biblioteket her er lig med / usr-mappen i hvert Debian-system. Denne mappe indeholder nogle andre mapper som bin, lib, deling osv. Bin (/ usr / bin) mappen indeholder den binære fil. I Debian pakke sammenhæng, her er hvor programmet lagres. Biblioteket lib (/ usr / lib) indeholder bibliotekets fil. Mappen (/ usr / share) indeholder andre mapper som ikoner, doc osv. Bemærk, at forklaringerne her kun er generelt. Et særligt tilfælde, når bin indeholder shell script eller lib indeholder binær eksekverbar er mulig.
Mappe træet generelt ville være som dette:
* -usr
- bin
- lib
- del
- doc
- ikoner
- info
- mand
Strukturen ovenfor er ens med vores Debian-system. Hver mappe vil blive kopieret til vores system, når en pakke er installeret. Det er nemmere at installere noget med de samme strukturer i forhold til, om en pakke har en anden mappestruktur med Debian-systemet.

DEBIAN


Denne DEBIAN-mappe (alle store) er obligatorisk for hver Debian-pakker (en menneskeskabt Debian-pakke) for at oprette den i en pakke. Med andre ord skal DEBIAN-mappen eksistere i en Debian-pakke. DEBIAN-mappen indeholder kontrolfil, altid. Hvis en Debian-pakkestruktur ikke indeholder en kontrolfil, ville den struktur aldrig blive indbygget i en Debian-pakke. Denne kontrolfil er den vigtigste metadatabase for en Debian-pakke.
kontrol
Et eksempel på kontrolfil fra emacs_46.1_all.deb pakke:

Pakke: emacs Kilde: emacs-standardversioner: 46.1 Arkitektur: alle Vedligeholder: Ubuntu Developers <[Email protected]> Original-Maintainer: Rob Browning <[Email protected]> Installeret størrelse: 25 afhænger: emacs24 | emacs24-lucid | emacs24-nox Sektion: redaktører Prioritet: valgfri Beskrivelse: GNU Emacs editor (metapackage) GNU Emacs er den udvidelige selvdokumenterende tekstredigerer. Dette er en metapakke, der altid afhænger af den seneste anbefalede Emacs-udgivelse.

Fra ovenstående kontrolfil ved vi i hvert fald pakkens navn er emacs, versionen er 46.1, pakken opretholdes af Ubuntu Developers, pakkeafhængigheder er emacs24 (eller emacs24-lucid eller emacs24-nox), og fra beskrivelsesfeltet, som vi kender denne pakke er bare metapakke.
Et af de vigtigste job i pakkehåndteringssystemet er håndtering af afhængigheder. Dette job vil have brug for information i Afhænger: felt ovenfor. Og denne pakke siger, at det er nødvendigt at installere emacs24 først, fordi emacs24 er afhængigheden af ​​denne pakke. For emacs24-lucid og emacs24-nox er de valgfri til emacs24-pakken, men man skal vælges for at installere denne pakke.
md5sums
Denne fil er grundlæggende ren tekstfil som kontrolfil. Men forskelligt med kontrol indeholder denne fil en liste over hele indholdet i pakken med hvert MD5 sum-hash-nummer (unikt id for hver fil). Denne fil er meget vigtig for at sikre pakken, og indholdet er originalt og gyldigt, ikke den falske eller ugyldige (f.eks. Medfølgende vedhæftet virus). Denne fil er også nyttig som indeks for alle filer inde i en pakke.
Vi viser en anden pakke, emacs24_24.4 + 1-4ubuntu5_i386.deb, som eksempel til dets md5sums-fil her:

ed1d6463a0b0988caa53fd54bdfab11c  usr/bin/emacs24-x
1de51f5410205017391d924d6025b209  usr/share/applications/emacs24.desktop
593501773dfe68c26137b599f9426484  usr/share/doc/emacs24/README.Debian
0a6306d9d7e821c2f6656bcbaba74a8d  usr/share/doc/emacs24/copyright
bc0280a4d6386cb2399b0bb88697f79b  usr/share/emacs/24.4/etc/DOC
7ab22db3e21e699cc15b2a1812586220  usr/share/lintian/overrides/emacs24
fbef85cc4395011769e17ef249d233f4  usr/share/menu/emacs24

Det viser hver fils hash sum (de tilfældige tegn i den venstre kolonne). Dette sikrer, at alle filer i pakken, som brugeren får, er gyldig. Dette er en af ​​de almindelige måder GNU / Linux-distributioner bruger til at beskytte brugerne mod malware (virus osv.) I deres pakkeledelsessystemer.

2. Post-Installeret Directory Structure

Efter installation af en pakke kan vi se, hvor hver fil der er gemt i vores Debian-system. Vi kan analysere det fra nogle aspekter:

  • Mandsiden af ​​dette program (emacs-programmet) er gemt i / usr / share / man / man1 i vores Debian-system. Mandsiden for emacs består af nogle .gz pakkefiler, hver med navnet * emacs * og indeholder tekstfil. Disse man side filer kommer fra den tilsvarende / usr mappe inde i Debian pakken nævnt ovenfor.
  • Info-siden af ​​dette program (emacs-programmet) er gemt i / usr / share / info / emacs24 i vores Debian-system. Info-siden bibliotek indeholder. GZ pakke fil, ligner med man side.
  • Den binære fil (det ægte program emacs) er gemt som / usr / bin / emacs.
  • Ikonfilen til emacs er gemt i /usr/share/icons/hicolor/{resolution}/apps/emacs24.{png|svg}. Vi kender disse oplysninger fra emacs24-common_24.4 + 1-4ubuntu5_all.deb pakken. Dette ikon er det, du ser i menuen, mens emacs er installeret i dit Debian-system.
  • Emacs desktopfilen er gemt som /usr/share/applications/emacs24.desktop. Vi kender disse oplysninger fra emacs24_24.4 + 1-4ubuntu5_i386.deb pakken.

*) info er GNU erstatning for mand. I et overforenkelt udtryk er der mand i UNIX, og der er information i GNU. Se http://www.gnu.org/software/texinfo/.

mand filer

ikon fil

3. Forholdet til dpkg

forudinstallere

Før du installerer en pakke, er kontrolfilen i en Debian-pakke faktisk leveret til dpkg. Udover det er programmet, der producerer Debian-pakken, faktisk "dpkg", mere præcist dpkg-deb.

Postinstall

Når du har installeret en pakke, kopieres indholdet af kontrolfilen til dpkg database / var / lib / dpkg / statusfil. Når du f.eks. Installerer emacs_46.1_all.deb ovenfor, ser vi indholdet af dpkg-statusfilen på linje 16624:

Du kan se indholdet er meget ens med den nævnte kontrolfil. dpkg læser kontrolfilen, gør mange andre job og kopierer kontrolfilindhold til sin lokale database. Denne database er en oversigt over alle installerede pakker i systemet. Det betyder, at denne database er en samling af alle kontrolfiler fra alle pakker installeret. I vores Ubuntu 15.04-system varer denne database lange 43387 linjer.
Der er ikke to installerede Debian-systemer, som deler nøjagtig samme dpkg-status, men alle Debian-brugere vil have forskellige indhold i deres dpkg-statuser, undtagen de friske installerede. Fordi det er næsten umuligt, vil de altid installere nøjagtig samme pakker over tid. Kort sagt, sådan fungerer dpkg.

4. Forhold med apt

apt har nogle "ledsagere". Blandt dem er apt-get og apt-cache. Ud over disse har apt stadig mange flere ledsagere. Vi kan analysere forholdene i begrænset to aspekter.

apt-get

Et af jobsne med apt-get er at downloade Debian-pakken. Den mest kendte kommando sudo apt-get installer overfører alle Debian-pakkerne fra fjernlager til lokal mappe / var / cache / apt / archives /. Dette er apt cache-bibliotek. Hvis du leder efter alle dine gemte .deb filer (ved hjælp af apt-get), se denne mappe.

apt-cache

apt-cache er et program til at forespørge apt-databasen. Apt-databasen er placeret på / var / lib / apt / lists /. Denne mappe indeholder mange tekstfiler i stor størrelse. Hvad er indholdet af dem? For eksempel er dette et eksempel fra arkiv.ubuntu.com_ubuntu_dists_vivid_main_binary-i386_Packages-filen. Ja, filnavnet er faktisk langt.

Du kan se, at emacs emacs_46.1_all.deb pakke metadata er indeholdt her. Disse oplysninger er stort set ens med kontrolindhold i emacs_46.1_all.deb. Og apt-get bruger disse oplysninger til at søge pakke og for at løse afhængighed.

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.