För Debian GNU / Linux hänvisar detta till verktygen apt, apt-get, aptitude, apt-cache, apt-depends, apt-rdepends, dpkg-deb och apt-mark.
Tillgänglighet för programvarupaket
Som redan nämnts ovan består en Linux-distribution av massor av olika programvarupaket. Från och med idag är programvaran ganska komplex, och det är därför det är vanligt att dela upp programvara i flera enskilda paket. Dessa paket kan kategoriseras efter funktionalitet eller efter roll som binära paket, bibliotek, dokumentation, användningsexempel samt språkspecifika samlingar och tillhandahåller endast en vald del av programvaran. Det finns ingen fast regel för det, och uppdelningen görs av antingen utvecklingsgruppen för ett verktyg eller pakethållaren som tar hand om mjukvarupaketet för din Linux-distribution. Med hjälp av aptitude, visar figur 1 de paket som innehåller översättningarna för de olika språken för webbläsaren Mozilla Firefox.
Figur 1: aptitude-Firefox.png
Detta sätt att arbeta gör det möjligt att varje paket kan underhållas av en annan utvecklare eller som ett helt team. Dessutom gör uppdelningen i enskilda komponenter andra programvarupaket att använda den för sina egna ändamål. En nödvändig funktionalitet kan tillämpas och behöver inte uppfinnas på nytt.
Paketorganisation
Pakethanteringsverktygen på Debian GNU / Linux-distributionen tar hela tiden hand om att beroendet hos de installerade paketen uppfylls helt. Detta är särskilt fallet om ett programvarupaket är tänkt att installeras, uppdateras eller raderas på eller från ditt system. Saknade paket läggs till i systemet eller installerade paket tas bort från systemet om de inte längre behövs. Figur 2 visar detta för att ta bort paketet 'mc-data' med hjälp av 'apt-get'. Paketet 'mc-data' rekommenderar också att paketet 'mc' automatiskt tas bort, eftersom det inte är vettigt att installera mer utan 'mc-data'.
Figur 2: apt-get-remove-mc.png
Paketmärken och flaggor
Under sitt arbete respekterar pakethanteringsverktygen de paketflaggor och märken som är inställda. De ställs in antingen automatiskt eller ställs in manuellt av systemadministratören. Särskilt detta beteende hänvisar till flaggan "väsentligt paket" som är inställt för paket som inte ska tas bort. En tydlig varning ges innan du gör det (se figur 3).
Figur 3: apt-get-remove.png
Dessutom beaktas de tre märkena 'automatisk', 'manuell' och 'håll'. De markerar ett paket som automatiskt installerat, manuellt installerat eller inte behöver uppdateras (håll den aktuella versionen). Ett mjukvarupaket är antingen märkt 'automatiskt' eller 'manuellt' men inte båda.
Bland annat hanterar kommandot "apt-mark" märkena och flaggorna med hjälp av följande underkommandon:
- auto: ställa in ett paket som automatiskt installerat
- håll: håll den aktuella versionen av paketet
- manual: ställa in ett paket som manuellt installerat
- showauto: visa de automatiskt installerade paketen
- showmanual: visa de manuellt installerade paketen
- showhold: lista de paket som är i väntan
- ta bort: ta bort hållflaggan för det givna paketet
För att lista alla manuellt installerade paket utfärdar detta kommando:
$ apt-mark showmanualabiword
abs-guide
ack-grep
acl
acpi
..
$
För att hålla en paketversion, använd underkommandot "håll". Exemplet nedan visar detta för paketet 'mc'.
# apt-mark håll mcmc satt i vänteläge
#
Underkommandot "showhold" listar paketen som är i väntan (i vårt fall är det bara paketet "mc"):
# apt-mark showholdmc
#
Med hjälp av en alternativ metod med titeln "apt pinning" klassificeras paket efter prioriteringar. Apt tillämpar dem för att bestämma hur det här programvarupaketet ska hanteras och de versioner som finns tillgängliga från programvaruförvaret.
Paketbeskrivning
Med hjälp av en alternativ metod med titeln "apt pinning" klassificeras paket efter prioriteringar. Apt tillämpar dem för att avgöra hur detta programvarupaket ska hanteras och de versioner som finns tillgängliga från programvaruförvaret.
Varje mjukvarupaket har sin egen paketbeskrivning som är standardiserad. Bland andra fält specificeras uttryckligen vilka ytterligare paket det beror på. Distributionsspecifika verktyg extraherar denna information från paketbeskrivningen och beräknar och visualiserar beroenden för dig. Nästa exempel använder kommandot "apt-cache show" för att visa paketbeskrivningen för paketet "poppler-utils" (se figur 4).
Figur 4: paketbeskrivning-poppler-utils.png
Paketbeskrivningen innehåller ett avsnitt som heter 'Beror'. I det här avsnittet listas de andra mjukvarupaket plus versionsnummer som det aktuella paketet beror på. I figur 4 är detta avsnitt inramat i rött och visar att 'poppler-utils' beror på paketen 'libpoppler64', 'libc6', 'libcairo2', 'libfreetype6', 'liblcms2-2', 'libstdc ++ 6' och 'zlib1g'.
Visa paketberoenden
Att läsa paketbeskrivningen är det svåraste sättet att räkna ut paketberoenden. Därefter visar vi dig hur du förenklar detta.
Det finns flera sätt att visa paketberoenden på kommandoraden. För ett deb-paket som en lokal fil, använd kommandot 'dpkg-deb' med två parametrar - filnamnet på paketet och nyckelordet 'Beror'. Exemplet nedan visar detta för paketet 'skypeforlinux-64.deb ':
$ dpkg-deb -f Nedladdningar / skypeforlinux-64.deb Berorgconf-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), libxkomposit1 (> = 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)
$
För att göra detsamma för ett installerat paket använd 'apt-cache'. Det första exemplet kombinerar underkommandot 'visa' följt av namnet på paketet. Utgången skickas till kommandot 'grep' som filtrerar raden 'Beror':
$ apt-cache visar xpdf | grep beror påBeror på: libc6 (> = 2.4), libgcc1 (> = 1: 4.1.1), libpoppler46 (> = 0.26.2),
libstdc ++ 6 (> = 4.1.1), libx11-6, libxm4 (> = 2.3.4), libxt6
$
Kommandot 'grep-status -F-paket -s beror på xpdf' rapporterar samma information.
Mer specifikt använder det andra exemplet igen 'apt-cache' men med underkommandot 'beror' istället. Underkommandot följs av namnet på paketet:
$ apt-cache beror på xpdfxpdf
Beror på: libc6
Beror på: libgcc1
Beror på: libpoppler46
Beror på: libstdc ++ 6
Beror på: libx11-6
Beror på: libxm4
Beror på: libxt6
Rekommenderar: poppler-utils
poppler-utils: i386
Rekommenderar: poppler-data
Rekommenderar: gsfonts-x11
Rekommenderar: koppar-bsd
koppar-bsd: i386
Kolliderar med:
Kolliderar med:
Kolliderar med:
Kolliderar med:
Ersätter:
Ersätter:
Ersätter:
Ersätter:
Kolliderar med: xpdf: i386
$
Listan ovan är ganska lång och kan förkortas med omkopplaren '-i' (förkortning för '-viktig'):
$ apt-cache beror på -i xpdfxpdf
Beror på: libc6
Beror på: libgcc1
Beror på: libpoppler46
Beror på: libstdc ++ 6
Beror på: libx11-6
Beror på: libxm4
Beror på: libxt6
$
Kommandot 'apt-rdepends' gör detsamma men med versioninformation om det anges i beskrivningen:
$ apt-rdepends xpdfLäsning av paketlistor ... Klar
Byggnadsberoende träd
Läser information om tillstånd ... Klar
xpdf
Beror på: libc6 (> = 2.4)
Beror på: libgcc1 (> = 1: 4.1.1)
Beror på: libpoppler46 (> = 0.26.2)
Beror på: libstdc ++ 6 (> = 4.1.1)
Beror på: libx11-6
Beror på: libxm4 (> = 2.3.4)
Beror på: libxt6
libc6
Beror på: libgcc1
..
$
Kommandot "aptitude" fungerar också med switchar. För beroenden, använd omkopplaren '~ R' följt av paketets namn. Figur 5 visar detta för paketet 'xpdf'. Bokstaven 'A' i den andra kolumnen i utgången från 'aptitude' identifierar paketet som automatiskt installerat.
Figur 5: aptitude-r beror på.png
Paketberoende kan vara lite knepigt. Det kan hjälpa att visa paketberoende grafiskt. Använd kommandot 'skuldavgift' följt av paketets namn för att skapa en grafisk representation av paketberoenden. Verktyget "dot" från Graphviz-paketet förvandlar beskrivningen till en bild enligt följande:
$ debtree xpdf | dot -Tpng> diagram.pngI figur 6 ser du den skapade PNG-bilden som innehåller beroendediagrammet.
Figur 6: prick.png
Visa omvända beroenden
Hittills visade vi att vi har svarat på frågan vilka paket som krävs för ett paket. Det finns också tvärtom - så kallade omvända beroenden. Nästa exempel handlar om paketet och paketen som är beroende av det. Exempel nummer ett använder 'apt-cache' med underkommandot 'rdepends' enligt följande:
$ apt-cache rdepends xpdfxpdf
Omvänd beror på:
| oktav-doc
xpdf: i386
libfontconfig1: i386
| xmds-doc
xfe
wiipdf
| vim-latexsuite
python-scapy
| ruby-tioga
| python-tables-doc
| sida-crunch
| oktav-doc
| muttprint-manual
mozplugger
mlpost
libmlpost-ocaml-dev
..
$
Paket som är beroende av andra paket är markerade med en rörsymbol. Dessa paket behöver inte installeras på ditt system utan måste listas i paketdatabasen.
Nästa exempel använder 'aptitude' för att lista de paket som har en hård referens till paketet 'xpdf' (se figur 7).
Figur 7: aptitude-search.png
Validera installationen för saknade paket
'Apt-get' erbjuder underkommandot 'check' som gör det möjligt att validera installationen. Om du ser följande utdata saknas inga paket:
# apt-get checkLäsning av paketlistor ... Klar
Byggnadsberoende träd
Läser information om tillstånd ... Klar
#
Slutsats
Att hitta paketberoenden fungerar bra med rätt verktyg. Att använda dem ordentligt hjälper dig att förstå varför paket installeras och vilka som kan saknas.
Länkar och referenser
- Axel Beckert, Frank Hofmann: Das Debian-Paketmanagement-Buch, https: // www.dpmb.org /