For Debian GNU / Linux refererer dette til værktøjerne apt, apt-get, aptitude, apt-cache, apt-depends, apt-rdepends, dpkg-deb og apt-mark.
Tilgængelighed af softwarepakker
Som allerede nævnt ovenfor består en Linux-distribution af masser af forskellige softwarepakker. Fra i dag er software ret kompliceret, og det er derfor, det er almindeligt at opdele software i flere enkeltpakker. Disse pakker kan kategoriseres efter funktionalitet eller efter rolle, såsom binære pakker, biblioteker, dokumentation, brugseksempler samt sprogspecifikke samlinger og giver kun en valgt del af softwaren. Der er ingen fast regel for det, og delingen foretages af enten udviklingsholdet af et værktøj eller pakkeholderen, der tager sig af softwarepakken til din Linux-distribution. Ved hjælp af aptitude viser figur 1 de pakker, der indeholder oversættelserne til de forskellige sprog til webbrowseren Mozilla Firefox.
Figur 1: aptitude-firefox.png
Denne måde at arbejde på gør det muligt, at hver pakke kan vedligeholdes af en anden udvikler eller som et helt team. Desuden giver opdeling i enkeltkomponenter også andre softwarepakker mulighed for at bruge det til deres egne formål. En påkrævet funktionalitet kan anvendes og behøver ikke at blive genopfundet.
Pakkeorganisation
Pakkehåndteringsværktøjerne på Debian GNU / Linux-distributionen sørger konstant for, at afhængigheden af de installerede pakker er opfyldt fuldstændigt. Dette er især tilfældet, hvis en softwarepakke er beregnet til at blive installeret, opdateret eller slettet på eller fra dit system. Manglende pakker føjes til systemet, eller installerede pakker fjernes fra systemet, hvis de ikke længere er påkrævet. Figur 2 demonstrerer dette til fjernelse af pakken 'mc-data' ved hjælp af 'apt-get'. Pakken 'mc-data' anbefaler også automatisk at fjerne pakken 'mc', fordi det ikke giver mening mere at blive installeret uden 'mc-data'.
Figur 2: apt-get-remove-mc.png
Pakkemærker og flag
Under arbejdet respekterer pakkehåndteringsværktøjerne de pakkeflag og -mærker, der er angivet. De indstilles enten automatisk eller indstilles manuelt af systemadministratoren. Især denne adfærd henviser til flag 'essentiel pakke', der er indstillet til pakker, der ikke skal fjernes. Der gives en klar advarsel, før du gør det (se figur 3).
Figur 3: apt-get-remove.png
Der tages også hensyn til de tre mærker 'automatisk', 'manuel' og 'hold'. De markerer en pakke som automatisk installeret, manuelt installeret eller ikke skal opdateres (hold den aktuelle version). En softwarepakke er enten mærket 'automatisk' eller 'manuel', men ikke begge.
Kommandoen 'apt-mark' håndterer blandt andet mærkerne og flagene ved hjælp af følgende underkommandoer:
- auto: indstil en pakke som automatisk installeret
- hold: hold den aktuelle version af pakken
- manual: indstil en pakke som manuelt installeret
- showauto: Vis de automatisk installerede pakker
- showmanual: Vis de manuelt installerede pakker
- showhold: angiver de pakker, der er i venteposition
- ophæv: fjern holdflaget for den givne pakke
For at liste alle de manuelt installerede pakker, udsted denne kommando:
$ apt-mark showmanualabiword
abs-guide
ack-grep
acl
acpi
..
$
For at holde en pakkeversion skal du bruge underkommandoen 'hold'. Eksemplet nedenfor viser dette for pakken 'mc'.
# apt-mark hold mcmc sat på hold
#
Underkommandoen 'showhold' viser de pakker, der er i venteposition (i vores tilfælde er det kun pakken 'mc'):
# apt-mark showholdmc
#
Ved hjælp af en alternativ metode med titlen 'apt pinning' klassificeres pakker efter prioriteter. Apt anvender dem for at beslutte, hvordan denne softwarepakke skal håndteres, og de versioner, der er tilgængelige fra softwarelageret.
Pakkebeskrivelse
Ved hjælp af en alternativ metode med titlen 'apt pinning' klassificeres pakker efter prioriteter. Apt anvender dem for at beslutte, hvordan denne softwarepakke skal håndteres, og de versioner, der er tilgængelige fra softwarelageret.
Hver softwarepakke leveres med sin egen pakkebeskrivelse, der er standardiseret. Blandt andre felter angiver denne beskrivelse eksplicit, hvilken yderligere pakke (r) den afhænger af. Distributionsspecifikke værktøjer udtrækker disse oplysninger fra pakkebeskrivelsen og beregner og visualiserer afhængighederne for dig. Det næste eksempel bruger kommandoen 'apt-cache show' for at vise pakkebeskrivelsen af pakken 'poppler-utils' (se figur 4).
Figur 4: pakkebeskrivelse-poppler-værktøjer.png
Pakkebeskrivelsen indeholder et afsnit kaldet 'Afhænger'. Dette afsnit viser de andre softwarepakker plus versionsnummer, som den aktuelle pakke afhænger af. I figur 4 er dette afsnit indrammet i rødt og viser, at 'poppler-utils' afhænger af pakkerne 'libpoppler64', 'libc6', 'libcairo2', 'libfreetype6', 'liblcms2-2', 'libstdc ++ 6' og 'zlib1g'.
Vis pakkeafhængigheder
Læsning af pakkebeskrivelsen er den svære måde at finde ud af pakkeafhængigheden. Dernæst viser vi dig, hvordan du forenkler dette.
Der er flere måder at vise pakkeafhængighederne på kommandolinjen. For en deb-pakke som en lokal fil skal du bruge kommandoen 'dpkg-deb' med to parametre - pakkens filnavn og nøgleordet 'Afhænger'. Eksemplet nedenfor viser dette for pakken 'skypeforlinux-64.deb ':
$ dpkg-deb -f Downloads / skypeforlinux-64.deb afhængergconf-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.13.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 at gøre det samme for en installeret pakke skal du bruge 'apt-cache'. Det første eksempel kombinerer underkommandoen 'show' efterfulgt af navnet på pakken. Outputtet sendes til kommandoen 'grep', der filtrerer linjen 'Afhænger':
$ apt-cache viser xpdf | grep afhængerAfhænger af: 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 afhænger af xpdf' rapporterer de samme oplysninger.
Mere specifikt bruger det andet eksempel igen 'apt-cache', men i stedet for underkommandoen 'afhænger'. Underkommandoen efterfølges af navnet på pakken:
$ apt-cache afhænger af xpdfxpdf
Afhænger: libc6
Afhænger: libgcc1
Afhænger af: libpoppler46
Afhænger af: libstdc ++ 6
Afhænger: libx11-6
Afhænger: libxm4
Afhænger: 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
$
Ovenstående liste er ret lang og kan forkortes ved hjælp af kontakten '-i' (forkortelse for '-vigtig'):
$ apt-cache afhænger -i xpdfxpdf
Afhænger: libc6
Afhænger: libgcc1
Afhænger af: libpoppler46
Afhænger af: libstdc ++ 6
Afhænger: libx11-6
Afhænger: libxm4
Afhænger: libxt6
$
Kommandoen 'apt-rdepends' gør det samme, men med versionoplysninger, hvis det er specificeret i beskrivelsen:
$ apt-r afhænger af xpdfLæsning af lister over pakker ... Udført
Bygning afhængighed træ
Læsning af tilstandsoplysninger ... Udført
xpdf
Afhænger af: libc6 (> = 2.4)
Afhænger af: libgcc1 (> = 1: 4.1.1)
Afhænger af: libpoppler46 (> = 0.26.2)
Afhænger af: libstdc ++ 6 (> = 4.1.1)
Afhænger: libx11-6
Afhænger af: libxm4 (> = 2.3.4)
Afhænger: libxt6
libc6
Afhænger: libgcc1
..
$
Kommandoen 'aptitude' fungerer også med switche. For afhængigheder skal du bruge kontakten '~ R' efterfulgt af navnet på pakken. Figur 5 viser dette for pakken 'xpdf'. Bogstavet 'A' i den anden kolonne i output af 'aptitude' identificerer pakken som automatisk installeret.
Figur 5: aptitude-r afhænger.png
Pakkeafhængigheder kan være lidt vanskelige. Det kan hjælpe med at vise pakkeafhængigheder grafisk. Brug kommandoen 'gældsaft' efterfulgt af navnet på pakken for at skabe en grafisk repræsentation af pakkeafhængighederne. Værktøjet 'prik' fra Graphviz-pakken omdanner beskrivelsen til et billede som følger:
$ gældsfri xpdf | dot -Tpng> graf.pngI figur 6 ser du det oprettede PNG-billede, der indeholder afhængighedsgrafen.
Figur 6: prik.png
Vis de omvendte afhængigheder
Indtil nu har vi vist, at vi har besvaret spørgsmålet, hvilke pakker der kræves for en pakke. Der er også omvendt - såkaldte omvendte afhængigheder. De næste eksempler beskæftiger sig med pakken såvel som de pakker, der afhænger af den. Eksempel nummer et bruger 'apt-cache' med underkommandoen 'rdepends' som følger:
$ apt-cache afhænger af xpdfxpdf
Omvendt afhænger:
| oktav-dok
xpdf: i386
libfontconfig1: i386
| xmds-doc
xfe
wiipdf
| vim-latexsuite
python-scapy
| ruby-tioga
| python-tabeller-doc
| side-crunch
| oktav-dok
| muttprint-manual
mozplugger
mlpost
libmlpost-ocaml-dev
..
$
Pakker, der afhænger af andre pakker, er markeret med et rørsymbol. Disse pakker behøver ikke at blive installeret på dit system, men skal vises i pakkedatabasen.
Det næste eksempel bruger 'aptitude' til at liste de pakker, der har en hård henvisning til pakken 'xpdf' (se figur 7).
Figur 7: aptitude-search.png
Valider installationen for manglende pakker
'Apt-get' tilbyder underkommandoen 'check', der gør det muligt at validere installationen. Hvis du ser følgende output, mangler der ingen pakker:
# apt-get checkLæsning af lister over pakker ... Udført
Bygning afhængighed træ
Læsning af tilstandsoplysninger ... Udført
#
Konklusion
At finde pakkeafhængigheder fungerer godt med de rigtige værktøjer. Brug af dem korrekt hjælper dig med at forstå, hvorfor pakker er installeret, og hvilke der muligvis mangler.
Links og referencer
- Axel Beckert, Frank Hofmann: Das Debian-Paketmanagement-Buch, https: // www.dpmb.org /