Zoeken op website

Hoe 'yum-utils' te installeren en te gebruiken om Yum te behouden en de prestaties te verbeteren


Ongeacht dat Fedora dnf begint te adopteren als de nieuwe pakketbeheerder en standaard pakketbeheerbibliotheek, het zal de goede oude yum pakketbeheerder niet voorgoed vervangen in andere spin-off distributies (zoals Red Hat Enterprise Linux (RHEL) en CentOS) totdat het net zo betrouwbaar en solide is gebleken (volgens de Fedora Project wiki, van 15 november 2015, dnf is nog steeds in testbare staat). Je yum-management vaardigheden zullen je dus nog geruime tijd goed van pas komen.

Om die reden laten we je in deze handleiding kennismaken met yum-utils, een verzameling hulpprogramma's die met yum integreren om de oorspronkelijke functies op verschillende manieren uit te breiden, waardoor het krachtiger en gemakkelijker te gebruiken wordt.

Yum-utils installeren in RHEL/CentOS

Yum-utils is opgenomen in de basisrepository (die standaard is ingeschakeld), dus het installeren ervan in elke op Fedora gebaseerde distributie is net zo eenvoudig als:

yum update && yum install yum-utils

Alle hulpprogramma's van yum-utils worden automatisch geïnstalleerd met het hoofdpakket, dat we in de volgende sectie zullen beschrijven.

Ontdek hulpprogramma's aangeboden door het yum-utils-pakket

De tools die door yum-utils worden geleverd, worden vermeld op de manpagina:

man yum-utils

Hier zijn 10 van die yum hulpprogramma's waarvan we dachten dat je daarin geïnteresseerd zou zijn:

1. Debug een pakket

debuginfo-install installeert de debuginfo pakketten (en hun afhankelijkheden) die nodig zijn voor het debuggen van <pakketnaam> in geval van een crash of tijdens het ontwikkelen van applicaties die een bepaald pakket gebruiken.

Om fouten in een pakket (of een ander uitvoerbaar bestand) te kunnen debuggen, moeten we ook gdb (de GNU-foutopsporing) installeren en deze gebruiken om een programma in de foutopsporingsmodus te starten.

Bijvoorbeeld:

gdb $(which postfix)

Het bovenstaande commando start een gdb-shell waarin we acties kunnen typen die moeten worden uitgevoerd. run (zoals weergegeven in de onderstaande afbeelding) zal het programma bijvoorbeeld starten, terwijl bt (niet weergegeven) de stacktrace zal weergeven (ook bekend als backtrace ) van het programma, dat een lijst met functieaanroepen zal bieden die tot een bepaald punt in de uitvoering van het programma hebben geleid (met behulp van deze informatie kunnen zowel ontwikkelaars als systeembeheerders erachter komen wat er mis is gegaan in geval van een crash).

Andere beschikbare acties en hun verwachte resultaten worden vermeld in man gdb.

2. Zoek de opslagplaats van geïnstalleerde pakketten

De volgende opdracht laat zien vanuit welke repository de momenteel geïnstalleerde pakketten zijn geïnstalleerd:

find-repos-of-install httpd postfix dovecot

Als het zonder argumenten wordt uitgevoerd, zal find-repos-of-install de volledige lijst met momenteel geïnstalleerde pakketten retourneren.

3. Verwijder dubbele of zwevende pakketten

package-cleanup beheert het opschonen van pakketten, duplicaten, verweesde pakketten (programma's geïnstalleerd vanaf een andere bron dan de momenteel geconfigureerde opslagplaatsen) en andere inconsistenties in afhankelijkheid, inclusief het verwijderen van oude kernels, zoals weergegeven in het volgende voorbeeld:

package-cleanup --orphans
package-cleanup --oldkernels

U hoeft zich geen zorgen te maken dat het laatste commando uw kernel beschadigt. Het heeft alleen invloed op oude kernelpakketten (versies die ouder zijn dan de huidige versie) die niet meer nodig zijn.

4. Ontdek de lijst met pakketafhankelijkheid

repo-graph retourneert een volledige lijst met pakketafhankelijkheid in dot-indeling voor alle pakketten die beschikbaar zijn in de geconfigureerde opslagplaatsen. Als alternatief kan repo-graph dezelfde informatie per repository retourneren als deze wordt gebruikt met de optie --repoid=.

Laten we bijvoorbeeld de afhankelijkheden voor elk pakket in de updatesrepository bekijken:

repo-graph --repoid=updates | less

In het bovenstaande commando sturen we de uitvoer van repo-graph naar minder voor eenvoudigere visualisatie, maar je kunt het ook omleiden naar een lokaal bestand voor latere inspectie:

repo-graph --repoid=updates > updates-dependencies.txt

In beide gevallen kunnen we zien dat het iputils pakket afhankelijk is van systemd en openssl-libs.

5. Controlelijst met onopgeloste afhankelijkheden

repoclosure leest de metagegevens van geconfigureerde opslagplaatsen, controleert de afhankelijkheden van de pakketten die daarin zijn opgenomen en geeft een lijst met onopgeloste afhankelijkheden voor elk pakket weer:

repoclosure

6. Hoe u de nieuwste of oudste pakketten in een directory kunt controleren

repomanage doorzoekt een map met rpm-pakketten en retourneert een lijst met de nieuwste of oudste pakketten in een map. Deze tool kan van pas komen als u een directory heeft waarin u meerdere .rpm pakketten van verschillende programma's opslaat.

Wanneer repomanage wordt uitgevoerd zonder argumenten, retourneert het de nieuwste pakketten. Als het wordt uitgevoerd met de vlag --old, worden de oudste pakketten geretourneerd:

ls -l
cd rpms
ls -l rpms
repomanage rpms

Houd er rekening mee dat het wijzigen van de naam van de rpm-pakketten GEEN invloed heeft op de werking van repomanage.

7. Query Yum Repositories om informatie over het pakket te krijgen

repoquery doorzoekt yum-repository's en haalt aanvullende informatie op over pakketten, of ze nu zijn geïnstalleerd of niet (afhankelijkheden, bestanden die in het pakket zijn opgenomen, en meer).

Htop (Linux Process Monitoring) is momenteel bijvoorbeeld niet op dit systeem geïnstalleerd, zoals u hieronder kunt zien:

which htop
rpm -qa | grep htop

Stel nu dat we de afhankelijkheden van htop willen weergeven, samen met de bestanden die zijn opgenomen in een standaardinstallatie. Om dit te doen, voert u respectievelijk de volgende twee opdrachten uit:

repoquery --requires htop
repoquery --list htop

8. Dump alle geïnstalleerde RPM-pakketten in een zipbestand

Met yum-debug-dump kun je een volledige lijst van alle pakketten die je hebt geïnstalleerd, alle pakketten die beschikbaar zijn in elke repository, belangrijke configuratie- en systeeminformatie in een gecomprimeerd bestand dumpen.

Dit kan van pas komen als u een opgetreden probleem wilt opsporen. Voor ons gemak noemt yum-debug-dump het bestand als yum_debug_dump--, waardoor we de veranderingen in de loop van de tijd kunnen volgen .

yum-debug-dump

Zoals bij elk gecomprimeerd tekstbestand kunnen we de inhoud ervan bekijken met de opdracht zless:

zless yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

Mocht je de configuratie-informatie geleverd door yum-debug-dump moeten herstellen, dan kun je yum-debug-restore hiervoor gebruiken:

yum-debug-restore yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

9. Bron-RPM's downloaden van Yum Repositories

yumdownloader downloadt bron-RPM-bestanden uit opslagplaatsen, inclusief hun afhankelijkheden. Handig om een netwerkrepository te maken die toegankelijk is vanaf andere machines met beperkte internettoegang.

Met Yumdownloader kun je niet alleen de binaire RPM's downloaden, maar ook de bron-RPM's (indien gebruikt met de optie --source).

Laten we bijvoorbeeld een map maken met de naam htop-files, waarin we de RPM(s) opslaan die nodig zijn om het programma te installeren met behulp van rpm. Om dit te doen, moeten we de --resolve schakelaar samen met yumdownloader gebruiken:

mkdir htop-files
cd htop-files
yumdownloader --resolve htop
rpm -Uvh 

10. Synchroniseer een externe Yum-repository met een lokale map

reposync is nauw verwant aan yumdownloader (in feite ondersteunen ze bijna dezelfde opties) maar biedt een aanzienlijk voordeel. In plaats van binaire of bron-RPM-bestanden te downloaden, synchroniseert het een externe opslagplaats met een lokale map.

Laten we de bekende EPEL-repository synchroniseren met een submap met de naam epel-local in de huidige werkmap:

man reposync
mkdir epel-local
reposync --repoid=epel --download_path=epel-local

Houd er rekening mee dat dit proces enige tijd in beslag zal nemen, aangezien 8867 pakketten worden gedownload:

Zodra de synchronisatie is voltooid, controleren we de hoeveelheid schijfruimte die wordt gebruikt door onze nieuw gemaakte spiegel van de EPEL-repository met behulp van de opdracht du:

du -sch epel-local/*

Het is nu aan jou of je deze EPEL-mirror wilt behouden of deze wilt gebruiken om pakketten te installeren in plaats van een externe spiegelserver te gebruiken. Houd er in het eerste geval rekening mee dat u /etc/yum.repos.d/epel.repo dienovereenkomstig moet aanpassen.

11. Herstel onvoltooide of afgebroken Yum-transacties

yum-complete-transaction is een onderdeel van het yum-utils programma dat onvoltooide of afgebroken yum-transacties op een systeem onderschept en probeert deze te voltooien.

Als we bijvoorbeeld de Linux-servers updaten via yum pakketbeheerder, wordt er soms een waarschuwingsbericht gegenereerd dat als volgt luidt:

Er zijn nog onvoltooide transacties over. Je zou kunnen overwegen om eerst yum-complete-transaction uit te voeren om ze af te ronden.

Om dergelijke waarschuwingsberichten op te lossen en een dergelijk probleem op te lossen, komt de opdracht yum-complete-transaction in beeld om de onvoltooide transacties te voltooien. Het vindt de onvolledige of afgebroken yum-transacties in transaction-all* en transaction-done* bestanden die gevonden kunnen worden in de map /var/lib/yum.

Voer de opdracht yum-complete-transaction uit om onvolledige yum-transacties te voltooien:


yum-complete-transaction --cleanup-only

Nu zullen yum-opdrachten worden uitgevoerd zonder de onvolledige transactiewaarschuwingen.


yum update

Opmerking: deze tip wordt voorgesteld door een van onze vaste lezers Mr. Tomas in het commentaargedeelte hier.

Samenvatting

In dit artikel hebben we enkele van de handigste hulpprogramma's besproken die via yum-utils worden aangeboden. Voor een volledige lijst kun je de manpagina raadplegen (man yum-utils).

Bovendien heeft elk van deze tools een aparte man-pagina (zie bijvoorbeeld man reposync), wat de primaire bron van documentatie is die u zou moeten raadplegen als u er meer over wilt weten.

Als je even de tijd neemt om de manpagina van yum-utils te bekijken, zul je misschien een ander hulpmiddel vinden dat we graag in een apart artikel uitgebreider willen bespreken. Als dat zo is, of als u vragen, opmerkingen of suggesties heeft over dit artikel, kunt u ons laten weten welke door ons een bericht te sturen via het onderstaande opmerkingenformulier.