Kapitel 2. Debians pakethantering

Innehållsförteckning

2.1. Förutsättningar för Debians pakethantering
2.1.1. Debians system för pakethantering
2.1.2. Konfiguration av paket
2.1.3. Grundläggande försiktighetsåtgärder
2.1.4. Liv med eviga uppgraderingar
2.1.5. Grunderna i Debian-arkivet
2.1.6. Debian är 100% fri programvara
2.1.7. Beroenden av paket
2.1.8. Händelseflödet för pakethanteringen
2.1.9. Första svaret på problem med pakethantering
2.1.10. Hur man väljer Debian-paket
2.1.11. Hur man hanterar motstridiga krav
2.2. Grundläggande funktioner för pakethantering
2.2.1. apt mot apt-get / apt-cache mot aptitude
2.2.2. Grundläggande pakethanteringsoperationer med kommandoraden
2.2.3. Interaktiv användning av begåvning
2.2.4. Viktiga bindningar för lämplighet
2.2.5. Paketera visningar under aptitude
2.2.6. Sök metodalternativ med aptitude
2.2.7. Formeln för regex för lämplighet
2.2.8. Beroendeupplösning av lämplighet
2.2.9. Loggar över paketaktiviteter
2.3. Exempel på lämplighetsoperationer
2.3.1. Söker intressanta paket
2.3.2. Lista paket med regex-matchning på paketnamn
2.3.3. Bläddra med regex-matchning
2.3.4. Utrensning av borttagna paket för gott
2.3.5. Städning av status för automatisk/manuell installation
2.3.6. Systemomfattande uppgradering
2.4. Avancerade åtgärder för pakethantering
2.4.1. Avancerad pakethantering med kommandoraden
2.4.2. Verifiering av installerade paketfiler
2.4.3. Skydd för paketproblem
2.4.4. Sökning på paketets metadata
2.5. Interna funktioner för Debians pakethantering
2.5.1. Metadata för arkiv
2.5.2. "Release"-fil på högsta nivå och äkthet
2.5.3. "Release"-filer på arkivnivå
2.5.4. Hämtning av metadata för paketet
2.5.5. Paketstatus för APT
2.5.6. Paketstatus för aptitude
2.5.7. Lokala kopior av de hämtade paketen
2.5.8. Debian paket filnamn
2.5.9. Kommandot dpkg
2.5.10. Kommandot update-alternatives
2.5.11. Kommandot dpkg-statoverride
2.5.12. Kommandot dpkg-divert
2.6. Återhämtning från ett trasigt system
2.6.1. Misslyckad installation på grund av att beroenden saknas
2.6.2. Cachelagring av fel i paketdata
2.6.3. Inkompatibilitet med gammal användarkonfiguration
2.6.4. Olika paket med överlappande filer
2.6.5. Åtgärdar trasigt paketskript
2.6.6. Räddning med kommandot dpkg
2.6.7. Återställning av data för paketval
2.7. Tips för pakethantering
2.7.1. Vem laddade upp paketet?
2.7.2. Begränsning av nedladdningsbandbredd för APT
2.7.3. Automatisk nedladdning och uppgradering av paket
2.7.4. Uppdateringar och baksidor
2.7.5. Externa paketarkiv
2.7.6. Paket från blandade arkivkällor utan apt-pinning
2.7.7. Justera kandidatversionen med apt-pinning
2.7.8. Blockeringspaket installerade av "Recommends"
2.7.9. Spåra testing med vissa paket från unstable
2.7.10. Spårning unstable med vissa paket från experimental
2.7.11. Akut nedgradering
2.7.12. Equivs-paketet
2.7.13. Portering av ett paket till det stabila systemet
2.7.14. Proxyserver för APT
2.7.15. Mer läsning för pakethanteringen
[Notera] Notera

Detta kapitel är skrivet med antagandet att den senaste stabila versionen är codename: trixie.

APT-systemets datakälla kallas i detta dokument för källistan. Den kan definieras var som helst i filerna "/etc/apt/sources.list", "/etc/apt/sources.list.d/*.list" eller "/etc/apt/sources.list.d/*.sources".

Debian är en frivilligorganisation som bygger konsekventa distributioner av förkompilerade binära paket med fri programvara och distribuerar dem från sitt arkiv.

Debian-arkivet erbjuds av många fjärranslutna spegelsajter för åtkomst via HTTP- och FTP-metoder. Det finns också tillgängligt som CD-ROM/DVD.

Det nuvarande pakethanteringssystemet i Debian som kan utnyttja alla dessa resurser är Advanced Packaging Tool (APT).

Debians pakethanteringssystem, när det används på rätt sätt, erbjuder användaren att installera konsekventa uppsättningar av binära paket till systemet från arkivet. För närvarande finns det 74980 paket tillgängliga för arkitekturen amd64.

Debians pakethanteringssystem har en rik historia och många valmöjligheter för användarprogrammet i frontend och metoden för arkivåtkomst i backend som ska användas. För närvarande rekommenderar vi följande.

  • apt(8) för alla interaktiva kommandoradsoperationer, inklusive installation, borttagning och dist-uppgradering av paket.

  • apt-get(8) för att anropa Debians pakethanteringssystem från skript. Det är också ett reservalternativ när apt inte är tillgängligt (ofta med äldre Debian-system).

  • aptitude(8) för ett interaktivt textgränssnitt för att hantera de installerade paketen och söka efter tillgängliga paket.


[Varning] Varning

Installera inte paket från en slumpmässig blandning av sviter. Det bryter förmodligen paketkonsistensen som kräver djup kunskap om systemhantering, t.ex. kompilatorns ABI, biblioteksversion, tolkfunktioner etc.

Debian-systemadministratören som är nybörjare bör hålla sig till den stable stabila utgåvan av Debian och endast använda säkerhetsuppdateringar. Tills du förstår Debiansystemet mycket väl, bör du följa följande försiktighetsåtgärder.

  • Inkludera inte testing eller unstable i källistan.

  • Blanda inte standard Debian med andra icke-Debian-arkiv som Ubuntu i källistan.

  • Skapa inte "/etc/apt/preferences".

  • Ändra inte standardbeteendet för pakethanteringsverktyg via konfigurationsfiler utan att känna till de fullständiga konsekvenserna.

  • Installera inte slumpmässiga paket med "dpkg -i random_package".

  • Installera aldrig slumpmässiga paket med "dpkg --force-all -i random_package".

  • Radera eller ändra inte filer i "/var/lib/dpkg/".

  • Skriv inte över systemfiler genom att installera program som kompilerats direkt från källan.

    • Installera dem i "/usr/local" eller "/opt", om det behövs.

De icke-kompatibla effekter som orsakas av brott mot ovanstående försiktighetsåtgärder för Debians pakethanteringssystem kan göra ditt system obrukbart.

Den seriösa Debian-systemadministratören som driver verksamhetskritiska servrar bör vidta extra försiktighetsåtgärder.

  • Installera inte några paket, inklusive säkerhetsuppdateringar från Debian, utan att noggrant testa dem med din specifika konfiguration under säkra förhållanden.

    • I slutändan är det du som systemadministratör som är ansvarig för ditt system.

    • Debiansystemets långa stabilitetshistoria är ingen garanti i sig.

[Observera] Observera

För din produktionsserver rekommenderas den stable sviten med säkerhetsuppdateringar. Detsamma gäller för stationära datorer som du kan lägga begränsad tid på att administrera.

Trots mina varningar ovan vet jag att många läsare av detta dokument kanske vill köra de nyare testing eller unstable sviterna.

Upplysning med följande räddar en person från den eviga karmiska kampen i uppgraderingshelvetet och låter honom nå Debian-nirvana.

Denna lista är avsedd för den självadministrerade Desktop-miljön.

  • Använd testing eftersom den praktiskt taget är den rullande utgåvan som automatiskt hanteras av Debianarkivets QA-infrastruktur, såsom Debians kontinuerliga integration, praxis för uppladdning av endast källkod och spårning av biblioteksövergångar. Paketen i testing uppdateras tillräckligt ofta för att erbjuda alla de senaste funktionerna.

  • Ange kodnamnet som motsvarar testing ( "forky;" under utgivningscykeln trixie as stable ) i källistan.

  • Uppdatera kodnamnet i källistan manuellt till det nya kodnamnet först efter att du själv har utvärderat situationen i ungefär en månad efter att den stora sviten har släppts. Debians sändlista för användare och utvecklare är också bra informationskällor för detta.

Det är inte rekommenderat att använda den unstable sviten. Den unstable sviten är bra för att felsöka paket som utvecklare men tenderar att utsätta dig för onödiga risker vid normal användning på skrivbordet. Även om Debiansystemets unstable -svit för det mesta ser mycket stabil ut, har det förekommit en del paketproblem och några av dem var inte så triviala att lösa.

Här är några grundläggande försiktighetsåtgärder för att säkerställa snabb och enkel återhämtning från buggar i Debian-paket.

  • Gör systemet dubbelstartbart genom att installera den stable delen av Debian-systemet på en annan partition

  • Ha installations-CD:n till hands för räddningsstarten

  • Överväg att installera apt-listbugs för att kontrollera informationen i Debian Bug Tracking System (BTS) före uppgraderingen

  • Lär dig infrastrukturen för paketsystemet tillräckligt för att kunna lösa problemet

[Observera] Observera

Om du inte kan göra någon av dessa försiktighetsåtgärder är du förmodligen inte redo för testing och de unstable sviterna.

[Tips] Tips

Debianarkivets officiella policy definieras i Debians policyhandbok, kapitel 2 - Debianarkivet.

Låt oss titta in i Debian-arkivet från en systemanvändares perspektiv.

En systemanvändare får tillgång till Debian-arkivet med hjälp av APT-systemet.

APT-systemet specificerar sin datakälla som källistan och den beskrivs i sources.list(5).

För systemet trixie med den typiska HTTP-åtkomsten ser källistan i enradig stil ut som följer:

deb http://deb.debian.org/debian/ trixie main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian/ trixie main non-free-firmware contrib non-free

deb http://security.debian.org/debian-security trixie-security main non-free-firmware contrib non-free
deb-src http://security.debian.org/debian-security trixie-security main non-free-firmware contrib non-free

Alternativt är motsvarande källista i deb822-style följande.

Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: trixie
Components: main non-free-firmware contrib non-free

Types: deb deb-src
URIs: http://security.debian.org/debian-security/
Suites: trixie-security
Components: main non-free-firmware contrib non-free

De viktigaste punkterna i källistan är följande.

  • Format med en rad

    • Dess definitionsfiler finns i filerna "/etc/apt/sources.list" och "/etc/apt/sources.list.d/*.list".

    • Varje rad definierar datakällan för APT-systemet.

    • Raden "deb" definierar de binära paketen.

    • Raden "deb-src" definierar källkodspaketen.

    • Det första argumentet är rot-URL:en för Debian-arkivet.

    • Det andra argumentet är distributionsnamnet med antingen svitnamnet eller kodnamnet.

    • Det tredje och följande argumenten är en lista över giltiga namn på arkivområden i Debian-arkivet.

  • Deb822-liknande format

    • Dess definitionsfiler finns i filerna "/etc/apt/sources.list.d/*.sources".

    • Varje block av rader som åtskiljs av en blankrad definierar datakällan för APT-systemet.

    • I strofen "Types:" definieras listan över typer, t.ex. "deb" och "deb-src".

    • Stanza "URIs:" definierar listan med rot-URI:er för Debian-arkivet.

    • I strofen "Suites:" definieras listan över distributionsnamn med hjälp av antingen svitnamnet eller kodnamnet.

    • Stanza "Components:" definierar listan över giltiga namn på arkivområden i Debian-arkivet.

Definitionen för "deb-src" kan säkert utelämnas om det bara är för aptitude som inte har tillgång till källrelaterade metadata. Det påskyndar uppdateringarna av arkivets metadata.

URL:en kan vara "https://", "http://", "ftp://", "file://", ....

Rader som börjar med "#" är kommentarer och ignoreras.

Här brukar jag använda kodnamnet "trixie" eller "forky" istället för svitnamnet "stable" eller "testing" för att undvika överraskningar när nästa stable släpps.

[Tips] Tips

Om "sid" används i exemplet ovan istället för "trixie", krävs inte raden "deb: http://security.debian.org/ ..." eller dess deb822-ekvivalenta innehåll för säkerhetsuppdateringar i källistan. Detta beror på att det inte finns något arkiv med säkerhetsuppdateringar för "sid"(unstable).

Här är listan över URL-adresser till Debians arkivplatser och svitnamn eller kodnamn som används i konfigurationsfilen efter trixie -utgåvan.


[Observera] Observera

Endast ren stable version med säkerhetsuppdateringar ger den bästa stabiliteten. Att köra mestadels stable utgåva blandat med några paket från testing eller unstable utgåva är mer riskfyllt än att köra en ren unstable utgåva där biblioteksversioner inte stämmer etc. Om du verkligen behöver den senaste versionen av vissa program under stable utgåva, använd paket från tjänsterna stable-updates och backports (se Avsnitt 2.7.4, ”Uppdateringar och baksidor”). Dessa tjänster måste användas med extra försiktighet.

[Observera] Observera

Du bör i princip bara ange en av sviterna stable, testing eller unstable i "deb"-raden. Om du listar en kombination av stable, testing och unstable sviter på "deb"-raden blir APT-programmen långsammare och endast det senaste arkivet är effektivt. Multipel listning är meningsfullt för dessa när filen "/etc/apt/preferences" används med tydliga mål (se Avsnitt 2.7.7, ”Justera kandidatversionen med apt-pinning).

[Tips] Tips

För Debian-systemet med den stable sviten är det en bra idé att inkludera innehållet med "http://security.debian.org/" i källistan för att aktivera säkerhetsuppdateringar som i exemplet ovan.

[Notera] Notera

Säkerhetsbuggarna för det stable arkivet åtgärdas av Debians säkerhetsteam. Denna aktivitet har varit ganska rigorös och pålitlig. De för testing-arkivet kan åtgärdas av Debians säkerhetsteam för testing. Av flera skäl är denna aktivitet inte lika rigorös som den för stable och du kan behöva vänta på att fixade unstable paket flyttas till testing-arkivet. De för det unstable arkivet fixas av den individuella underhållaren. Aktivt underhållna unstable paket är vanligtvis i ganska gott skick genom att de utnyttjar de senaste säkerhetsfixarna uppströms. Se Debians FAQ om säkerhet för hur Debian hanterar säkerhetsbuggar.


Här är antalet paket i ovanstående för arkitekturen amd64. Området main tillhandahåller Debian-systemet (se Avsnitt 2.1.6, ”Debian är 100% fri programvara”).

Debians arkivorganisation kan studeras bäst genom att rikta webbläsaren mot varje arkiv-URL med dists eller pool som tillägg.

Distributionen benämns på två sätt, sviten eller kodnamnet. Ordet distribution används alternativt som synonym till sviten i många dokumentationer. Förhållandet mellan sviten och kodnamnet kan sammanfattas enligt följande.


Kodnamnens historia beskrivs i Debians FAQ: 6.2.1 Vilka andra kodnamn har använts tidigare?

I den striktare Debian-arkivterminologin används ordet "section" specifikt för kategorisering av paket efter tillämpningsområde. (Även om ordet "huvudavsnitt" ibland kan användas för att beskriva Debian-arkivets område med namnet "main")

Varje gång en ny uppladdning görs av en Debian-utvecklare (DD) till det unstable arkivet (via inkommande bearbetning), måste DD säkerställa att de uppladdade paketen är kompatibla med den senaste uppsättningen paket i det senaste unstable arkivet.

Om DD bryter denna kompatibilitet avsiktligt för en viktig biblioteksuppgradering etc., finns det vanligtvis ett meddelande på sändlistan debian-devel etc.

Innan en uppsättning paket flyttas av Debians arkivunderhållsskript från det unstable arkivet till testarkivet, kontrollerar arkivunderhållsskriptet inte bara paketens mognadsgrad (ca 2-10 dagar gamla) och status för RC-buggrapporterna, utan försöker också se till att de är kompatibla med den senaste uppsättningen paket i testarkivet. Denna process gör testarkivet mycket aktuellt och användbart.

Genom den gradvisa arkivfrysningsprocessen som leds av releaseteamet mognar testing så att det blir helt konsekvent och buggfritt med vissa manuella ingrepp. Därefter skapas den nya stable utgåvan genom att kodnamnet för det gamla arkivet testing tilldelas det nya stable arkivet och det nya kodnamnet skapas för det nya arkivet testing. Det ursprungliga innehållet i det nya arkivet testing är exakt detsamma som i det nyutgivna stable arkivet.

Både de unstable och de testande arkiven kan drabbas av tillfälliga störningar på grund av flera faktorer.

  • Uppladdning av trasiga paket till arkivet (mest för unstable)

  • Fördröjning av att acceptera nya paket i arkivet (mest för unstable)

  • Problem med timing för arkivsynkronisering (både för testing och unstable)

  • Manuella ingrepp i arkivet, t.ex. borttagning av paket (mer för testing) etc.

Så om du någonsin bestämmer dig för att använda dessa arkiv bör du kunna fixa eller arbeta runt den här typen av problem.

[Observera] Observera

Under några månader efter en ny stable version bör de flesta datoranvändare använda det stable arkivet med dess säkerhetsuppdateringar, även om de vanligtvis använder unstable arkiv eller testing. Under den här övergångsperioden är både unstable arkiv och testing inte bra för de flesta. Ditt system är svårt att hålla i gott skick med det unstable arkivet eftersom det drabbas av stora uppgraderingar av kärnpaket. Testing-arkivet är inte heller användbart eftersom det innehåller i stort sett samma innehåll som det stable arkivet utan dess säkerhetsstöd(Debian testing-security-announce 2008-12). Efter en månad eller så kan unstable arkiv eller testing bli användbara om du är försiktig.

[Tips] Tips

Vid spårning av testarkivet kan ett problem som orsakas av ett borttaget paket vanligtvis lösas genom att installera motsvarande paket från det unstable arkivet som laddas upp för buggfixning.

Se Debians policyhandbok för arkivdefinitioner.

Debian är en 100% free programvara på grund av följande:

  • Debian installerar endast fri programvara som standard för att respektera användarnas friheter.

  • Debian tillhandahåller endast fri programvara i main.

  • Debian rekommenderar att man endast kör fri programvara från main.

  • Inga paket i main depend eller rekommenderar paket i non-free eller non-free-firmware eller contrib.

Vissa människor undrar om följande 2 fakta motsäger varandra eller inte.

Dessa motsäger inte varandra, på grund av följande.

  • Debian-systemet är 100% free och dess paket finns på Debian-servrar i main.

  • Paket utanför Debiansystemet finns på Debians servrar i områdena non-free, non-free-firmware och contrib.

Dessa förklaras exakt i de 4:e och 5:e villkoren i Debians sociala kontrakt:

  • Våra prioriteringar är våra användare och fri programvara

    • Vi kommer att vägledas av våra användares och den fria programvarugemenskapens behov. Vi kommer att sätta deras intressen först i våra prioriteringar. Vi kommer att stödja våra användares behov av drift i många olika typer av datormiljöer. Vi kommer inte att motsätta oss icke-fria verk som är avsedda att användas på Debiansystem, eller försöka ta ut en avgift av personer som skapar eller använder sådana verk. Vi kommer att tillåta andra att skapa distributioner som innehåller både Debiansystemet och andra verk, utan någon avgift från oss. För att främja dessa mål kommer vi att tillhandahålla ett integrerat system med material av hög kvalitet utan några juridiska restriktioner som skulle förhindra sådan användning av systemet.

  • Verk som inte uppfyller våra standarder för fri programvara

    • Vi är medvetna om att vissa av våra användare kräver användning av verk som inte överensstämmer med Debians riktlinjer för fri programvara. Vi har skapat områdena "non-free", "non-free-firmware" och "contrib" i vårt arkiv för dessa verk. Paketen i dessa områden är inte en del av Debiansystemet, även om de har konfigurerats för att användas med Debian. Vi uppmuntrar cd-tillverkare att läsa licenserna för paketen i dessa områden och avgöra om de kan distribuera paketen på sina cd-skivor. Även om icke-fria verk inte är en del av Debian, stöder vi deras användning och tillhandahåller infrastruktur för icke-fria paket (såsom vårt buggspårningssystem och våra e-postlistor). Debians officiella media kan innehålla inbyggd programvara som annars inte är en del av Debiansystemet för att möjliggöra användning av Debian med maskinvara som kräver sådan inbyggd programvara.

[Notera] Notera

Den faktiska texten i den 5:e termen i det nuvarande Debian Social Contract 1.2 skiljer sig något från ovanstående text. Denna redaktionella avvikelse är avsiktlig för att göra detta användardokument konsekvent utan att ändra det verkliga innehållet i det sociala kontraktet.

Användare bör vara medvetna om riskerna med att använda paket i områdena non-free, non-free-firmware och contrib:

  • brist på frihet för sådana programvarupaket

  • brist på stöd från Debian för sådana programpaket (Debian kan inte stödja programvara på rätt sätt utan att ha tillgång till källkoden)

  • kontaminering av ditt 100% free Debian-system

Debians riktlinjer för fri programvara är standarderna för fri programvara för Debian. Debian tolkar "programvara" i vidaste bemärkelse, inklusive dokument, inbyggd programvara, logotyp och illustrationer i paketet. Detta gör Debians standarder för fri programvara mycket strikta.

Typiska paket för non-free, non-free-firmware och contrib inkluderar fritt distribuerbara paket av följande typer:

  • Dokumentpaket under GNU Free Documentation License med invarianta avsnitt som de för GCC och Make. (finns mestadels i avsnittet non-free/doc.)

  • Firmwarepaket som innehåller binär data utan källa, t.ex. de som listas i Avsnitt 9.10.5, ”Drivrutiner för hårdvara och firmware” som non-free-firmware. (finns oftast i avsnittet non-free-firmware/kernel.)

  • Spel- och typsnittspaket med restriktioner för kommersiell användning och/eller ändring av innehåll.

Observera att antalet paket i non-free-, non-free-firmware- och contrib är mindre än 2% jämfört med antalet i main. Att ge tillgång till områdena non-free, non-free-firmware och contrib döljer inte källan till paketen. Interaktiv helskärmsanvändning av aptitude(8) ger dig full insyn och kontroll över vilka paket som installeras från vilket område för att hålla ditt system så fritt som du önskar.

Debiansystemet erbjuder en konsekvent uppsättning binära paket genom sin mekanism för deklaration av binära beroendeversioner i kontrollfilsfälten. Här är en lite förenklad definition för dem.

  • "Depends"

    • Detta förklarar ett absolut beroende och alla paket som anges i detta fält måste installeras samtidigt eller i förväg.

  • "Pre-Depends"

    • Detta är som Depends, förutom att det kräver en fullständig installation av de listade paketen i förväg.

  • "Recommends"

    • Detta deklarerar ett starkt, men inte absolut, beroende. De flesta användare vill inte ha paketet om inte alla paket som anges i det här fältet är installerade.

  • "Suggests"

    • Detta deklarerar ett svagt beroende. Många användare av detta paket kan dra nytta av att installera paket som listas i detta fält men kan ha rimliga funktioner utan dem.

  • "Enhances"

    • Detta förklarar ett svagt beroende som Suggests men fungerar i motsatt riktning.

  • "Breaks"

    • Detta deklarerar en paketinkompatibilitet, vanligtvis med någon versionsspecifikation. Lösningen är i allmänhet att uppgradera alla paket som listas i detta fält.

  • "Conflicts"

    • Detta förklarar en absolut inkompatibilitet. Alla paket som anges i det här fältet måste tas bort för att installera det här paketet.

  • "Replaces"

    • Detta deklareras när filer som installeras av detta paket ersätter filer i de listade paketen.

  • "Provides"

    • Detta deklareras när detta paket innehåller alla filer och funktioner i de listade paketen.

[Notera] Notera

Observera att det är den sundaste konfigurationen att definiera "Provides", "Conflicts" och "Replaces" samtidigt för ett virtuellt paket. Detta säkerställer att endast ett verkligt paket som tillhandahåller detta virtuella paket kan installeras vid varje tillfälle.

Den officiella definitionen, inklusive källkodsberoende, finns i Policy Manual: Kapitel 7 - Deklaration av relationer mellan paket.

Här följer en sammanfattning av det förenklade händelseflödet för APT:s pakethantering.

Här har jag avsiktligt hoppat över tekniska detaljer för helhetsbildens skull.

Oavsett vilken svit av Debian-system du väljer att använda, kanske du ändå vill köra versioner av program som inte finns tillgängliga i den sviten. Även om du hittar binära paket av sådana program i andra Debian-sviter eller i andra icke-Debian-resurser, kan deras krav stå i konflikt med ditt nuvarande Debian-system.

Även om du kan justera pakethanteringssystemet med apt-pinning-teknik etc. som beskrivs i Avsnitt 2.7.7, ”Justera kandidatversionen med apt-pinning för att installera sådana osynkroniserade binära paket, har sådana justeringsmetoder endast begränsade användningsområden eftersom de kan förstöra dessa program och ditt system.

Innan du brutalt installerar sådana osynkroniserade paket bör du söka efter alla tillgängliga alternativa säkrare tekniska lösningar som är kompatibla med ditt nuvarande Debian-system.

Förvaringsbaserade pakethanteringsåtgärder i Debiansystemet kan utföras av många APT-baserade pakethanteringsverktyg som finns tillgängliga i Debiansystemet. Här förklarar vi 3 grundläggande pakethanteringsverktyg: apt, apt-get / apt-cache och aptitude.

Du måste ha root-behörighet för att kunna utföra pakethanteringsåtgärder som innebär paketinstallation eller uppdatering av paketmetadata.

Även om aptitude är ett mycket trevligt interaktivt verktyg som författaren huvudsakligen använder, bör du känna till några försiktiga fakta:

Kommandona apt-get och apt-cache är de mest grundläggande APT-baserade pakethanteringsverktygen.

  • apt-get och apt-cache erbjuder endast användargränssnittet för kommandoraden.

  • apt-get är mest lämpligt för större systemuppgraderingar mellan releaser etc.

  • apt-get erbjuder en robust lösning för paketberoenden.

  • apt-get är mindre krävande när det gäller hårdvaruresurser. Det förbrukar mindre minne och körs snabbare.

  • apt-cache erbjuder en standardregexbaserad sökning på paketets namn och beskrivning.

  • apt-get och apt-cache kan hantera flera versioner av paket med hjälp av /etc/apt/preferences men det är ganska besvärligt.

Kommandot apt är ett kommandoradsgränssnitt på hög nivå för pakethantering. Det är i grunden ett omslag för apt-get, apt-cache och liknande kommandon, ursprungligen avsett som ett gränssnitt för slutanvändare och aktiverar vissa alternativ som är bättre lämpade för interaktiv användning som standard.

  • apt tillhandahåller en vänlig förloppsindikator när du installerar paket med apt install.

  • apt kommer att ta bort cachade .deb-paket som standard efter lyckad installation av hämtade paket.

[Tips] Tips

Användare rekommenderas att använda det nya kommandot apt(8) för interaktiv användning och att använda kommandona apt-get(8) och apt-cache(8) i skalskriptet.

Kommandot aptitude är det mest mångsidiga APT-baserade verktyget för pakethantering.

  • aptitude erbjuder användargränssnittet för interaktiv text i fullskärm.

  • aptitude erbjuder även ett användargränssnitt för kommandoraden.

  • aptitude är mest lämpad för den dagliga interaktiva pakethanteringen, t.ex. kontroll av installerade paket och sökning efter tillgängliga paket.

  • aptitude är mer krävande när det gäller hårdvaruresurser. Den förbrukar mer minne och körs långsammare.

  • aptitude erbjuder en förbättrad regexbaserad sökning på alla paketets metadata.

  • aptitude kan hantera flera versioner av paket utan att använda /etc/apt/preferences och det är ganska intuitivt.

Här följer grundläggande åtgärder för pakethantering via kommandoraden med apt(8), aptitude(8) och apt-get(8) /apt-cache(8).

Tabell 2.6. Grundläggande pakethantering med kommandoraden med apt(8), aptitude(8) och apt-get(8) /apt-cache(8)

apt-syntax aptitude-syntax syntax för apt-get/apt-cache beskrivning
apt update aptitude update apt-get update uppdatera metadata för paketarkiv
apt install foo aptitude install foo apt-get install foo installera kandidatversionen av "foo"-paketet med dess beroenden
apt upgrade aptitude safe-upgrade apt-get upgrade installera kandidatversionen av installerade paket utan att ta bort några andra paket
apt full-upgrade aptitude full-upgrade apt-get dist-upgrade installera kandidatversionen av installerade paket samtidigt som andra paket tas bort vid behov
apt remove foo aptitude remove foo apt-get remove foo ta bort paketet "foo" och lämna kvar dess konfigurationsfiler
apt autoremove N/A apt-get autoremove ta bort automatiskt installerade paket som inte längre behövs
apt purge foo aptitude purge foo apt-get purge foo rensa paketet "foo" med dess konfigurationsfiler
apt clean aptitude clean apt-get clean tömma det lokala arkivet på hämtade paketfiler helt och hållet
apt autoclean aptitude autoclean apt-get autoclean rensa ut det lokala arkivet med hämtade paketfiler för föråldrade paket
apt show foo aptitude show foo apt-cache show foo visa detaljerad information om "foo" paketet
apt-sökning regex aptit sökning regex apt-cache sök regex sök paket som matchar regex
N/A aptit varför regex N/A förklara anledningen till att paket för regexmatchning bör installeras
N/A aptit varför inte regex N/A förklara orsaken till att paket för regexmatchning inte kan installeras
apt list --manual-installed aptitude search '~i!~M' apt-mark showmanual lista manuellt installerade paket

apt / apt-get och aptitude kan blandas utan större problem.

"aptitude why regex" kan lista mer information genom "aptitude -v why regex". Liknande information kan erhållas med "apt rdepends package" eller "apt-cache rdepends package".

När kommandot aptitude startas i kommandoradsläget och stöter på problem, t.ex. paketkonflikter, kan du växla till det interaktiva helskärmsläget genom att trycka på "e"-tangenten senare vid prompten.

[Notera] Notera

Även om kommandot aptitude har många funktioner, t.ex. en förbättrad paketlösare, har denna komplexitet orsakat (eller kan fortfarande orsaka) vissa regressioner, t.ex. fel #411123, fel #514930 och fel #570377. Om du är osäker bör du använda kommandona apt, apt-get och apt-cache i stället för kommandot aptitude.

Du kan ange kommandoalternativ direkt efter "aptitude".


Se aptitude(8) och "aptitude user's manual" på "/usr/share/doc/aptitude/README" för mer information.

Viktiga tangenttryckningar för att bläddra igenom status för paket och för att ange "planerad åtgärd" för dem i detta helskärmsläge är följande.


Filnamnsspecifikationen på kommandoraden och menyprompten efter att du har tryckt på "l" och "//" använder Aptitude regex enligt beskrivningen nedan. Aptitude regex kan uttryckligen matcha ett paketnamn med hjälp av en sträng som inleds med "~n" och följs av paketnamnet.

[Tips] Tips

Du måste trycka på "U" för att få alla installerade paket uppgraderade till kandidatversionen i det visuella gränssnittet. Annars uppgraderas endast de valda paketen och vissa paket med versionsberoende till dem till kandidatversionen.

I det interaktiva helskärmsläget för aptitude(8) visas paketen i paketlistan som i nästa exempel.

idA   libsmbclient                             -2220kB 3.0.25a-1  3.0.25a-2

Här betyder denna linje från vänster som följande.

  • Flaggan "nuvarande tillstånd" (den första bokstaven)

  • Flaggan för "planerad åtgärd" (den andra bokstaven)

  • Den "automatiska" flaggan (den tredje bokstaven)

  • Paketets namn

  • Förändringen i användningen av diskutrymme till följd av "planerad åtgärd"

  • Den aktuella versionen av paketet

  • Kandidatversionen av paketet

[Tips] Tips

Den fullständiga listan över flaggor finns längst ned på hjälpskärmen och visas genom att trycka på "?".

Kandidatversionen väljs enligt de aktuella lokala preferenserna (se apt_preferences(5) och Avsnitt 2.7.7, ”Justera kandidatversionen med apt-pinning).

Flera olika typer av paketvyer finns tillgängliga under menyn "Vyer".


Standardfunktionen "Package View" kategoriserar paket ungefär som dselect med några extra funktioner.


[Tips] Tips

Tasks-vyn kan användas för att välja ut paket för din uppgift.

Aptitude-regexformeln är mutt-liknande utökad ERE (se Avsnitt 1.6.2, ”Vanliga uttryck”) och betydelserna av de aptitude-specifika speciella matchningsregeltilläggen är följande.

Tabell 2.11. Lista över regexformeln för lämplighet

beskrivning av den utökade matchningsregeln regex-formel
matcha på förpackningsnamn ~nregex_namn
matcha på beskrivning ~dregex_beskrivning
matcha på uppgiftsnamn ~tregex_task
match på debtag ~Gregex_debtag
matcha på underhållare ~mregex_maintainer
match på paketavsnitt ~sregex_section
matcha på paketversion ~Vregex_version
matcharkiv ~A{trixie,forky,sid}
matcha ursprung ~O{debian,…}
matcha prioritet ~p{extra,important,optional,required,standard}
matcha viktiga paket ~E
matcha virtuella paket ~v
matcha nya paket ~N
matchning med pågående åtgärd ~a{install,upgrade,downgrade,remove,purge,hold,keep}
matcha installerade paket ~i
matcha installerade paket med A-märkning(automatiskt installerade paket) ~M
matcha installerade paket utan A-märkning(administratörsvalda paket) ~i!~M
matcha installerade och uppgraderingsbara paket ~U
match avlägsnade men inte rensade paket ~c
matchade borttagna, rensade eller kan tas bort paket ~g
matcha paket som deklarerar ett brutet beroende ~b
matcha paket som deklarerar brutna beroenden av typen ~Btype
matcha mönsterpaket som deklarerar beroende av typen ~D[type:]mönster
matcha mönsterpaket som deklarerar brutet beroende av typen ~DB[type:]mönster
matcha paket till vilka det mönstermatchande paketet deklarerar beroendetyp ~R[type:]mönster
matcha paket till vilka det mönstermatchande paketet deklarerar bruten beroendetyp ~RB[type:]mönster
matcha paket som vissa andra installerade paket är beroende av ~R~i
matcha paket som inga andra installerade paket är beroende av !~R~i
matcha paket som vissa andra installerade paket är beroende av eller rekommenderar ~R~i|~Rrekommenderar:~i
matcha mönsterpaket med filtrerad version ~S filtermönster
matcha alla paket (true) ~T
matcha inga paket (false) ~F

  • Regex-delen är samma ERE som används i typiska Unix-liknande textverktyg som använder "^", ".*", "$" etc. som i egrep(1), awk(1) och perl(1).

  • Beroendetypen är en av (depends, predepends, recommends, suggests, conflicts, replaces, provides) som anger paketets inbördes förhållande.

  • Standardberoendetypen är "depends".

[Tips] Tips

När regex_pattern är en nollsträng placeras "~T" omedelbart efter kommandot.

Här är några genvägar.

  • "~Pterm" == "~Dprovides:term"

  • "~Cterm" == "~Dkonflikter:term"

  • "…~W term" == "(…|term)"

Användare som är bekanta med mutt lär sig snabbt, eftersom mutt var inspirationen till uttryckssyntaxen. Se "SÖKNING, BEGRÄNSNING OCH UTTRYCK" i "Användarhandboken" "/usr/share/doc/aptitude/README".

[Notera] Notera

Med Lenny-versionen av aptitude(8) kan den nya långa syntaxen som "?broken" användas för regex-matchning i stället för den gamla korta motsvarigheten "~b". Nu betraktas mellanslagstecken " " som ett av regexens avslutande tecken utöver tilde-tecken "~". Se "Användarhandboken" för den nya syntaxen i långform.

Här är några exempel på aptitude(8)-operationer.

Så här städar jag upp status för automatisk/manuell installation av paket (efter att ha använt installationsprogram för paket som inte är aptitude etc.).

  1. Starta aptitude i interaktivt läge som root.

  2. Skriv "u", "U", "f" och "g" för att uppdatera och uppgradera paketlistan och paketen.

  3. Skriv "l" för att ange paketets visningsgräns som "~i(~R~i|~Rrecommends:~i)" och skriv "M" över "Installed Packages" som automatiskt installerat.

  4. Skriv "l" för att ange paketets visningsgräns som "~prequired|~pimportant|~pstandard|~E" och skriv "m" över "Installed Packages" som manuellt installerat.

  5. Skriv "l" för att ange gränsen för paketvisning som "~i!~M" och ta bort oanvända paket genom att skriva "-" över vart och ett av dem efter att ha exponerat dem genom att skriva "[" över "Installerade paket".

  6. Skriv "l", för att ange paketets visningsgräns som "~i"; skriv sedan "m" över "Tasks", för att markera det paketet som manuellt installerat.

  7. Avsluta aptitude.

  8. Starta "apt-get -s autoremove|less" som root för att kontrollera vad som inte används.

  9. Starta om aptitude i interaktivt läge och markera nödvändiga paket som "m".

  10. Starta om "apt-get -s autoremove|less" som root för att kontrollera att REMOVED endast innehåller förväntade paket.

  11. Starta "apt-get autoremove|less" som root för att automatiskt ta bort oanvända paket.

"m"-åtgärden över "Tasks" är valfri för att förhindra massuttag av paket i framtiden.

[Notera] Notera

När du flyttar till en ny version bör du överväga att utföra en ren installation av det nya systemet, även om Debian kan uppgraderas enligt beskrivningen nedan. Detta ger dig en chans att ta bort skräp som samlats in och exponerar dig för den bästa kombinationen av de senaste paketen. Naturligtvis bör du göra en fullständig säkerhetskopiering av systemet till en säker plats (se Avsnitt 10.2, ”Backup och återställning”) innan du gör detta. Jag rekommenderar att du gör en dual boot-konfiguration med olika partitioner för att få den smidigaste övergången.

Du kan göra en systemomfattande uppgradering till en nyare version genom att ändra innehållet i källistan som pekar på en ny version och köra kommandot "apt update; apt dist-upgrade".

För att uppgradera från stable till testing eller unstable under utgivningscykeln trixie-as-stable ersätter du "trixie" i källistexempletAvsnitt 2.1.5, ”Grunderna i Debian-arkivet” med "forky" eller "sid".

I verkligheten kan du stöta på vissa komplikationer på grund av vissa problem med paketövergången, främst på grund av paketberoenden. Ju större skillnaden mellan uppgraderingarna är, desto större är sannolikheten att du får större problem. För övergången från den gamla stable till den nya stable efter lanseringen kan du läsa dess nya Release Notes och följa den exakta proceduren som beskrivs i den för att minimera problem.

När du bestämmer dig för att flytta från stable till testing innan den formella releasen finns det inga Release Notes som kan hjälpa dig. Skillnaden mellan stable och testing kan ha blivit ganska stor efter den föregående stable releasen och gör uppgraderingssituationen komplicerad.

Du bör vidta försiktighetsåtgärder för den fullständiga uppgraderingen samtidigt som du samlar in den senaste informationen från sändlistan och använder sunt förnuft.

  1. Läs tidigare "Release Notes".

  2. Säkerhetskopiera hela systemet (särskilt data- och konfigurationsinformation).

  3. Ha startbart media till hands för trasig bootloader.

  4. Informera användarna om systemet i god tid.

  5. Registrera uppgraderingsaktivitet med skript(1).

  6. Använd "unmarkauto" på nödvändiga paket, t.ex. "aptitude unmarkauto vim", för att förhindra borttagning.

  7. Minimera antalet installerade paket för att minska risken för paketkonflikter, t.ex. genom att ta bort paket för skrivbordsuppgifter.

  8. Ta bort filen "/etc/apt/preferences" (inaktivera apt-pinning).

  9. Försök att uppgradera stegvis: oldstablestabletestingunstable.

  10. Uppdatera källistan så att den endast pekar på det nya arkivet och kör "aptitude update".

  11. Installera eventuellt nya kärnpaket först, t.ex. "aptitude install perl".

  12. Kör kommandot "apt-get -s dist-upgrade" för att bedöma effekten.

  13. Kör kommandot "apt-get dist-upgrade" till sist.

[Observera] Observera

Det är inte klokt att hoppa över en större Debian-utgåva när man uppgraderar mellan stable utgåvor.

[Observera] Observera

I tidigare "Release Notes" har GCC, Linux Kernel, initrd-tools, Glibc, Perl, APT tool chain etc. krävt särskild uppmärksamhet för systemomfattande uppgradering.

För dagliga uppgradering i unstable, se Avsnitt 2.4.3, ”Skydd för paketproblem”.

Här är en lista över andra pakethanteringsoperationer för vilka aptitude är för hög nivå eller saknar nödvändiga funktioner.

Tabell 2.13. Lista över avancerade åtgärder för pakethantering

kommando åtgärd
COLUMNS=120 dpkg -l paketnamn_mönster lista status för ett installerat paket för felrapporten
dpkg -L paketnamn lista innehållet i ett installerat paket
dpkg -L paketnamn | egrep '/usr/share/man/man.*/.+' lista manpages för ett installerat paket
dpkg -S fil_namn_mönster lista installerade paket som har matchande filnamn
apt-file search filnamnsmönster lista paket i arkivet som har matchande filnamn
apt-file list paketnamnsmönster lista innehållet i matchande paket i arkivet
dpkg-reconfigure paketnamn konfigurera om det exakta paketet
dpkg-reconfigure -plow paketnamn konfigurera om det exakta paketet med den mest detaljerade frågan
configure-debian omkonfigurera paket från helskärmsmenyn
dpkg --audit granskningssystem för delvis installerade paket
dpkg --configure -a konfigurera alla delvis installerade paket
apt-cache-policy binärt_paketnamn visa tillgänglig versions-, prioritets- och arkivinformation för ett binärt paket
apt-cache madison paketnamn visa tillgänglig version, arkivinformation för ett paket
apt-cache showsrc binär_paketnamn visa information om källpaketet för ett binärt paket
apt-get build-dep paket_namn installera nödvändiga paket för att bygga paket
aptitude build-dep paket_namn installera nödvändiga paket för att bygga paket
apt-get källa paketnamn ladda ner en källa (från standardarkivet)
dget URL för dsc-fil ladda ner ett källpaket (från annat arkiv)
dpkg-source -x paketnamn_version-debian.revision.dsc bygg ett källträd från en uppsättning källkodspaket ("*.orig.tar.gz" och "*.debian.tar.gz"/"*.diff.gz")
debuild binary bygga paket från ett lokalt källträd
make-kpkg kernel_image bygga ett kernelpaket från ett kernelkällträd
make-kpkg --initrd kernel_image bygga ett kernelpaket från ett kernelkällträd med initramfs aktiverat
dpkg -i paketnamn_version-debian.revision_arch.deb installera ett lokalt paket till systemet
apt install /sökväg/till/paketfilnamn.deb installera ett lokalt paket i systemet och under tiden försöka lösa beroendet automatiskt
debi paketnamn_version-debian.revision_arch.dsc installera lokala paket till systemet
dpkg --get-selections '*' >selection.txt spara dpkg nivå paketval statusinformation
dpkg --set-selections <val.txt set dpkg level information om status för val av paket
echo paketnamn hold | dpkg --set-selections ställa in paketvalsstatus på dpkg-nivå för ett paket att hålla (motsvarande "aptitude hold package_name")

[Notera] Notera

För ett paket med multi-arch-funktionen kan du behöva ange arkitekturnamnet för vissa kommandon. Använd till exempel "dpkg -L libglib2.0-0:amd64" för att lista innehållet i paketet libglib2.0-0 för arkitekturen amd64.

[Observera] Observera

Paketverktyg på lägre nivå som "dpkg -i ..." och "debi ….." bör användas med försiktighet av systemadministratören. De tar inte automatiskt hand om nödvändiga paketberoenden. Dpkg:s kommandoradsalternativ "--force-all" och liknande (se dpkg(1)) är endast avsedda att användas av experter. Att använda dem utan att fullt ut förstå deras effekter kan förstöra hela ditt system.

Vänligen notera följande.

Installationen av debsums möjliggör verifiering av installerade paketfiler mot MD5sum-värden i filen "/var/lib/dpkg/info/*.md5sums" med debsums(1). Se Avsnitt 10.3.5, ”MD5-summan” för information om hur MD5sum fungerar.

[Notera] Notera

Eftersom MD5sum-databasen kan manipuleras av en inkräktare är debsums(1) av begränsad nytta som säkerhetsverktyg. Det är bara bra för att kontrollera lokala ändringar av administratören eller skador på grund av mediefel.

Även om det numera är lätt att söka i paketets metadata genom att besöka Debians webbplats https://packages.debian.org/, ska vi titta på mer traditionella sätt.

Kommandona grep-dctrl(1), grep-status(1) och grep-available(1) kan användas för att söka i alla filer som har det allmänna formatet för en Debian-paketkontrollfil.

"dpkg -S file_name_pattern" kan användas för att söka efter paketnamn som innehåller filer med matchande namn som installerats av dpkg. Men detta förbiser filer som skapats av underhållsskript.

Om du behöver göra en mer detaljerad sökning i dpkg:s metadata måste du köra kommandot "grep -e regex_pattern *" i katalogen "/var/lib/dpkg/info/". Detta gör att du kan söka på ord som nämns i paketskript och installationsfrågetexter.

Om du vill söka efter paketberoenden rekursivt bör du använda apt-rdepends(8).

Låt oss lära oss hur Debians pakethanteringssystem fungerar internt. Detta bör hjälpa dig att skapa din egen lösning på vissa paketproblem.

[Tips] Tips

Filen "Release" på högsta nivån används för att signera arkivet under det säkra APT-systemet.

Varje svit i Debian-arkivet har en "Release"-fil på högsta nivån, t.ex. "http://deb.debian.org/debian/dists/unstable/Release", enligt följande.

Origin: Debian
Label: Debian
Suite: unstable
Codename: sid
Date: Sat, 14 May 2011 08:20:50 UTC
Valid-Until: Sat, 21 May 2011 08:20:50 UTC
Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian x.y Unstable - Not Released
MD5Sum:
 bdc8fa4b3f5e4a715dd0d56d176fc789 18876880 Contents-alpha.gz
 9469a03c94b85e010d116aeeab9614c0 19441880 Contents-amd64.gz
 3d68e206d7faa3aded660dc0996054fe 19203165 Contents-armel.gz
...
[Notera] Notera

Här kan du läsa min motivering till att använda "suite" och "codename" i Avsnitt 2.1.5, ”Grunderna i Debian-arkivet”. "Distribution" används när man hänvisar till både "suite" och "codename". Alla arkivnamn för "area" som erbjuds av arkivet listas under "Components".

Integriteten hos filen "Release" på högsta nivån verifieras av en kryptografisk infrastruktur som kallas secure apt och som beskrivs i apt-secure(8).

  • Den kryptografiska signaturfilen "Release.gpg" skapas från den autentiska toppnivåfilen "Release" och den hemliga Debian-arkivnyckeln.

  • De offentliga Debian-arkivnycklarna installeras lokalt med det senaste paketet debian-archive-keyring.

  • Det säkra APT-systemet verifierar automatiskt integriteten hos den nedladdade filen "Release" på högsta nivån kryptografiskt med hjälp av filen "Release.gpg" och de lokalt installerade offentliga Debian-arkivnycklarna.

  • Integriteten hos alla "Packages"- och "Sources"-filer verifieras med hjälp av MD5sum-värden i "Release"-filen på högsta nivån. Integriteten för alla paketfiler verifieras genom att använda MD5sum-värden i filerna "Packages" och "Sources". Se debsums(1) och Avsnitt 2.4.2, ”Verifiering av installerade paketfiler”.

  • Eftersom verifieringen av kryptografiska signaturer är en mycket mer processorkrävande process än beräkningen av MD5sum-värdet, ger användningen av MD5sum-värdet för varje paket samtidigt som kryptografisk signatur används för "Release"-filen på högsta nivå god säkerhet med hög prestanda (se Avsnitt 10.3, ”Infrastruktur för datasäkerhet”).

Om posten i källistan anger alternativet "signed-by" verifieras integriteten hos den nedladdade "Release"-filen på högsta nivån med hjälp av den angivna offentliga nyckeln. Detta är användbart när källistan innehåller icke-Debian-arkiv.

[Tips] Tips

Användningen av kommandot apt-key(8) för APT-nyckelhantering är föråldrad.

Du kan också manuellt verifiera integriteten hos filen "Release" med filen "Release.gpg" och den offentliga Debian-arkivnyckeln som finns på ftp-master.debian.org med hjälp av gpg.

När APT-verktyg, såsom aptitude, apt-get, synaptic, apt-file, auto-apt, ... används, måste vi uppdatera de lokala kopiorna av metadata som innehåller Debian-arkivinformationen. Dessa lokala kopior har följande filnamn som motsvarar de angivna distributions-, områdes- och arkitekturnamnen i källistan (se Avsnitt 2.1.5, ”Grunderna i Debian-arkivet”).

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribution_Release"

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribution_Release.gpg"

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribution_area_binary-architecture_Packages"

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribution_area_source_Sources"

  • "/var/cache/apt/apt-file/deb.debian.org_debian_dists_distribution_Contents-arkitektur.gz" (för apt-file)

De första 4 typerna av filer delas av alla relevanta APT-kommandon och uppdateras från kommandoraden med "apt-get update" eller "aptitude update". Metadata för "Packages" uppdateras om "deb" anges i källistan. Metadata för "Sources" uppdateras om "deb-src" anges i källistan.

Metadata för "Packages" och "Sources" innehåller "Filename:"-stanza som pekar på filplatsen för binär- och källkodspaketen. För närvarande finns dessa paket under katalogträdet "pool/" för att underlätta övergången mellan olika utgåvor.

Lokala kopior av metadata för "Packages" kan sökas interaktivt med hjälp av aptitude. Det specialiserade sökkommandot grep-dctrl(1) kan söka i lokala kopior av metadata för "Packages" och "Sources".

Den lokala kopian av metadata för "Contents-architecture" kan uppdateras med "apt-file update" och dess plats skiljer sig från de andra 4. Se apt-file(1). ( Auto-Apt använder som standard en annan plats för den lokala kopian av "Contents-architecture.gz")

Debians paketfiler har särskilda namnstrukturer.


[Tips] Tips

Här beskrivs endast de grundläggande formaten för källkodspaket. Se mer på dpkg-source(1).


[Notera] Notera

Du kan kontrollera paketets versionsordning med dpkg(1), t.ex. "dpkg --compare-versions 7.0 gt 7.~pre1 ; echo $?" .

[Notera] Notera

Debian-installer (d-i) använder udeb som filändelse för sitt binära paket i stället för vanliga deb. Ett udeb-paket är ett nedbantat deb-paket som tar bort en del oväsentligt innehåll, t.ex. dokumentation, för att spara utrymme och samtidigt lätta på kraven i paketpolicyn. Både deb- och udeb-paketen delar samma paketstruktur. "u" står för micro.

dpkg(1) är verktyget på lägsta nivå för Debians pakethantering. Det är mycket kraftfullt och måste användas med försiktighet.

Under installationen av paketet med namnet "paketets_namn", bearbetar dpkg det i följande ordning.

  1. Packa upp deb-filen (motsvarande "ar -x")

  2. Kör"package_name.preinst" med debconf(1)

  3. Installera paketets innehåll i systemet ("tar -x"-motsvarighet)

  4. Kör"package_name.postinst" med debconf(1)

Debconf-systemet tillhandahåller standardiserad användarinteraktion med I18N- och L10N-stöd (Kapitel 8, I18N och L10N).

Tabell 2.17. De anmärkningsvärda filer som skapats av dpkg

fil beskrivning av innehåll
/var/lib/dpkg/info/package_name.conffiles lista över konfigurationsfiler. (kan ändras av användaren)
/var/lib/dpkg/info/package_name.list lista över filer och kataloger som installerats av paketet
/var/lib/dpkg/info/package_name.md5sums lista över MD5-hashvärden för filer som installerats av paketet
/var/lib/dpkg/info/package_name.preinst paketskript som ska köras innan paketet installeras
/var/lib/dpkg/info/package_name.postinst paketskript som ska köras efter installationen av paketet
/var/lib/dpkg/info/package_name.prerm paketskript som ska köras innan paketet tas bort
/var/lib/dpkg/info/package_name.postrm paketskript som ska köras efter att paketet har tagits bort
/var/lib/dpkg/info/package_name.config paket skript för debconf system
/var/lib/dpkg/alternatives/package_name den alternativa information som används av kommandot update-alternatives
/var/lib/dpkg/available information om tillgänglighet för alla paket
/var/lib/dpkg/diversions den avledningsinformation som används av dpkg(1) och som ställs in av dpkg-divert(8)
/var/lib/dpkg/statoverride information om stat-överstyrning som används av dpkg(1) och ställs in av dpkg-statoverride(8)
/var/lib/dpkg/status statusinformation för alla paket
/var/lib/dpkg/status-old den första generationens säkerhetskopia av filen "var/lib/dpkg/status"
/var/backups/dpkg.status* andra generationens säkerhetskopia och äldre versioner av filen "var/lib/dpkg/status"

Filen "status" används också av verktyg som dpkg(1), "dselect update" och "apt-get -u dselect-upgrade".

Det specialiserade sökkommandot grep-dctrl(1) kan söka i de lokala kopiorna av metadata för "status" och "available".

[Tips] Tips

I debian-installer-miljön används kommandot udpkg för att öppna udeb-paket. Kommandot udpkg är en nedbantad version av kommandot dpkg.

När testing eller unstable system körs förväntas administratören återhämta sig från en trasig pakethanteringssituation.

[Observera] Observera

Vissa metoder som beskrivs här är högriskåtgärder. Du har blivit varnad!

Cachningsfel i paketdata orsakar spännande fel, t.ex. "GPG-fel: ... ogiltigt: BADSIG ..." med APT.

Du bör ta bort alla cachade data med "sudo rm -rf /var/lib/apt/* " och försöka igen. (Om apt-cacher-ng används bör du även köra "sudo rm -rf /var/cache/apt-cacher-ng/* ")

Pakethanteringssystem på arkivnivå, t.ex. aptitude(8) eller apt-get(1), försöker inte ens installera paket med överlappande filer med hjälp av paketberoenden (se Avsnitt 2.1.7, ”Beroenden av paket”).

Fel från paketunderhållaren eller distribution av inkonsekvent blandade arkivkällor (se Avsnitt 2.7.6, ”Paket från blandade arkivkällor utan apt-pinning) av systemadministratören kan skapa en situation med felaktigt definierade paketberoenden. När du installerar ett paket med överlappande filer med aptitude(8) eller apt-get(1) i en sådan situation, ser dpkg(1) som packar upp paketet till att returnera fel till det anropande programmet utan att skriva över befintliga filer.

[Observera] Observera

Användningen av tredjepartspaket medför betydande systemrisker via underhållsskript som körs med root-rättigheter och kan göra vad som helst med ditt system. Kommandot dpkg(1) skyddar endast mot överskrivning vid uppackning.

Du kan komma runt en sådan trasig installation genom att ta bort det gamla felaktiga paketet, gamla paketetförst.

$ sudo dpkg -P old-package

Eftersom dpkg är ett paketverktyg på mycket låg nivå kan det fungera i mycket dåliga situationer, t.ex. om systemet inte går att starta utan nätverksanslutning. Låt oss anta att foo-paketet var trasigt och behöver ersättas.

Du kan fortfarande hitta cachade kopior av äldre buggfria versioner av foo-paketet i paketets cachekatalog: "/var/cache/apt/archives/". (Om inte, kan du hämta den från arkivet på https://snapshot.debian.org/ eller kopiera den från paketcachen på en fungerande maskin)

Om du kan starta upp systemet kan du installera det med följande kommando.

# dpkg -i /path/to/foo_old_version_arch.deb
[Tips] Tips

Om systemhaveriet är mindre kan man alternativt nedgradera hela systemet som i Avsnitt 2.7.11, ”Akut nedgradering” genom att använda APT-systemet på högre nivå.

Om det inte går att starta systemet från hårddisken bör du försöka hitta andra sätt att starta det.

  1. Starta upp systemet med hjälp av CD-skivan med debian-installer i räddningsläge.

  2. Montera det omstartbara systemet på hårddisken till "/target".

  3. Installera en äldre version av foo-paketet på följande sätt.

# dpkg --root /target -i /path/to/foo_old_version_arch.deb

Detta exempel fungerar även om dpkg-kommandot på hårddisken är trasigt.

[Tips] Tips

Alla GNU/Linux-system som startas av ett annat system på hårddisk, live GNU/Linux-CD, startbar USB-sticka eller netboot kan användas på samma sätt för att rädda ett trasigt system.

Om ett försök att installera ett paket på det här sättet misslyckas på grund av vissa beroendeöverträdelser och du verkligen måste göra detta som en sista utväg, kan du åsidosätta beroendet med hjälp av dpkg:s "--ignore-depends", "--force-depends" och andra alternativ. Om du gör detta måste du anstränga dig ordentligt för att återställa korrekt beroende senare. Se dpkg(8) för mer information.

[Notera] Notera

Om ditt system är allvarligt trasigt bör du göra en fullständig säkerhetskopia av systemet på en säker plats (se Avsnitt 10.2, ”Backup och återställning”) och utföra en ren installation. Detta är mindre tidskrävande och ger bättre resultat i slutändan.

För enkelhetens skull presenteras exemplen på källistan i det här avsnittet som "/etc/apt/sources.list" i enradig stil efter utgåvan trixie.

Paketet apt levereras med ett eget cron-skript "/etc/cron.daily/apt" för att stödja automatisk nedladdning av paket. Detta skript kan förbättras för att utföra automatisk uppgradering av paket genom att installera paketet unattended-upgrades. Dessa kan anpassas med parametrar i "/etc/apt/apt.conf.d/02backup" och "/etc/apt/apt.conf.d/50unattended-upgrades" som beskrivs i "/usr/share/doc/unattended-upgrades/README".

Paketet unattended-upgrades är huvudsakligen avsett för säkerhetsuppgraderingar av stable system. Om risken för att ett befintligt stable system bryts ned av den automatiska uppgraderingen är mindre än risken för att systemet bryts ned av en inkräktare som använder ett säkerhetshål som har täppts till av säkerhetsuppdateringen, bör du överväga att använda denna automatiska uppgradering med konfigurationsparametrar enligt följande.

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";

Om du kör ett testing eller unstable system vill du inte använda den automatiska uppgraderingen eftersom systemet då säkert går sönder någon dag. Även i sådana testing eller unstable fall kan du ändå vilja hämta paket i förväg för att spara tid för den interaktiva uppgraderingen med konfigurationsparametrar som följande.

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "0";

Det finns stable-updates ( "trixie-updates" under utgivningscykeln trixie-as-stable ) och backports.debian.org-arkiv som tillhandahåller uppgraderingspaket för stable.

För att kunna använda dessa arkiv måste du lista alla nödvändiga arkiv i filen "/etc/apt/sources.list" enligt följande.

deb http://deb.debian.org/debian/ trixie main non-free-firmware contrib non-free
deb http://security.debian.org/debian-security trixie-security main non-free-firmware contrib non-free
deb http://deb.debian.org/debian/ trixie-updates main non-free-firmware contrib non-free
deb http://deb.debian.org/debian/ trixie-backports main non-free-firmware contrib non-free

Det finns inget behov av att ange Pin-Priority-värdet explicit i filen "/etc/apt/preferences". När nyare paket blir tillgängliga ger standardkonfigurationen de flesta rimliga uppgraderingar (se Avsnitt 2.5.3, ”"Release"-filer på arkivnivå”).

  • Alla installerade äldre paket uppgraderas till nyare från trixie-updates.

  • Endast manuellt installerade äldre paket från trixie-backports uppgraderas till nyare paket från trixie-backports.

När du vill installera ett paket med namnet "paket-namn" med dess beroende från trixie-backports arkiv manuellt, använder du följande kommando medan du byter målversion med alternativet "-t".

$ sudo apt-get install -t trixie-backports package-name
[Varning] Varning

Installera inte för många paket från backports.debian.org-arkiven. Det kan orsaka komplikationer med paketberoenden. Se Avsnitt 2.1.11, ”Hur man hanterar motstridiga krav” för alternativa lösningar.

[Observera] Observera

Installation av paket från blandade arkivkällor stöds inte av den officiella Debian-distributionen, med undantag för officiellt stödda särskilda kombinationer av arkiv, t.ex. stable med säkerhetsuppdateringar och stable-updates.

Här är ett exempel på åtgärder för att inkludera specifika paket med nyare uppströmsversioner som finns i unstable när du spårar testing för ett enstaka tillfälle.

  1. Ändra filen "/etc/apt/sources.list" tillfälligt till en enda "unstable"-post.

  2. Kör "aptitude update".

  3. Kör "aptitude install paket-namn".

  4. Återställ den ursprungliga filen "/etc/apt/sources.list" för testing.

  5. Kör "aptitude update".

Du skapar inte filen "/etc/apt/preferences" och behöver inte heller oroa dig för apt-pinning med detta manuella tillvägagångssätt. Men detta är mycket besvärligt.

[Observera] Observera

När du använder blandade arkivkällor måste du själv se till att paketen är kompatibla, eftersom Debian inte garanterar det. Om paket inte är kompatibla kan det leda till att systemet inte fungerar. Du måste kunna bedöma dessa tekniska krav. Användningen av blandade källor av slumpmässiga arkiv är helt valfri och det är inget jag uppmuntrar dig att använda.

Allmänna regler för installation av paket från olika arkiv är följande.

[Notera] Notera

För att göra ett paket säkrare att installera kan vissa kommersiella, icke-fria binära programpaket innehålla helt statiskt länkade bibliotek. Du bör ändå kontrollera ABI-kompatibilitetsproblem etc. för dem.

[Notera] Notera

Förutom för att undvika trasiga paket på kort sikt, är det i allmänhet en dålig idé att installera binära paket från icke-Debian-arkiv. Du bör söka efter alla tillgängliga alternativa säkrare tekniska lösningar som är kompatibla med ditt nuvarande Debian-system (se Avsnitt 2.1.11, ”Hur man hanterar motstridiga krav”).

[Varning] Varning

Om en nybörjare använder apt-pinning-tekniken kan det leda till stora problem. Du måste undvika att använda den här tekniken utom när du absolut behöver den.

Utan filen "/etc/apt/preferences" väljer APT-systemet den senast tillgängliga versionen som kandidatversion med hjälp av versionssträngen. Detta är det normala tillståndet och den mest rekommenderade användningen av APT-systemet. Alla officiellt stödda kombinationer av arkiv kräver inte filen "/etc/apt/preferences" eftersom vissa arkiv som inte bör användas som automatisk källa för uppgraderingar markeras som NotAutomatic och hanteras på rätt sätt.

[Tips] Tips

Jämförelseregeln för versionssträngar kan verifieras med t.ex. "dpkg --compare-versions ver1.1 gt ver1.1~1; echo $?" (se dpkg(1)).

När du regelbundet installerar paket från blandade arkivkällor (se Avsnitt 2.7.6, ”Paket från blandade arkivkällor utan apt-pinning) kan du automatisera dessa komplicerade operationer genom att skapa filen "/etc/apt/preferences" med rätt poster och justera paketvalsregeln för kandidatversionen enligt beskrivningen i apt_preferences(5). Detta kallas apt-pinning.

När du använder apt-pinning måste du själv se till att paketen är kompatibla eftersom Debian inte garanterar det. Apt-pinning är en helt frivillig åtgärd och jag uppmuntrar inte till att använda den.

Release-filer på arkivnivå (se Avsnitt 2.5.3, ”"Release"-filer på arkivnivå”) används för regeln i apt_preferences(5). Således fungerar apt-pinning endast med "suite"-namn för normala Debian-arkiv och Debian-arkiv för säkerhet. (Detta skiljer sig från Ubuntu-arkiv.) Du kan t.ex. göra "Pin: release a=unstable" men inte "Pin: release a=sid" i filen "/etc/apt/preferences".

När du använder icke-Debian-arkiv som en del av apt-pinning bör du kontrollera vad de är avsedda för och även kontrollera deras trovärdighet. Ubuntu och Debian är till exempel inte avsedda att blandas.

[Notera] Notera

Även om du inte skapar filen "/etc/apt/preferences" kan du utföra ganska komplexa systemoperationer (se Avsnitt 2.6.6, ”Räddning med kommandot dpkg” och Avsnitt 2.7.6, ”Paket från blandade arkivkällor utan apt-pinning) utan apt-pinning.

Här följer en förenklad förklaring av apt-pinning-tekniken.

APT-systemet väljer det uppgraderingspaket med högst Pin-prioritet från tillgängliga paketkällor som definieras i filen "/etc/apt/sources.list" som kandidatversionspaket. Om paketets Pin-Priority är större än 1000, tas denna versionsbegränsning för uppgradering bort för att möjliggöra nedgradering (se Avsnitt 2.7.11, ”Akut nedgradering”).

Pin-Priority-värdet för varje paket definieras av "Pin-Priority"-poster i filen "/etc/apt/preferences" eller använder dess standardvärde.


Målarkivet för utgåvan kan anges med kommandoradsalternativet,t.ex. "apt-get install -t testing some-package"

Arkivet NotAutomatic and ButAutomaticUpgrades skapas genom att arkivservern har en Release-fil på arkivnivå (se Avsnitt 2.5.3, ”"Release"-filer på arkivnivå”) som innehåller både "NotAutomatic: yes" och "ButAutomaticUpgrades: yes". NotAutomatic-arkivet skapas genom att arkivservern har en Release-fil på arkivnivå som endast innehåller "NotAutomatic:yes".

Situationen med apt-pinning av paket från flera arkivkällor visas av "apt-cache policy package".

  • En rad som börjar med "Package pin:" listar paketversionen av pin om associationen bara med paket är definierad, t.ex. "Package pin: 0.190".

  • Ingen rad med "Paketnål:" finns om ingen association bara med paketet är definierad.

  • Pin-Priority-värdet som bara är associerat med paketet anges till höger om alla versionssträngar, t.ex. "0.181 700".

  • "0" anges på höger sida av alla versionssträngar om ingen koppling till paketet har definierats, t.ex. "0.181 0".

  • Arkivens Pin-Priority-värden (definierade som "Package: *" i filen "/etc/apt/preferences") listas till vänster om alla arkivsökvägar, t.ex. "100 http://deb.debian.org/debian/ trixie-backports/main Packages".

[Varning] Varning

Om en nybörjare använder apt-pinning-tekniken kan det leda till stora problem. Du måste undvika att använda den här tekniken utom när du absolut behöver den.

Här är ett exempel på apt-pinning-teknik för att inkludera specifika nyare uppströmsversionspaket som finns i unstable regelbundet uppgraderade när man följer testing. Du listar alla nödvändiga arkiv i filen "/etc/apt/sources.list" enligt följande.

deb http://deb.debian.org/debian/ testing main contrib non-free
deb http://deb.debian.org/debian/ unstable main contrib non-free
deb http://security.debian.org/debian-security testing-security main contrib

Ställ in filen "/etc/apt/preferences" enligt följande.

Package: *
Pin: release a=unstable
Pin-Priority: 100

När du vill installera ett paket med namnet "paket-namn" med dess beroenden från unstable-arkivet under denna konfiguration, ger du följande kommando som byter målversion med alternativet "-t" (Pin-prioritet för unstable blir 990).

$ sudo apt-get install -t unstable package-name

Med den här konfigurationen uppgraderas paket som installerades från testarkivet med det aktuella testarkivet och paket som installerades från det unstable arkivet med det aktuella unstable arkivet genom att köra "apt-get upgrade" och "apt-getdist-upgrade" (eller "aptitude safe-upgrade" och "aptitude full-upgrade").

[Observera] Observera

Var försiktig så att du inte tar bort "testing"-posten från filen "/etc/apt/sources.list". Utan "testing"-posten i den uppgraderar APT-systemet paket med nyare unstable arkiv.

[Tips] Tips

Jag brukar redigera filen "/etc/apt/sources.list" för att kommentera bort arkivposten "unstable" direkt efter ovanstående operation. Detta undviker en långsam uppdateringsprocess på grund av för många poster i filen "/etc/apt/sources.list", även om det förhindrar uppgradering av paket som installerades från ett unstable-arkiv med hjälp av det aktuella unstable-arkivet.

[Tips] Tips

Om "Pin-Priority: 1" används i stället för "Pin-Priority: 100" i filen "/etc/apt/preferences", uppgraderas inte redan installerade paket med Pin-Priority-värdet 100 av unstable archive även om posten "testing" i filen "/etc/apt/sources.list" tas bort.

Om du vill spåra vissa paket i unstable automatiskt utan inledande installation av "-t unstable", måste du skapa filen "/etc/apt/preferences" och uttryckligen lista alla dessa paket högst upp i den enligt följande.

Package: package-1
Pin: release a=unstable
Pin-Priority: 700

Package: package-2
Pin: release a=unstable
Pin-Priority: 700

Dessa anger Pin-Priority-värdet för varje specifikt paket. För att till exempel spåra den senaste unstable versionen av denna "Debian Reference" på engelska, bör du ha följande poster i filen "/etc/apt/preferences".

Package: debian-reference-en
Pin: release a=unstable
Pin-Priority: 700

Package: debian-reference-common
Pin: release a=unstable
Pin-Priority: 700
[Tips] Tips

Denna apt-pinning-teknik är giltig även när du spårar stable arkiv. Dokumentationspaket har alltid varit säkra att installera från unstable arkiv enligt min erfarenhet hittills.

[Varning] Varning

Om en nybörjare använder apt-pinning-tekniken kan det leda till stora problem. Du måste undvika att använda den här tekniken utom när du absolut behöver den.

[Observera] Observera

Nedgradering stöds inte officiellt av Debian, vilket är meningen. Det bör endast göras som en del av en nödåterställningsprocess. Trots detta är det känt att det fungerar bra vid många incidenter. För kritiska system bör du säkerhetskopiera alla viktiga data på systemet efter återställningen och installera om det nya systemet från grunden.

Du kan ha turen att kunna nedgradera från ett nyare arkiv till ett äldre arkiv för att återställa en trasig systemuppgradering genom att manipulera kandidatversionen (se Avsnitt 2.7.7, ”Justera kandidatversionen med apt-pinning). Detta är ett lata alternativ till tråkiga åtgärder med många "dpkg -i broken-package_old-version.deb"-kommandon (se Avsnitt 2.6.6, ”Räddning med kommandot dpkg”).

Sök rader i filen "/etc/apt/sources.list" som spårar unstable som följande.

deb http://deb.debian.org/debian/ sid main contrib non-free

Ersätt det med följande för att spåra testing.

deb http://deb.debian.org/debian/ forky main contrib non-free

Ställ in filen "/etc/apt/preferences" enligt följande.

Package: *
Pin: release a=testing
Pin-Priority: 1010

Kör "apt-get update; apt-get dist-upgrade" för att tvinga fram nedgradering av paket i hela systemet.

Ta bort den här speciella filen "/etc/apt/preferences" efter denna akuta nedgradering.

[Tips] Tips

Det är en bra idé att ta bort (inte rensa!) så många paket som möjligt för att minimera beroendeproblem. Du kan behöva ta bort och installera vissa paket manuellt för att få systemet nedgraderat. Linuxkärnan, bootloader, udev, PAM, APT och nätverksrelaterade paket och deras konfigurationsfiler kräver särskild uppmärksamhet.