Debian -pakkeavhengigheter

Debian -pakkeavhengigheter
For Linux -distribusjoner som Debian Gnu/Linux, finnes det mer enn 60.000 forskjellige programvarepakker. Alle av dem har en spesifikk rolle. I denne artikkelen forklarer vi hvordan pakkestyringen pålitelig administrerer dette enorme antallet programvarepakker under en installasjon, en oppdatering eller en fjerning for å holde systemet ditt i arbeid og helt stabilt.

For Debian GNU/Linux refererer dette til verktøyene apt, apt-get, aptitude, apt-cache, apt-apends, apt-rDefs, dpkg-deb og apt-markering.

Tilgjengeligheten av programvarepakker

Som allerede sagt ovenfor, består en Linux -distribusjon av mange forskjellige programvarepakker. Per i dag er programvare ganske sammensatt, og det er derfor det er vanlig å dele programvare i flere enkeltpakker. Disse pakkene kan kategoriseres etter funksjonalitet eller etter rolle som binære pakker, biblioteker, dokumentasjon, brukseksempler samt språkspesifikke samlinger og gir en valgt del av programvaren, bare. Det er ingen fast regel for det, og divisjonen er gjort av verken utviklingsteamet til et verktøy, eller pakken vedlikeholder som tar seg av programvarepakken for Linux -distribusjonen din. Ved hjelp av evne, viser figur 1 pakkene som inneholder oversettelsene for de forskjellige språkene for webbrowser Mozilla Firefox.

Figur 1: Aptitude-Firefox.png

Denne måten å jobbe gjør det mulig at hver pakke kan opprettholdes av en annen utvikler eller som et helt team. Videre lar divisjonen i enkeltkomponenter andre programvarepakker å benytte seg av den til sine egne formål også. En nødvendig funksjonalitet kan brukes og trenger ikke å gjenoppfinnes.

Pakkeorganisasjon

Pakkeadministrasjonsverktøyene på Debian GNU/Linux -distribusjonen må hele tiden bry seg om at avhengighetene til de installerte pakkene er oppfylt fullstendig. Dette er spesielt tilfelle hvis en programvarepakke er ment å bli installert, oppdatert eller slettet på eller fra systemet ditt. Manglende pakker legges til systemet, eller installerte pakker fjernes fra systemet i tilfelle de ikke lenger er påkrevd. Figur 2 viser dette for fjerning av pakken 'MC-Data' ved bruk av 'apt-get'. Pakken 'MC-Data' anbefaler å automatisk fjerne pakken 'MC' også, fordi den ikke gir mening noe mer å installeres uten 'MC-Data'.

Figur 2: Apt-get-remove-MC.png

Pakkemerker og flagg

I løpet av sitt arbeid respekterer pakningsstyringsverktøyene pakken flagg og merker som er angitt. De settes enten automatisk, eller settes manuelt av systemadministratoren. Spesielt denne oppførselen refererer til flagget 'Essential Package' som er satt for pakker som ikke bør fjernes. Det blir gitt en klar advarsel før du gjør det (se figur 3).

Figur 3: Apt-get-Free.png

Også de tre merkene 'Automatic', 'Manual' og 'Hold' er tatt i betraktning. De markerer en pakke som automatisk installert, installert manuelt eller må ikke oppdateres (hold den gjeldende versjonen). En programvarepakke er enten merket 'automatisk' eller 'manuell', men ikke begge deler.

Blant andre håndterer kommandoen 'apt-markering' merkene og flaggene ved å bruke følgende underkommandoer:

  • Auto: Angi en pakke som automatisk installert
  • Hold: Hold den nåværende versjonen av pakken
  • Manual: Angi en pakke som manuelt installert
  • Showauto: Vis de automatisk installerte pakkene
  • Showmanual: Vis de manuelt installerte pakkene
  • Showhold: Liste opp pakkene som er på vent
  • Unhold: Fjern holdflagget for den gitte pakken

For å liste opp alle de manuelt installerte pakkene utsteder denne kommandoen:

$ APT-Mark Showmanual
Abiword
ABS-Guide
Ack-grep
ACL
ACPI
..
$

For å holde en pakkeversjon, bruk underkommandoen 'Hold'. Eksemplet nedenfor viser dette for pakken 'MC'.

# Apt-Mark Hold MC
MC satt på vent
#

Underkommandoen 'Showhold' viser pakkene som er på vent (i vårt tilfelle er det bare pakken 'MC', bare):

# Apt-Mark Showhold
MC
#

Ved hjelp av en alternativ metode med tittelen 'Apt Pinning', er pakker klassifisert etter prioriteringer. APT bruker dem for å bestemme hvordan de skal håndtere denne programvarepakken og versjonene som er tilgjengelige fra programvarepotet.

Pakkebeskrivelse

Ved hjelp av en alternativ metode med tittelen 'Apt Pinning', er pakker klassifisert etter prioriteringer. APT bruker dem for å bestemme hvordan de skal håndtere denne programvarepakken og versjonene som er tilgjengelige fra programvarepotet.

Hver programvarepakke har sin egen pakkebeskrivelse som er standardisert. Blant andre felt spesifiserer denne beskrivelsen eksplisitt hvilke pakker som den kommer an på. Distribusjonsspesifikke verktøy trekker ut denne informasjonen fra pakkebeskrivelsen, og beregner og visualiserer avhengighetene for deg, deretter. Det neste eksemplet bruker kommandoen 'Apt-Cache Show' for å vise pakkebeskrivelsen av pakken 'Poppler-UTILS' (se figur 4).

Figur 4: Pakke-beskrivelse-poppler-utiler.png

Pakkebeskrivelsen inneholder en seksjon som heter 'avhenger'. Denne delen viser de andre programvarepakkene pluss versjonsnummer som den gjeldende pakken avhenger av. I figur 4 er dette avsnittet innrammet i rødt og viser at 'Poppler-UTILS' avhenger av pakkene 'libpoppler64', 'libc6', 'libcairo2', 'libfreetype6', 'libcms2-2', 'libstdc ++ 6' og 'Zlib1g'.

Vis pakkeavhengighetene

Å lese pakkebeskrivelsen er den harde måten å finne ut av pakkenavhengighetene. Deretter vil vi vise deg hvordan du forenkler dette.

Det er flere måter å vise pakkeavhengighetene på kommandolinjen. For en DEB -pakke som en lokal fil, bruk kommandoen 'DPKG -DEB' med to parametere - filnavnet på pakken, og nøkkelordet 'avhenger'. Eksemplet nedenfor viser dette for pakken 'Skypeforlinux-64.Deb ':

$ dpkg-deb -f nedlastinger/Skypeforlinux-64.Deb avhenger
GCONF-Service, Libasound2 (> = 1.0.16), libatk1.0-0 (> = 1.12.4), libc6 (> = 2.17),
libcairo2 (> = 1.2.4), libcups2 (> = 1.4.0), libexpat1 (> = 2.0.1),
libfreetype6 (> = 2.4.2), libgcc1 (> = 1: 4.1.1), libgconf-2-4 (> = 3.2.5),
libgdk-pixbuf2.0-0 (> = 2.22.0), libglib2.0-0 (> = 2.31.8), libgtk2.0-0 (> = 2.24.0),
libnsp4 (> = 2: 4.9-2 ~), libnss3 (> = 2: 3.1. 3.4-2 ~), libpango-1.0-0 (> = 1.14.0),
libpangocairo-1.0-0 (> = 1.14.0), Libsecret-1-0 (> = 0.7), libv4l-0 (> = 0.5.0),
libx11-6 (> = 2: 1.4.99.1), libx11-xcb1, libxcb1 (> = 1.6), libxComposite1 (> = 1: 0.3-1),
libxcursor1 (>> 1.1.2), libxDamage1 (> = 1: 1.1), libxext6, libxfixes3,
libxi6 (> = 2: 1.2.99.4), libxrandr2 (> = 2: 1.2.99.3), libxRender1, libxss1,
libxtst6, apt-transport-https, libfontconfig1 (> = 2.11.0), libdbus-1-3 (> = 1.6.18),
libstdc ++ 6 (> = 4.8.1)
$

For å gjøre det samme for en installert pakke, bruk 'apt-cache'. Det første eksemplet kombinerer underkommando -showet 'etterfulgt av navnet på pakken. Utgangen sendes til 'grep' -kommandoen som filtrerer linjen 'avhenger':

$ apt-cache show xpdf | grep avhenger
Avhenger: libc6 (> = 2.4), libgcc1 (> = 1: 4.1.1), libpoppler46 (> = 0.26.2),
libstdc ++ 6 (> = 4.1.1), libx11-6, libxm4 (> = 2.3.4), libxt6
$

Kommandoen 'grep -status -f -pakke -s avhenger av at xpdf' vil rapportere den samme informasjonen.

Mer spesifikt, det andre eksemplet bruker igjen 'apt-cache', men med underkommandoen 'avhenger', i stedet. Underkommandoen blir fulgt av navnet på pakken:

$ apt-cache avhenger xpdf
xpdf
Avhenger: libc6
Avhenger: libgcc1
Avhenger: libpoppler46
Avhenger: libstdc ++ 6
Avhenger: libx11-6
Avhenger: libxm4
Avhenger: libxt6
Anbefaler: Poppler-utiler
Poppler-UTILS: I386
Anbefaler: Poppler-data
Anbefaler: GSFONTS-X11
Anbefaler: CUPS-BSD
CUPS-BSD: I386
Kolliderer med:
Kolliderer med:
Kolliderer med:
Kolliderer med:
Erstatter:
Erstatter:
Erstatter:
Erstatter:
Kolliderer med: xpdf: i386
$

Listen over er ganske lang, og kan forkortes ved å bruke bryteren '-i' (forkortelse for '-importerende'):

$ apt -cache avhenger -i xpdf
xpdf
Avhenger: libc6
Avhenger: libgcc1
Avhenger: libpoppler46
Avhenger: libstdc ++ 6
Avhenger: libx11-6
Avhenger: libxm4
Avhenger: libxt6
$

Kommandoen 'APT-RDEFIVER' gjør det samme, men med versjonsinformasjon hvis det er spesifisert i beskrivelsen:

$ APT-RDEFTS XPDF
Lesing av pakkelister ... ferdig
Bygningsavhengighetstre
Leser tilstandsinformasjon ... ferdig
xpdf
Avhenger: libc6 (> = 2.4)
Avhenger: libgcc1 (> = 1: 4.1.1)
Avhenger: libpoppler46 (> = 0.26.2)
Avhenger: libstdc ++ 6 (> = 4.1.1)
Avhenger: libx11-6
Avhenger: libxm4 (> = 2.3.4)
Avhenger: libxt6
libc6
Avhenger: libgcc1
..
$

Kommandoen 'egnethet' fungerer også med brytere. For avhengigheter, bruk bryteren '~ r' etterfulgt av navnet på pakken. Figur 5 viser dette for pakken 'xpdf'. Brevet 'A' i den andre kolonnen i utdataene fra 'aptitude' identifiserer pakken som automatisk installert.

Figur 5: Aptitude-RDEFIVER.png

Pakkeavhengigheter kan være litt vanskelig. Det kan hjelpe å vise pakkeavhengigheter grafisk. Bruk kommandoen 'DeBtree' etterfulgt av navnet på pakken for å lage en grafisk fremstilling av pakkeavhengighetene. Verktøyet 'Dot' fra GraphViz -pakken forvandler beskrivelsen til et bilde som følger:

$ DeBtree XPDF | Dot -tpng> Graf.png

I figur 6 ser du det opprettede PNG -bildet som inneholder avhengighetsgrafen.

Figur 6: DOT.png

Vis omvendte avhengigheter

Til nå har vi vist at vi har svart på spørsmålet hvilke pakker som kreves for en pakke. Det er også omvendt - såkalte omvendte avhengigheter. De neste eksemplene omhandler pakken så vel som pakkene som er avhengige av den. Eksempel nummer én bruker 'apt-cache' med underkommandoen 'rdepends' som følger:

$ apt-cache rdepends xpdf
xpdf
Omvendt avhenger:
| Octave-Doc
XPDF: I386
libfontconfig1: i386
| XMDS-DOC
xfe
wiipdf
| vim-latexsuite
Python-scapy
| Ruby-Tioga
| Python-Tables-Doc
| Sideknus
| Octave-Doc
| muttprint-manual
Mozplugger
mlpost
libmlpost-ocaml-dev
..
$

Pakker, som avhenger av andre pakker er merket med et rørsymbol. Denne pakken trenger ikke å installeres på systemet ditt, men må være oppført i pakkedatabasen.

Det neste eksemplet bruker 'egnethet' for å liste opp pakkene som har en hard referanse til pakken 'xpdf' (se figur 7).

Figur 7: Eventitude-søk.png

Valider installasjonen for manglende pakker

'Apt-get' tilbyr underkommando 'sjekk' som gjør det mulig å validere installasjonen. Hvis du ser følgende utgang, mangler ingen pakker:

# APT-Få sjekk
Lesing av pakkelister ... ferdig
Bygningsavhengighetstre
Leser tilstandsinformasjon ... ferdig
#

Konklusjon

Å finne pakkeavhengigheter fungerer bra med de riktige verktøyene. Å bruke dem hjelper deg å forstå hvorfor pakker er installert, og hvilke som kan mangle.

Lenker og referanser

  • Axel Beckert, Frank Hofmann: Das Debian-PaketManagement-Buch, https: // www.DPMB.org/