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:
- auto: angi en pakke som automatisk installert
- hold: hold den nåværende versjonen av pakken
- manual: angi en pakke som manuelt installert
- showauto: viser de automatisk installerte pakkene
- showmanual: viser de manuelt installerte pakkene
- showhold: liste opp pakkene som er på vent
- unhold: fjern holdflagget for den gitte pakken
For å liste opp alle manuelt installerte pakker, gi denne kommandoen:
$ apt-mark showmanualabiword
abs-guide
ack-grep
acl
acpi
..
$
For å holde en pakkeversjon, bruk underkommandoen 'hold'. Eksemplet nedenfor viser dette for pakken 'mc'.
# apt-mark hold mcmc satt på vent
#
Underkommandoen 'showhold' lister opp pakkene som er på vent (i vårt tilfelle er det bare pakken 'mc'):
# apt-mark showholdmc
#
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 Avhengergconf-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 avhengerAvhenger: 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 xpdfxpdf
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 xpdfxpdf
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 xpdfLeseliste ... 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.pngI 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 xpdfxpdf
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 checkLeseliste ... 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
- Axel Beckert, Frank Hofmann: Das Debian-Paketmanagement-Buch, https: // www.dpmb.org /