Debian

Avhengighet av Debian-pakken

Avhengighet av Debian-pakken
For Linux-distribusjoner som Debian GNU / Linux, finnes det mer enn 60.000 forskjellige programvarepakker. Alle har en bestemt rolle. I denne artikkelen forklarer vi hvordan pakkestyring pålitelig administrerer dette enorme antallet programvarepakker under en installasjon, en oppdatering eller en fjerning for å holde systemet i orden og helt stabilt.

For Debian GNU / Linux refererer dette til verktøyene apt, apt-get, aptitude, apt-cache, apt-depends, apt-rdepends, dpkg-deb og apt-mark.

Tilgjengelighet av programvarepakker

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

Figur 1: aptitude-firefox.png

Denne måten å jobbe på gjør det mulig at hver pakke kan vedlikeholdes av en annen utvikler eller som et helt team. Videre gjør inndelingen i enkeltkomponenter også at andre programvarepakker kan bruke den til egne formål. En nødvendig funksjonalitet kan brukes og trenger ikke å bli oppfunnet på nytt.

Pakkeorganisasjon

Pakkehåndteringsverktøyene på Debian GNU / Linux-distribusjonen tar hele tiden vare på at avhengighetene til de installerte pakkene blir oppfylt helt. Dette er spesielt tilfelle hvis en programvarepakke er ment å installeres, oppdateres eller slettes 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 demonstrerer dette for fjerning av pakken 'mc-data' ved hjelp av 'apt-get'. Pakken 'mc-data' anbefaler også å fjerne pakken 'mc' automatisk, fordi det ikke gir mening lenger å bli installert uten 'mc-data'.

Figur 2: apt-get-remove-mc.png

Pakkemerker og flagg

I løpet av arbeidet respekterer pakkestyringsverktøyene pakkeflaggene og merkene som er satt. De blir enten satt automatisk, eller angitt manuelt av systemadministratoren. Spesielt denne oppførselen refererer til flagget "essensiell pakke" som er satt for pakker som ikke skal fjernes. En klar advarsel blir gitt før du gjør det (se figur 3).

Figur 3: apt-get-remove.png

Også de tre merkene 'automatisk', 'manuell' og 'hold' tas i betraktning. De markerer en pakke som automatisk installert, manuelt installert eller ikke må oppdateres (hold den nåværende versjonen). En programvarepakke er enten merket 'automatisk' eller 'manuell', men ikke begge deler.

Kommandoen 'apt-mark' håndterer blant annet merkene og flaggene ved hjelp av følgende underkommandoer:

For å liste opp alle manuelt installerte pakker, gi 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' lister opp pakkene som er på vent (i vårt tilfelle er det bare pakken 'mc'):

# apt-mark showhold
mc
#

Ved hjelp av en alternativ metode med tittelen 'apt pinning', blir pakker klassifisert etter prioriteringer. Apt bruker dem for å bestemme hvordan du håndterer denne programvarepakken og versjonene som er tilgjengelige fra programvarelageret.

Pakkebeskrivelse

Ved hjelp av en alternativ metode med tittelen 'apt pinning', blir pakker klassifisert etter prioriteringer. Apt bruker dem for å bestemme hvordan du håndterer denne programvarepakken og versjonene som er tilgjengelige fra programvarelageret.

Hver programvarepakke leveres med sin egen pakkebeskrivelse som er standardisert. Blant andre felt spesifiserer denne beskrivelsen eksplisitt hvilken ytterligere pakke (r) den avhenger av. Distribusjonsspesifikke verktøy trekker ut denne informasjonen fra pakkebeskrivelsen, og beregner og visualiserer avhengighetene for deg. Det neste eksemplet bruker kommandoen 'apt-cache show' for å vise pakkebeskrivelsen for pakken 'poppler-utils' (se figur 4).

Figur 4: pakkebeskrivelse-poppler-utils.png

Pakkebeskrivelsen inneholder en seksjon kalt 'Avhenger'. Denne delen lister opp de andre programvarepakkene pluss versjonsnummeret som den nåværende pakken er avhengig av. I figur 4 er denne delen innrammet i rødt og viser at 'poppler-utils' avhenger av pakkene 'libpoppler64', 'libc6', 'libcairo2', 'libfreetype6', 'liblcms2-2', 'libstdc ++ 6' og 'zlib1g'.

Vis avhengighet av pakken

Å lese pakkebeskrivelsen er den vanskelige måten å finne ut avhengigheten til pakken. Deretter vil vi vise deg hvordan du kan forenkle dette.

Det er flere måter å vise pakkeavhengighet på kommandolinjen. For en deb-pakke som en lokal fil, bruk kommandoen 'dpkg-deb' med to parametere - filnavnet til pakken og nøkkelordet 'Depends'. 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),
libnspr4 (> = 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 underkommandoen "show" etterfulgt av navnet på pakken. Utgangen sendes til kommandoen 'grep' 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 xpdf' vil rapportere den samme informasjonen.

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

$ apt-cache avhenger av xpdf
xpdf
Avhenger: libc6
Avhenger: libgcc1
Avhenger: libpoppler46
Avhenger: libstdc ++ 6
Avhenger: libx11-6
Avhenger: libxm4
Avhenger: libxt6
Anbefaler: poppler-utils
poppler-utils: i386
Anbefaler: poppler-data
Anbefaler: gsfonts-x11
Anbefaler: kopper-bsd
kopper-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 med bryteren '-i' (forkortelse for '-viktig'):

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

Kommandoen 'apt-rdepends' gjør det samme, men med versjonsinformasjon hvis spesifisert i beskrivelsen:

$ apt-r avhenger av xpdf
Leseliste ... Ferdig
Bygge avhengighet tre
Les statusinformasjon ... Ferdig
xpdf
Avhenger: libc6 (> = 2.4)
Avhengig: 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 'aptitude' fungerer også med brytere. For avhengigheter, bruk bryteren '~ R' etterfulgt av navnet på pakken. Figur 5 viser dette for pakken 'xpdf'. Bokstaven 'A' i den andre kolonnen i utgangen av 'aptitude' identifiserer pakken som automatisk installert.

Figur 5: aptitude-r avhenger.png

Pakkeavhengighet 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 'prikk' fra Graphviz-pakken forvandler beskrivelsen til et bilde som følger:

$ gjeldsfri xpdf | dot -Tpng> graf.png

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

Figur 6: prikk.png

Vis omvendte avhengigheter

Inntil 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 handler om pakken så vel som pakkene som er avhengig av den. Eksempel nummer en bruker 'apt-cache' med underkommandoen 'r avhenger' som følger:

$ apt-cache rdepends xpdf
xpdf
Omvendt avhenger:
| oktav-dok
xpdf: i386
libfontconfig1: i386
| xmds-doc
xfe
wiipdf
| vim-latexsuite
python-scapy
| ruby-tioga
| python-tables-doc
| side-knase
| oktav-dok
| muttprint-manual
mozplugger
mlpost
libmlpost-ocaml-dev
..
$

Pakker som er avhengig av andre pakker er merket med et rør-symbol. Disse pakkene trenger ikke å installeres på systemet ditt, men må oppføres i pakkedatabasen.

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

Figur 7: egnethetssøk.png

Valider installasjonen for manglende pakker

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

# apt-get check
Leseliste ... Ferdig
Bygge avhengighet tre
Les statusinformasjon ... Ferdig
#

Konklusjon

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

Lenker og referanser

Beste spillkonsollemulatorer for Linux
Denne artikkelen vil liste opp populære programvare for spillkonsollemulering tilgjengelig for Linux. Emulation er et programvarekompatibilitetslag so...
Beste Linux Distros for spill i 2021
Linux-operativsystemet har kommet langt fra det originale, enkle, serverbaserte utseendet. Dette operativsystemet har forbedret seg enormt de siste år...
Hvordan fange opp og streame spilløkten din på Linux
Tidligere ble spill bare ansett som en hobby, men med tiden så spillindustrien en enorm vekst når det gjelder teknologi og antall spillere. Spillpubli...