Linux Package Management med Yum, RPM, Apt, Dpkg, Aptitude og Zypper - Del 9
I august i fjor kunngjorde Linux Foundation LFCS-sertifiseringen (Linux Foundation Certified Sysadmin), en skinnende sjanse for systemadministratorer overalt til å demonstrere, gjennom en ytelsesbasert eksamen, at de er i stand til å lykkes med generell driftsstøtte for Linux-systemer. En Linux Foundation-sertifisert Sysadmin har ekspertisen til å sikre effektiv systemstøtte, førstenivå feilsøking og overvåking, inkludert til slutt problemeskalering, når det er nødvendig, til tekniske støtteteam.
Se følgende video som forklarer Linux Foundation Certification Program.
Denne artikkelen er en del 9 av en lang serie med 10 opplæringsprogrammer. I dag vil vi i denne artikkelen veilede deg om Linux Package Management, som kreves for LFCS-sertifiseringseksamenen.
Pakkehåndtering
Med få ord er pakkehåndtering en metode for å installere og vedlikeholde (som inkluderer oppdatering og sannsynligvis også fjerning) programvare på systemet.
I de første dagene av Linux ble programmer bare distribuert som kildekode, sammen med de nødvendige man-sidene, de nødvendige konfigurasjonsfilene og mer. I dag bruker de fleste Linux-distributører som standard forhåndsbygde programmer eller sett med programmer kalt pakker, som presenteres for brukere klare for installasjon på den distribusjonen. Imidlertid er et av underverkene med Linux fortsatt muligheten til å få tak i kildekoden til et program som skal studeres, forbedres og kompileres.
Hvordan pakkehåndteringssystemer fungerer
Hvis en bestemt pakke krever en bestemt ressurs, for eksempel et delt bibliotek, eller en annen pakke, sies det å ha en avhengighet. Alle moderne pakkehåndteringssystemer gir en eller annen metode for avhengighetsløsning for å sikre at når en pakke er installert, blir alle avhengighetene også installert.
Emballasjesystemer
Nesten all programvaren som er installert på et moderne Linux-system vil bli funnet på Internett. Den kan enten leveres av distribusjonsleverandøren gjennom sentrale repositories (som kan inneholde flere tusen pakker, som hver er spesifikt bygget, testet og vedlikeholdt for distribusjonen) eller være tilgjengelig i kildekode som kan lastes ned og installeres manuelt .
Fordi forskjellige distribusjonsfamilier bruker forskjellige pakkesystemer (Debian: *.deb/CentOS: *.rpm/openSUSE: *.rpm bygget spesielt for openSUSE), vil en pakke beregnet for én distribusjon ikke være kompatibel med en annen distribusjon. Imidlertid vil de fleste distribusjoner sannsynligvis falle inn i en av de tre distribusjonsfamiliene som dekkes av LFCS-sertifiseringen.
Pakkeverktøy på høyt og lavt nivå
For å utføre oppgaven med pakkehåndtering effektivt, må du være klar over at du vil ha to typer tilgjengelige verktøy: lavnivå-verktøy (som håndterer i backend selve installasjonen, oppgraderingen og fjerning av pakkefiler), og høynivå-verktøy (som har ansvaret for å sikre at oppgavene med avhengighetsoppløsning og metadatasøk - ”data om dataene”- blir utført).
DISTRIBUTION | LOW-LEVEL TOOL | HIGH-LEVEL TOOL |
Debian and derivatives | dpkg | apt-get / aptitude |
CentOS | rpm | yum |
openSUSE | rpm | zypper |
La oss se beskrivelsen av lavnivå- og høynivåverktøyene.
dpkg er en lavnivåpakkebehandling for Debian-baserte systemer. Den kan installere, fjerne, gi informasjon om og bygge *.deb-pakker, men den kan ikke automatisk laste ned og installere deres tilsvarende avhengigheter.
Les mer: Eksempler på 15 dpkg-kommandoer
apt-get er en pakkebehandling på høyt nivå for Debian og derivater, og gir en enkel måte å hente og installere pakker, inkludert avhengighetsløsning, fra flere kilder ved å bruke kommandolinjen. I motsetning til dpkg, fungerer ikke apt-get direkte med *.deb-filer, men med pakkens egennavn.
Les mer: 25 apt-get kommandoeksempler
aptitude er en annen pakkebehandling på høyt nivå for Debian-baserte systemer, og kan brukes til å utføre administrasjonsoppgaver (installere, oppgradere og fjerne pakker, også håndtere avhengighetsløsning automatisk) på en rask og enkel måte . Det gir samme funksjonalitet som apt-get og flere, for eksempel å tilby tilgang til flere versjoner av en pakke.
rpm er pakkehåndteringssystemet som brukes av Linux Standard Base (LSB)-kompatible distribusjoner for lavnivåhåndtering av pakker. Akkurat som dpkg, kan den spørre, installere, verifisere, oppgradere og fjerne pakker, og brukes oftere av Fedora-baserte distribusjoner, som RHEL og CentOS.
Les mer: Eksempler på 20 rpm-kommandoer
nam legger til funksjonaliteten til automatiske oppdateringer og pakkeadministrasjon med avhengighetsstyring til RPM-baserte systemer. Som et verktøy på høyt nivå, som apt-get eller aptitude, fungerer yum med repositories.
Les mer: Eksempler på 20 yum-kommandoer
Vanlig bruk av lavnivåverktøy
De vanligste oppgavene du vil gjøre med verktøy på lavt nivå er som følger:
1. Installere en pakke fra en kompilert (*.deb eller *.rpm) fil
Ulempen med denne installasjonsmetoden er at ingen avhengighetsoppløsning er gitt. Du vil mest sannsynlig velge å installere en pakke fra en kompilert fil når en slik pakke ikke er tilgjengelig i distribusjonens depoter og derfor ikke kan lastes ned og installeres gjennom et høynivåverktøy. Siden lavnivåverktøy ikke utfører avhengighetsoppløsning, vil de avsluttes med en feil hvis vi prøver å installere en pakke med uoppfylte avhengigheter.
dpkg -i file.deb [Debian and derivative]
rpm -i file.rpm [CentOS / openSUSE]
Merk: Ikke prøv å installere på CentOS en *.rpm-fil som ble bygget for openSUSE, eller omvendt!
2. Oppgradere en pakke fra en kompilert fil
Igjen, du vil bare oppgradere en installert pakke manuelt når den ikke er tilgjengelig i de sentrale depotene.
dpkg -i file.deb [Debian and derivative]
rpm -U file.rpm [CentOS / openSUSE]
3. Oppføring av installerte pakker
Når du først får tak i et allerede fungerende system, er sjansen stor for at du vil vite hvilke pakker som er installert.
dpkg -l [Debian and derivative]
rpm -qa [CentOS / openSUSE]
Hvis du vil vite om en spesifikk pakke er installert, kan du sende utdataene fra kommandoene ovenfor til grep, som forklart i manipulere filer i Linux – del 1 av denne serien. Anta at vi må bekrefte om pakken mysql-common er installert på et Ubuntu-system.
dpkg -l | grep mysql-common
En annen måte å finne ut om en pakke er installert på.
dpkg --status package_name [Debian and derivative]
rpm -q package_name [CentOS / openSUSE]
La oss for eksempel finne ut om pakken sysdig er installert på systemet vårt.
rpm -qa | grep sysdig
4. Finne ut hvilken pakke som installerte en fil
dpkg --search file_name
rpm -qf file_name
For eksempel, hvilken pakke installerte pw_dict.hwm?
rpm -qf /usr/share/cracklib/pw_dict.hwm
Vanlig bruk av verktøy på høyt nivå
De vanligste oppgavene du vil gjøre med verktøy på høyt nivå er som følger.
1. Søke etter en pakke
aptitude update vil oppdatere listen over tilgjengelige pakker, og aptitude search vil utføre det faktiske søket etter package_name.
aptitude update && aptitude search package_name
I søk alle-alternativet vil yum søke etter pakkenavn ikke bare i pakkenavn, men også i pakkebeskrivelser.
yum search package_name
yum search all package_name
yum whatprovides “*/package_name”
La oss anta at vi trenger en fil hvis navn er sysdig. For å vite den pakken vi må installere, la oss kjøre.
yum whatprovides “*/sysdig”
whatprovides ber yum om å søke i pakken vil gi en fil som samsvarer med det regulære uttrykket ovenfor.
zypper refresh && zypper search package_name [On openSUSE]
2. Installere en pakke fra et depot
Mens du installerer en pakke, kan du bli bedt om å bekrefte installasjonen etter at pakkebehandlingen har løst alle avhengigheter. Merk at å kjøre oppdatering eller oppdatering (i henhold til pakkebehandlingen som brukes) ikke er strengt nødvendig, men å holde installerte pakker oppdatert er en god systemadministratorpraksis av sikkerhets- og avhengighetsgrunner.
aptitude update && aptitude install package_name [Debian and derivatives]
yum update && yum install package_name [CentOS]
zypper refresh && zypper install package_name [openSUSE]
3. Fjerne en pakke
Alternativet fjern vil avinstallere pakken, men la konfigurasjonsfilene være intakte, mens rensing vil slette alle spor av programmet fra systemet ditt.
# aptitude fjern/purge package_name
# yum slett pakkenavn
---Notice the minus sign in front of the package that will be uninstalled, openSUSE ---
zypper remove -package_name
De fleste (om ikke alle) pakkebehandlere vil som standard spørre deg om du er sikker på å fortsette med avinstalleringen før du faktisk utfører den. Så les meldingene på skjermen nøye for å unngå unødvendige problemer!
4. Vise informasjon om en pakke
Følgende kommando vil vise informasjon om bursdagspakken.
aptitude show birthday
yum info birthday
zypper info birthday
Sammendrag
Pakkehåndtering er noe du bare ikke kan feie under teppet som systemadministrator. Du bør være forberedt på å bruke verktøyene beskrevet i denne artikkelen med et øyeblikks varsel. Håper du finner det nyttig i forberedelsene til LFCS-eksamenen og til dine daglige gjøremål. Legg gjerne igjen kommentarer eller spørsmål nedenfor. Vi kommer mer enn gjerne tilbake til deg så snart som mulig.