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.