Zoeken op website

Linux-pakketbeheer met Yum, RPM, Apt, Dpkg, Aptitude en Zypper - Deel 9


Afgelopen augustus kondigde de Linux Foundation de LFCS-certificering aan (Linux Foundation Certified Sysadmin), een schitterende kans voor systeembeheerders overal ter wereld om door middel van een op prestaties gebaseerd examen aan te tonen dat zij zijn in staat om te slagen in algemene operationele ondersteuning voor Linux-systemen. Een door de Linux Foundation gecertificeerde Sysadmin heeft de expertise om effectieve systeemondersteuning, probleemoplossing en monitoring op het eerste niveau te garanderen, inclusief uiteindelijk escalatie van problemen, indien nodig, naar technische ondersteuningsteams.

Bekijk de volgende video waarin uitleg wordt gegeven over het Linux Foundation-certificeringsprogramma.

Dit artikel is deel 9 van een lange serie van 10 tutorials. Vandaag zullen we u in dit artikel begeleiden over Linux-pakketbeheer, dat vereist is voor het LFCS-certificeringsexamen.

Pakketbeheer

In enkele woorden is pakketbeheer een methode voor het installeren en onderhouden (waaronder het updaten en waarschijnlijk ook verwijderen) van software op het systeem.

In de begindagen van Linux werden programma's alleen als broncode verspreid, samen met de vereiste manpagina's, de benodigde configuratiebestanden en meer. Tegenwoordig gebruiken de meeste Linux-distributeurs standaard vooraf gebouwde programma's of sets van programma's die pakketten worden genoemd en die aan gebruikers worden gepresenteerd, klaar voor installatie op die distributie. Een van de wonderen van Linux is echter nog steeds de mogelijkheid om de broncode te verkrijgen van een programma dat bestudeerd, verbeterd en gecompileerd moet worden.

Hoe pakketbeheersystemen werken

Als een bepaald pakket een bepaalde bron vereist, zoals een gedeelde bibliotheek of een ander pakket, wordt er gezegd dat het een afhankelijkheid heeft. Alle moderne pakketbeheersystemen bieden een methode voor het oplossen van afhankelijkheid om ervoor te zorgen dat wanneer een pakket wordt geïnstalleerd, alle afhankelijkheden ook worden geïnstalleerd.

Verpakkingssystemen

Bijna alle software die op een modern Linux-systeem wordt geïnstalleerd, is op internet te vinden. Het kan worden geleverd door de distributieleverancier via centrale opslagplaatsen (die enkele duizenden pakketten kunnen bevatten, die elk specifiek voor de distributie zijn gebouwd, getest en onderhouden) of beschikbaar zijn in broncode die handmatig kan worden gedownload en geïnstalleerd. .

Omdat verschillende distributiefamilies verschillende verpakkingssystemen gebruiken (Debian: *.deb/CentOS: *.rpm/openSUSE: *.rpm speciaal gebouwd voor openSUSE), zal een pakket dat bedoeld is voor de ene distributie niet compatibel zijn met een andere distributie. De meeste distributies vallen echter waarschijnlijk in een van de drie distributiefamilies die onder de LFCS-certificering vallen.

Pakkettools op hoog en laag niveau

Om de taak van pakketbeheer effectief uit te voeren, moet u zich ervan bewust zijn dat u over twee typen beschikbare hulpprogramma's beschikt: hulpprogramma's op laag niveau (die in de backend de daadwerkelijke installatie, upgrade en verwijdering van pakketbestanden) en tools van hoog niveau (die ervoor moeten zorgen dat de taken van het oplossen van afhankelijkheid en het zoeken naar metagegevens - "gegevens over de gegevens" - worden uitgevoerd).

DISTRIBUTION LOW-LEVEL TOOL HIGH-LEVEL TOOL
 Debian and derivatives  dpkg  apt-get / aptitude
 CentOS  rpm  yum
 openSUSE  rpm  zypper

Laten we eens kijken naar de beschrijving van de tools op laag en hoog niveau.

dpkg is een pakketbeheerder op laag niveau voor op Debian gebaseerde systemen. Het kan *.deb-pakketten installeren, verwijderen, er informatie over geven en het bouwen, maar het kan de bijbehorende afhankelijkheden niet automatisch downloaden en installeren.

Lees meer: 15 dpkg-opdrachtvoorbeelden

apt-get is een pakketbeheerder op hoog niveau voor Debian en derivaten, en biedt een eenvoudige manier om pakketten op te halen en te installeren, inclusief het oplossen van afhankelijkheid, uit meerdere bronnen met behulp van de opdrachtregel. In tegenstelling tot dpkg werkt apt-get niet rechtstreeks met *.deb-bestanden, maar met de eigennaam van het pakket.

Lees meer: 25 apt-get-opdrachtvoorbeelden

aptitude is een andere pakketbeheerder op hoog niveau voor op Debian gebaseerde systemen, en kan worden gebruikt om beheertaken uit te voeren (pakketten installeren, upgraden en verwijderen, en ook automatisch de oplossing van afhankelijkheid afhandelen) op een snelle en gemakkelijke manier . Het biedt dezelfde functionaliteit als apt-get en aanvullende functionaliteiten, zoals het bieden van toegang tot verschillende versies van een pakket.

rpm is het pakketbeheersysteem dat wordt gebruikt door Linux Standard Base (LSB)-compatibele distributies voor de verwerking van pakketten op laag niveau. Net als dpkg kan het pakketten opvragen, installeren, verifiëren, upgraden en verwijderen, en wordt het vaker gebruikt door op Fedora gebaseerde distributies, zoals RHEL en CentOS.

Lees meer: 20 rpm-opdrachtvoorbeelden

yum voegt de functionaliteit van automatische updates en pakketbeheer met afhankelijkheidsbeheer toe aan op RPM gebaseerde systemen. Als een tool op hoog niveau, zoals apt-get of aptitude, werkt yum met repositories.

Lees meer: 20 yum-opdrachtvoorbeelden

Algemeen gebruik van tools op laag niveau

De meest voorkomende taken die u zult uitvoeren met tools op laag niveau zijn als volgt:

1. Een pakket installeren vanuit een gecompileerd bestand (*.deb of *.rpm).

Het nadeel van deze installatiemethode is dat er geen afhankelijkheidsresolutie wordt geboden. U zult er hoogstwaarschijnlijk voor kiezen om een pakket uit een gecompileerd bestand te installeren als een dergelijk pakket niet beschikbaar is in de repository's van de distributie en daarom niet kan worden gedownload en geïnstalleerd via een tool op hoog niveau. Omdat tools op laag niveau geen afhankelijkheidsresolutie uitvoeren, zullen ze afsluiten met een foutmelding als we proberen een pakket te installeren met niet-vervulde afhankelijkheden.

dpkg -i file.deb 		[Debian and derivative]
rpm -i file.rpm 		[CentOS / openSUSE]

Opmerking: Probeer niet op CentOS een *.rpm-bestand te installeren dat is gebouwd voor openSUSE, of omgekeerd!

2. Een pakket upgraden vanuit een gecompileerd bestand

Nogmaals, u zult een geïnstalleerd pakket alleen handmatig upgraden als het niet beschikbaar is in de centrale opslagplaatsen.

dpkg -i file.deb 		[Debian and derivative]
rpm -U file.rpm 		[CentOS / openSUSE]
3. Lijst met geïnstalleerde pakketten

Wanneer u voor het eerst een reeds werkend systeem in handen krijgt, is de kans groot dat u wilt weten welke pakketten zijn geïnstalleerd.

dpkg -l 		[Debian and derivative]
rpm -qa 		[CentOS / openSUSE]

Als je wilt weten of een specifiek pakket is geïnstalleerd, kun je de uitvoer van de bovenstaande opdrachten doorsturen naar grep, zoals uitgelegd in Bestanden manipuleren in Linux – Deel 1 van deze serie. Stel dat we moeten verifiëren of pakket mysql-common op een Ubuntu-systeem is geïnstalleerd.

dpkg -l | grep mysql-common

Een andere manier om te bepalen of een pakket is geïnstalleerd.

dpkg --status package_name 		[Debian and derivative]
rpm -q package_name 			[CentOS / openSUSE]

Laten we bijvoorbeeld eens kijken of pakket sysdig op ons systeem is geïnstalleerd.

rpm -qa | grep sysdig

4. Uitzoeken welk pakket een bestand heeft geïnstalleerd
dpkg --search file_name
rpm -qf file_name

Welk pakket heeft bijvoorbeeld pw_dict.hwm geïnstalleerd?

rpm -qf /usr/share/cracklib/pw_dict.hwm

Algemeen gebruik van tools op hoog niveau

De meest voorkomende taken die u met tools van hoog niveau zult uitvoeren, zijn als volgt.

1. Een pakket zoeken

aptitude update zal de lijst met beschikbare pakketten bijwerken, en aptitude search zal de daadwerkelijke zoekopdracht naar pakketnaam uitvoeren.

aptitude update && aptitude search package_name 

In de optie Alles zoeken zal yum niet alleen naar pakketnaam zoeken in pakketnamen, maar ook in pakketbeschrijvingen.

yum search package_name
yum search all package_name
yum whatprovides “*/package_name”

Laten we veronderstellen dat we een bestand nodig hebben met de naam sysdig. Laten we rennen om te weten welk pakket we moeten installeren.

yum whatprovides “*/sysdig”

whatprovides vertelt yum om het pakket te doorzoeken en zal een bestand leveren dat overeenkomt met de bovenstaande reguliere expressie.

zypper refresh && zypper search package_name		[On openSUSE]
2. Een pakket installeren vanuit een repository

Tijdens het installeren van een pakket wordt u mogelijk gevraagd de installatie te bevestigen nadat de pakketbeheerder alle afhankelijkheden heeft opgelost. Merk op dat het uitvoeren van een update of vernieuwing (afhankelijk van de gebruikte pakketbeheerder) niet strikt noodzakelijk is, maar het up-to-date houden van geïnstalleerde pakketten is een goede sysadmin-praktijk vanwege veiligheids- en afhankelijkheidsredenen.

aptitude update && aptitude install package_name 		[Debian and derivatives]
yum update && yum install package_name 			[CentOS]
zypper refresh && zypper install package_name 		[openSUSE]
3. Een pakket verwijderen

De optie verwijderen zal het pakket verwijderen, maar de configuratiebestanden intact laten, terwijl opschonen elk spoor van het programma van uw systeem zal wissen.
# aptitude remove/purge pakketnaam
# yum wis pakketnaam

---Notice the minus sign in front of the package that will be uninstalled, openSUSE ---

zypper remove -package_name 

De meeste (zo niet alle) pakketbeheerders zullen u standaard vragen of u zeker weet dat u door wilt gaan met het verwijderen voordat u dit daadwerkelijk uitvoert. Lees dus aandachtig de berichten op het scherm om onnodige problemen te voorkomen!

4. Informatie over een pakket weergeven

Met de volgende opdracht wordt informatie weergegeven over het verjaardag-pakket.

aptitude show birthday 
yum info birthday
zypper info birthday

Samenvatting

Pakketbeheer is iets dat je als systeembeheerder niet onder het tapijt kunt vegen. U moet bereid zijn om de hulpmiddelen die in dit artikel worden beschreven, binnen een mum van tijd te gebruiken. Ik hoop dat je het nuttig vindt bij je voorbereiding op het LFCS-examen en bij je dagelijkse taken. Laat gerust uw opmerkingen of vragen hieronder achter. Wij komen graag zo snel mogelijk bij u terug.