Debian

Debians paketberoende

Debians paketberoende
För Linux-distributioner som Debian GNU / Linux finns det mer än 60.000 olika programvarupaket. Alla har en specifik roll. I den här artikeln förklarar vi hur pakethantering på ett tillförlitligt sätt hanterar detta enorma antal mjukvarupaket under en installation, en uppdatering eller borttagning för att hålla ditt system fungerande och helt stabilt.

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:

För att lista alla manuellt installerade paket utfärdar detta kommando:

$ apt-mark showmanual
abiword
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 mc
mc 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 showhold
mc
#

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 Beror
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.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å xpdf
xpdf
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 xpdf
xpdf
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 xpdf
Lä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.png

I 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 xpdf
xpdf
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 check
Lä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

Mus Hur man ändrar vänster och höger musknapp på Windows 10 PC
Hur man ändrar vänster och höger musknapp på Windows 10 PC
Det är en hel norm att alla datormusenheter är ergonomiskt utformade för högerhänta användare. Men det finns musenheter tillgängliga som är speciellt ...
Mus Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Att använda en mus eller tangentbord i fel hållning av överdriven användning kan resultera i många hälsoproblem, inklusive stam, karpaltunnelsyndrom o...
Mus Lägg till musgester i Windows 10 med dessa gratisverktyg
Lägg till musgester i Windows 10 med dessa gratisverktyg
Under senare år har datorer och operativsystem utvecklats kraftigt. Det fanns en tid då användare var tvungna att använda kommandon för att navigera g...