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 <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-
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.