- dpkg er pakkebehandleren på lavt nivå som installerer og fjerner lokale .deb-filer uten å løse avhengigheter.
- APT fungerer som et høynivålag over dpkg, og administrerer repositorier, mellomlagring og automatisk avhengighetsløsning.
- apt, apt-get og aptitude er forskjellige APT-grensesnitt, designet for forskjellige bruksområder: sluttbruker, skripting og avansert administrasjon.
- Å velge riktig verktøy for konteksten forenkler administrasjonen og reduserer feil på Debian og derivatsystemer.

I Debian-baserte distribusjoner (som Ubuntu, Linux Mint eller Devuan) er det veldig vanlig at spørsmålet dukker opp om Hva er forskjellen på å bruke dpkg, apt, apt-get eller til og med aptitude?Ved første øyekast ser det ut til at de alle gjør det samme: installerer, oppdaterer og sletter programmer. Hver av dem spiller imidlertid en annen rolle i programvareøkosystemet, og det å forstå dette vil spare deg for mye hodebry.
I denne artikkelen skal vi rolig forklare hvordan det fungerer. dpkg som en lavnivåadministratorHva har APT som topplag, og hvordan skiller de seg fra hverandre? apt, apt-get og aptitudeog hvilke grunnleggende kommandoer du bør mestre i hvert tilfelle. Tanken er at du vil ha en klar forståelse når du er ferdig med lesingen. når man skal bruke hvert verktøy og hvorforbåde i hverdagsoppgaver og i mer avanserte oppgaver eller skript.
Grunnlaget for det hele: dpkg, pakkebehandleren på lavt nivå
Søylen som hele pakkesystemet i Debian er basert på er dpkg, den innebygde pakkebehandleren som fungerer direkte med .deb-filerDet var den første pakkebehandleren for Debian, og den dag i dag er den fortsatt standarden for alle derivatdistribusjoner. Hvis du kommer fra RPM, kan du konvertere pakker med Konverter pakker med Alien for å generere .deb-filer som kan installeres med dpkg.
I motsetning til verktøy på høyt nivå, er dpkg bare opptatt av Installer, avinstaller og spør etter lokale .deb-pakkerDen håndterer ikke eksterne arkiver, laster ikke ned pakker fra internett eller løser avhengigheter på egenhånd. Hvis du installerer noe med dpkg og et bibliotek mangler, må du fikse det manuelt.
Det gjør dpkg til et ideelt verktøy for administrere pakker på en svært presis og kontrollert måte (for eksempel når du laster ned en .deb-fil manuelt eller når du bygger dine egne pakker), men det betyr også at du må vite nøyaktig hva du gjør med avhengigheter.
Binærpakken som tilbyr dette verktøyet i Debian inkluderer, i tillegg til dpkg, andre relaterte verktøy som f.eks. dpkg-deb, dpkg-split, dpkg-query, dpkg-divert eller dpkg-trigger, sammen med tilleggsverktøy som f.eks. update-alternatives o start-stop-daemonFor pakkebyggingsoppgaver finnes det en egen pakke. dpkg-dev, som legger til kompileringsverktøy.
List opp pakker og tilstander med dpkg
Noe av det første en administrator vanligvis trenger er sjekk hvilke pakker som er installert på systemetMed dpkg kan dette gjøres på flere måter:
dpkg -lviser en liste over pakker med status (installert, slettet osv.).dpkg -l nombre_paquete: filtrerer bare for den pakken og forteller deg om den er installert eller ikke.dpkg --get-selectionsviser den komplette listen over pakker og ditt nåværende valg.dpkg --get-selections paqueteSjekker raskt om en bestemt pakke er merket som installert, avinstallert osv.
En merkelig detalj er det dpkg –get-selections viser også pakker i «avinstaller»-tilstandDette er pakker som har blitt avinstallert, men som fortsatt beholder konfigurasjonsfiler eller metadata på systemet. Vi skal se senere hvordan dette gjenspeiles annerledes når man spør med APT.
Installer, fjern og slett pakker med dpkg
For å jobbe direkte med en nedlastet .deb-fil, tilbyr dpkg svært tydelige kommandoer for Installer og avinstaller spesifikke pakker uten å gå gjennom repositorier:
dpkg -i paquete.deb: installer den angitte pakken (install).dpkg -r nombre_paquetefjerner pakken, men beholder konfigurasjonsfilene (fjern).dpkg -P nombre_paqueteutfører en fullstendig tømming, og sletter også tilhørende konfigurasjonsfiler (tømming).
Når brukes den alternativet -P i stedet for -r Både binærfiler og konfigurasjonsfiler blir renset, noe som er veldig nyttig hvis du vil forlate systemet som om du aldri hadde installert det programmet. Det dpkg ikke vil gjøre, gjentar vi, er Fjern automatisk avhengigheter som bare ble installert for den pakkenDu må klare det selv, eller stole på APT.
Vis informasjon og innhold i .deb-pakker
En annen interessant funksjon er muligheten til å inspisere hva en .deb-pakke inneholder eller hvilke metadata den inkludererDet er der nytteverdien kommer inn i bildet. dpkg-deb, inkludert i selve dpkg-pakken:
dpkg-deb -I paquete.debviser detaljert pakkeinformasjon (navn, versjon, avhengigheter, vedlikeholder osv.).dpkg-deb --contents paquete.deb: viser alle filene som ville bli installert på systemet når du installerer .deb-filen.
Disse alternativene er svært praktiske når du trenger det granske nøyaktig hva en pakke vil gjøre i systemet ditt eller når du feilsøker problemer med stier og filer installert av en spesifikk .deb.
APT: høynivålaget over dpkg
APT (Advanced Package Tool) ble bygget oppå dpkg, som er en samling biblioteker og verktøy som legger til avhengighetsløsning og administrasjon av depoterI stedet for å snakke direkte med .deb-filer, samhandler de fleste brukere med dette laget, som igjen kaller dpkg for lavnivåoperasjoner.
APT skrives i stor grad som Et C++-bibliotek som tilbyr funksjoner for å manipulere databasen med pakker, versjoner, opprinnelser og relasjonerFlere kommandolinjegrensesnitt er avhengige av dette biblioteket: apt-get, apt-cache, apt og også eksterne verktøy som f.eks. aptitude eller grafiske grensesnitt av Synaptic-typen.
I alle nåværende versjoner av Debian, pakken apt har «viktig» prioritet, som betyr at Det er en del av enhver grunnleggende systeminstallasjonOg selv om dpkg fortsatt er kjernen, er "pakkebehandleren" for den gjennomsnittlige brukeren for daglig bruk APT, som også Den sameksisterer med andre formater som Flatpak på mange moderne skrivebord.
En av APTs kraftigste funksjoner er at organiserer installasjon og avinstallering av pakker i en optimal rekkefølgeFør dpkg startes, utfører den en topologisk sortering av pakkelisten for å minimere konflikter, og bare i vanskelige tilfeller tyr den til å tvinge frem interne dpkg-handlinger med alternativer. --force hvis du ikke finner et trygt alternativ.
Arkiver og sources.list-filen
APT fungerer alltid fra programvarelagre deklarert i konfigurasjonsfilerHovedfilen er /etc/apt/sources.listDet er her de offisielle kildekodene for Debian- eller Ubuntu-pakker defineres, og flere tredjeparts repositorier kan legges til. Hvis du trenger det. lag ditt eget programvarelager Dette vil være nyttig for deg å forstå hvordan du målretter APT mot en tilpasset kilde.
I tillegg til hovedfilen er det vanlig å ha ekstra filer under /etc/apt/sources.list.d/ for spesifikke arkiver. Disse punktene kan referere til lokale kataloger eller fysiske medier (som en CD/DVD) samt eksterne servere som er tilgjengelige via HTTP, HTTPS eller FTP.
APT vedlikeholder også en lokal hurtigbuffer med informasjon om alle pakker som er tilgjengelige i disse depoteneDen lagres hovedsakelig under /var/lib/apt/ og den oppdateres ved hjelp av den kjente kommandoen apt update o apt-get update.
For enkel redigering av fonter inkluderer selve suiten kommandoen apt edit-sources, som åpner hovedfilen med standard terminalteksteditor sources.list eller filen du spesifiserer. Hvis du ikke har konfigurert en editor, vil den be deg om å velge en (nano, vim, neovim osv.), og fra da av vil den alltid bruke den.
Pakkeavhengighet og tilstandsadministrasjon
Den store forskjellen sammenlignet med dpkg er at APT Den håndterer automatisk løsning og nedlasting av avhengigheter.Når du ber om å installere en pakke, beregner den hvilke andre pakker som trengs, hvilke versjoner som er kompatible og hvilke konflikter som kan oppstå, og først deretter kaller den dpkg for å implementere endringene. For diagnostiske og feilsøkingsoppgaver kan du se hvordan liste avhengigheter til en pakke og unngå å ødelegge systemet når du installerer noe.
APT vedlikeholder også en tilleggsfil, /var/lib/apt/extended_statesder den registrerer om en pakke ble eksplisitt installert av brukeren eller som en avhengighet av en annen. Denne informasjonen er nøkkelen til funksjoner som apt autoremove slik at de kan finne ut hvilke pakker som er kandidater til å bli slettet fordi de er "foreldreløse".
Når det gjelder statene, er det en interessant nyanse: APT, når den brukes apt list --installed, Hopp over pakker merket som «avinstaller» (de som ble avinstallert, men som beholder konfigurasjonen). Disse vises i utdataene til apt list som for eksempel «restkonfigurasjon», mens dpkg --get-selections Ja, den viser dem direkte. Hvis noen av listene ikke samsvarer, anbefales det å se gjennom de opprinnelige resultatene og filtrere med grep å analysere disse grensetilfellene.
Grunnleggende apt-kommandoer for daglig bruk
Med ankomsten av den moderne kommandoen aptDebian og Ubuntu tilbyr et mer brukervennlig grensesnitt for vanlige pakkehåndteringsoppgaversamlende funksjoner som tidligere var delt mellom apt-get y apt-cacheSelv om den bruker de samme bibliotekene internt, er syntaksen mer praktisk og utdataene mer lesbare; dessuten sameksisterer den med andre formater på skrivebordet, for eksempel Administrer AppImage i Linux.
Filen /etc/apt/sources.list som vi nevnte tidligere konsentrater som standard Informasjon om alle arkiver som brukes av apt, i motsetning til verktøy som yum som vanligvis håndterer flere konfigurasjonsfiler. Dette forenkler det første oppsettet betraktelig for mindre erfarne brukere.
Oppdater informasjon om repositoriet
Før du installerer noe som helst, må APT ha den oppdaterte listen over repositoripakker For å finne ut hvilke versjoner som er tilgjengelige, bruk:
apt updatelaster ned pakkeindeksene på nytt fra alle konfigurerte arkiver.
Forskjellen med den gamle apt-get update er at apt viser svært nyttig tilleggsinformasjon, for eksempel antall pakker som kan oppdateres og en melding som foreslår å kjøre apt list --upgradable å se dem i detalj.
Søk etter pakker i repositoriene
For å finne et program eller bibliotek blant de tilgjengelige, kan vi bruk APTs innebygde søkTradisjonelt ble dette gjort med apt-cache searchmen kommandoen apt forenkle syntaksen:
apt search nombreoapt-cache search nombreDe søker i den nedlastede pakkedatabasen etter den angitte teksten.
Slik er det enkelt se hvilken pakke som tilsvarer et bestemt program (for eksempel, søk etter «gimp», «vlc» eller «libreoffice») og sjekk om det er tilgjengelig for din versjon av distribusjonen.
Installer og avinstaller pakker med apt
Den vanligste operasjonen du vil utføre med APT er installere og fjerne programvare fra arkiverSyntaksen her er veldig enkel:
apt install paqueteinstallerer den forespurte pakken og alt den trenger som en avhengighet.apt remove paqueteavinstallerer pakken, men beholder konfigurasjonsfilene.apt remove --purge paqueteoapt purge paquetefjerner pakken og også systemkonfigurasjonsfilene.
Når den bare brukes remove, "Rester" kan forbli i form av konfigurasjonskataloger eller konfigurasjonsfilerDette er normalt, slik at hvis du installerer appen på nytt, beholder den innstillingene dine. Hvis du ønsker en fullstendig fjerning, er slettingsalternativet det riktige alternativet.
Rydd opp i avdelinger og fjern rester av emballasje
Etter installasjon og avinstallering av programmer over tid, akkumuleres de Pakker som ble installert som avhengigheter av andre pakker, men som ikke lenger er nødvendigeFor å frigjøre plass og holde systemet rent, tilbyr APT:
apt autoremovefjerner automatisk installerte avhengigheter som ikke lenger kreves av noen av de installerte pakkene.
Denne ordren er spesielt nyttig fordi periodisk vedlikeholdstiltakfordi den fjerner gamle biblioteker og filer som bare bruker plass uten å bidra med noe til det nåværende systemet.
Oppdater installerte pakker med apt
Når depotindeksene er oppdaterte, er neste trinn Bruk tilgjengelige oppdateringer for installerte pakkerAPT skiller mellom to oppdateringsnivåer:
apt upgradeoppdaterer installerte pakker til de nyeste versjonene så lenge de ikke krever drastisk installasjon eller fjerning av tilleggspakker.apt full-upgradeutfører en mer aggressiv oppdatering, slik at du kan installere eller fjerne pakker om nødvendig for å fullføre prosessen (tilsvarende den gamleapt-get dist-upgrade).
Det er vanlig å løpe først apt update etterfulgt av apt upgrade som en del av rutinemessig vedlikehold, og reserve full-upgrade for større versjonsendringer eller når kjernen og viktige komponenter oppdateres.
Andre nyttige kommandoer fra apt-pakken
I tillegg til de mest populære bestillingene inkluderer APT Noen ekstra kommandoer som gjør livet mye enklere:
apt show paqueteviser detaljert informasjon om en pakke (beskrivelse, versjon, avhengigheter, kildelager osv.), med ordnet utdata og ingen irrelevante data.apt list: liste pakker i henhold til forskjellige filtre; med--installedviser den installerte og med--upgradablede som har en tilgjengelig oppdatering.apt edit-sourcesÅpner APT-kildefilen for å endre arkivene.
Alt dette gjør apt er en slags "sveitserkniv" innen pakkehåndtering, som dekker de fleste oppgavene en gjennomsnittlig bruker utfører daglig uten å måtte huske et stort batteri med underkommandoer.
Apt-get og aptitude: andre klassiske APT-grensesnitt
Selv om kommandoen apt har fått fremtredende plass de siste årene, apt-get og aptitude er fortsatt svært relevante verktøy i Debians økosystem. Hver av dem har sin plass, og det finnes overbevisende grunner til å vite i hvilken kontekst det er passende å bruke dem.
historisk apt-get var det første kommandolinjegrensesnittet for APTDen har vært til stede siden slutten av 90-tallet og omtalt i utallige skript og dokumentasjon, og ble designet for å tilby et stabilt og forutsigbart grensesnitt, ideelt for automatisering og ikke-interaktive oppgaver.
For sin del, aptitude ble født som et smartere og mer praktisk alternativ for brukere som foretrakk et interaktivt miljøDen tilbyr både en skriptkompatibel CLI-modus og et tekstmodusgrensesnitt (ncurses) med menyer, filtre og organiserte pakkevisninger.
Typiske apt-get-funksjoner og -kommandoer
med apt-get du kan utføre praktisk talt de samme oppgavene som med aptDen har imidlertid en noe mer ordrik syntaks og en mindre brukervennlig utdata. De mest brukte kommandoene er:
apt-get updateoppdaterer depotindeksene.apt-get upgradeoppdaterer installerte pakker uten å gjøre altfor påtrengende endringer.apt-get dist-upgrade: tilsvarendeapt full-upgrademoderne, slik at du kan installere og fjerne pakker for å fullføre en kompleks oppgradering.apt-get install paqueteinstallerer en pakke fra repositoriene ved å løse avhengigheter.apt-get remove paqueteyapt-get purge paqueteDe fjerner pakker, med eller uten konfigurasjonsfilene.
En viktig fordel med apt-get er at Oppførselen forblir ekstremt stabil mellom versjonerAv denne grunn anbefaler Debian-utviklerne fortsett å bruke det i skript og automatiseringer, siden apt Den er mer sluttbrukerorientert og kan endre utdatadetaljer eller standardverdier over tid.
Evne: ncurses-grensesnitt og avansert avhengighetsløsning
I motsetning til apt og apt-get, aptitude bidrar et veldig komplett tekstmodusgrensesnitt som startes ganske enkelt ved å kjøre sudo aptitude Uten argumenter. Fra den skjermen kan du:
- Bla gjennom etter pakkekategorier (installert, tilgjengelig, foreldet osv.).
- Søk og filtrer pakker ved hjelp av forskjellige kriterier (navn, beskrivelse, status).
- Velg flere pakker som skal installeres, oppdateres eller fjernes, og bruk alle endringene samtidig.
Dens største tekniske styrke ligger i avhengighetsløsningssystem basert på poengsummer og alternativerNår det er en kompleks konflikt, tilbyr aptitude vanligvis flere løsninger (for eksempel å avinstallere en pakke, beholde en eldre versjon eller installere flere), og lar brukeren markere hvilke deler av forslaget de foretrekker å beholde eller forkaste i neste forsøk på løsning.
Fra et kommandolinjeperspektiv, aptitude Den støtter også kommandoer som:
aptitude update: for å oppdatere pakkelisten.aptitude install paqueteyaptitude remove paquete: installer og fjern pakker på en måte som ligner på apt-get.aptitude full-upgradeutfør en fullstendig oppdatering med sin egen avhengighetsløsningslogikk.
Videre, evner Den registrerer i detalj hvilke pakker som ble installert manuelt og hvilke som ble installert som avhengigheter.og har alternativer for å fryse versjoner, merke pakker for å forhindre oppdateringer, osv. Noen av disse funksjonene kan replikeres i dag ved hjelp av apt-markImidlertid er ferdigheter fortsatt høyt verdsatt av administratorer som har brukt det i årevis.
Viktige forskjeller mellom dpkg, APT, apt-get, apt og aptitude
Etter å ha sett på hvert verktøy separat, er det nyttig å ta et gruppebilde for å forstå. Hva er egentlig forskjellene mellom dem, og når er det passende å bruke hver enkelt?Vi kan oppsummere det i tre nivåer: lav, middels og høy.
På det mest grunnleggende nivået finnes det dpkg, som virker direkte på lokale .deb-pakkerDen løser ikke avhengigheter eller kommuniserer med repositorier; den installerer, avinstallerer eller viser bare informasjon om en bestemt pakke. Den sammenlignes ofte med RPM i Red Hat-verdenen, siden de oppfyller lignende funksjoner i sine respektive distribusjonsfamilier.
På mellomnivå/høynivå har vi APT som et pakkehåndteringssystem med arkiver, informasjonslagring og automatisk avhengighetsløsningDen gir logikken for hva som er installert og hvorfra, hvilken som er den beste versjonen, osv. I Red Hat-verdenen ville parallellisme blitt funnet i verktøy som YUM eller DNF kjører på RPM.
Over APL er dens forskjellige frontender:
apt-get: det klassiske, robuste og stabile grensesnittet, sterkt orientert mot skript og automatisering.apt: det moderne sluttbrukergrensesnittet, som konsoliderer apt-get- og apt-cache-funksjonene og gir et tydeligere resultat.aptitudeen pakkebehandler på høyt nivå med valgfrie TUI-kurs og et spesielt sofistikert system for avhengighetsløsning.
Hvis vi fokuserer på APT versus DPKG, er den grunnleggende forskjellen at APT kan hente pakker fra eksterne arkiver, administrere flere kilder og håndtere alle avhengigheter., mens DPKG bare installerer og fjerner pakker som du sender til den som en lokal fil.
Hvis vi sammenligner apt og apt-get, tilbyr begge veldig like funksjoner for å installere, oppdatere eller fjerne pakkerMen apt forbedrer presentasjonen av informasjon, inkluderer fremdriftsindikatorer under installasjoner, og kombinerer ting som tidligere ble gjort med i én kommando. apt-get y apt-cacheI motsetning til dette gir apt-get et mer konservativt og stabilt kommandolinje-API over tid.
Når det gjelder evner, er dens viktigste kjennetegn ncurses-grensesnittet og avansert håndtering av avhengighetskonflikterMens apt og apt-get prøver å finne den «beste» løsningen samtidig, lar aptitude brukeren delta interaktivt i prosessen, og bestemme hvilke pakker som skal beholdes, hvilke som skal nedgraderes eller hvilke som skal fjernes.
Når skal man bruke dpkg, apt, apt-get eller aptitude på Debian-systemer
Når forskjellene er tydelige, er spørsmålet mange stiller seg hvilken kommando som skal brukes i hver spesifikke situasjonDet finnes ikke noe enkelt riktig svar, men det finnes ganske rimelige mønstre som mange administratorer og avanserte brukere følger.
For daglig bruk på et stasjonært eller lett serversystem er det mest praktiske alternativet vanligvis bruk kommando apt for nesten altoppdatere arkiver, søke etter applikasjoner, installere og avinstallere pakker, sjekke hva som kan oppdateres og gi ut regelmessige oppdateringer.
Når du arbeider med planlegging av installasjons-, distribusjons- eller vedlikeholdsskriptDen offisielle dokumentasjonen anbefaler selv å fortsette å stole på apt-get (y apt-cache (for spørringer), siden utdataoppførselen og alternativene er mye mer stabile mellom versjoner enn de av aptsom kan endre små detaljer fordi den er designet for mennesker og ikke så mye for maskiner.
dpkg er primært reservert for Lavnivåoperasjoner med håndnedlastede .deb-pakkerDet er nyttig for å inspisere innhold eller i tilfeller der du trenger svært fin kontroll og ikke vil at APT skal forstyrre ved å løse avhengigheter for deg. Det er også veldig nyttig for sofistikerte pakkeskript eller for feilsøking av spesifikke problemer med .deb-filer.
For sin del skinner evner vanligvis når Du står overfor veldig kompliserte avhengighetskonflikter i eldre eller svært tilpassede Debian-miljøer. Oppløsningsmotoren tilbyr vanligvis flere alternativer, og ncurses-grensesnittet er veldig praktisk for å utforske hvilke endringer som vil bli gjort før en større operasjon godtas.
Til syvende og sist eksisterer hele dette økosystemet av verktøy fordi Hvert nivå løser et annet problem innen pakkehåndtering i Debiandpkg som lavnivåutstyret, APT som hjernen som bestemmer hva som skal installeres og hvorfra, og dens forskjellige brukergrensesnitt (apt, apt-get, aptitude) som synlige ansikter tilpasset forskjellige brukerprofiler, fra den mest nybegynneren til administratoren som lever limt til terminalen.
Lidenskapelig forfatter om verden av bytes og teknologi generelt. Jeg elsker å dele kunnskapen min gjennom å skrive, og det er det jeg skal gjøre i denne bloggen, vise deg alle de mest interessante tingene om dingser, programvare, maskinvare, teknologiske trender og mer. Målet mitt er å hjelpe deg med å navigere i den digitale verden på en enkel og underholdende måte.