Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: ✔️ Virtuele Linux-machines
In dit artikel worden veelvoorkomende problemen besproken en opgelost die u kunt ondervinden wanneer u hulpprogramma's voor pakketbeheer gebruikt yum
om dnf
toepassingen te installeren of bij te werken op virtuele Microsoft Azure-machines (VM's).
Let op
Dit artikel verwijst naar CentOS, een Linux-distributie die het einde van de levensduur van de ondersteuning (EOL) heeft bereikt. Overweeg uw gebruik en planning dienovereenkomstig. Zie de Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.
Overzicht
Het yum-opdrachtregelprogramma voor pakketbeheer wordt gebruikt in Linux-distributies die gebruikmaken van de RPM-Pakketbeheer. De naam van het hulpprogramma is een acroniem voor 'Yellowdog Updater Modified' en is oorspronkelijk ontwikkeld voor Yellow Dog Linux. Het yum
hulpprogramma heeft wijdverspreid gebruik gekregen, met name in RPM-distributies zoals Red Hat Enterprise Linux (RHEL), CentOS, Oracle Linux, Mariner en Fedora.
Het dnf-opdrachtregelprogramma voor pakketbeheer of 'Dandified Yum' is een gemoderniseerd en uitgebreid hulpprogramma voor pakketbeheer voor LINUX-distributies op basis van RPM.
Scenario 1: Probleem met toegang tot opslagplaats
U ondervindt fouten die van toepassing zijn op certificaten of netwerkconnectiviteit.
Een validatiescript uitvoeren
Azure biedt het controlescript voor de Red Hat Update Infrastructure (RHUI)-opslagplaats op GitHub. Dit Python-script bevat de volgende functies:
- Valideert het RHUI-clientcertificaat.
- Valideert consistentie RHUI rpm.
- Controleert de consistentie tussen configuraties van uitgebreide updateondersteuning (EUS) en niet-EUS-opslagplaatsconfiguraties en hun vereisten.
- Valideert de connectiviteit met de RHUI-opslagplaatsen.
- Rapporteert de verbinding met de opslagplaats als er geen fouten worden gedetecteerd.
- Controleert de SSL-verbinding met de RHUI-opslagplaatsen.
- Richt zich uitsluitend op de RHUI-opslagplaatsen.
- Controleert een gevonden fout met behulp van de gedefinieerde voorwaarden en geeft aanbevelingen voor een oplossing.
Ondersteunde Red Hat-installatiekopieën
Deze versie van het controlescript ondersteunt momenteel alleen de volgende Red Hat-VM's die zijn geïmplementeerd vanuit de Azure Marketplace-installatiekopie:
- RHEL 7.x PAYG-VM's
- RHEL 8.x PAYG-VM's
- RHEL 9.x PAYG-VM's
- RHEL 10. x PAYG-VM's
Het RHUI-controlescript uitvoeren
Voer de volgende shellopdrachten in op een Red Hat-VM om het controlescript uit te voeren:
Als de VIRTUELE machine internettoegang heeft, voert u het script rechtstreeks vanaf de VIRTUELE machine uit met behulp van de volgende opdracht:
curl -sL https://raw.githubusercontent.com/Azure/azure-support-scripts/refs/heads/master/Linux_scripts/rhui-check/rhui-check.py | sudo python2 -
Als de VIRTUELE machine geen directe internettoegang heeft, downloadt u het script via de volgende URL: RHUI check script, brengt u het script over naar de VIRTUELE machine en voert u de volgende opdracht uit:
sudo python2 ./rhui-check.py
Het script genereert een rapport met eventuele gevonden problemen. De scriptuitvoer wordt ook opgeslagen
/var/log/rhuicheck.log
nadat u deze hebt uitgevoerd.
Oplossing 1
Zie Red Hat RHUI-certificaatproblemen in Azure oplossen of Problemen met red hat RHUI-connectiviteit in Azure oplossen voor een RHEL-systeem.
Voor andere Linux-distributies moet u ervoor zorgen dat communicatie met de bijbehorende opslagplaats is toegestaan via poort 443. Zorg er bovendien voor dat het besturingssysteem een geldig certificaat gebruikt als een geldig certificaat vereist is.
Scenario 2: Probleem met afhankelijkheid
Er kunnen verschillende fouten optreden wanneer er een afhankelijkheidsconflict optreedt tijdens een update. In de volgende subsecties worden de uitvoersymptomen van typische afhankelijkheidsfouten weergegeven.
Symptoom 2a
Error:
Problem: package leapp-0.16.0-2.el8.noarch requires python3-leapp = 0.16.0-2.el8, but none of the providers can be installed
- package python2-leapp-0.16.0-1.el7_9.noarch conflicts with python3-leapp provided by python3-leapp-0.16.0-2.el8.noarch
- package python3-leapp-0.16.0-2.el8.noarch conflicts with python2-leapp provided by python2-leapp-0.16.0-1.el7_9.noarch
- cannot install the best update candidate for package leapp-0.16.0-1.el7_9.noarch
- problem with installed package python2-leapp-0.16.0-1.el7_9.noarch
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
Symptoom 2b
Error:
Problem 1: package systemd-udev-239-78.el8.x86_64 requires systemd(x86-64) = 239-78.el8, but none of the providers can be installed
- cannot install the best update candidate for package systemd-udev-239-74.el8_8.5.x86_64
- package systemd-239-78.el8.x86_64 is filtered out by exclude filtering
Problem 2: package systemd-container-239-78.el8.x86_64 requires systemd(x86-64) = 239-78.el8, but none of the providers can be installed
- cannot install the best update candidate for package systemd-container-239-74.el8_8.5.x86_64
- package systemd-239-78.el8.x86_64 is filtered out by exclude filtering
Problem 3: package systemd-pam-239-78.el8.x86_64 requires systemd = 239-78.el8, but none of the providers can be installed
- cannot install the best update candidate for package systemd-pam-239-74.el8_8.5.x86_64
- package systemd-239-78.el8.i686 is filtered out by exclude filtering
- package systemd-239-78.el8.x86_64 is filtered out by exclude filtering
Problem 4: systemd-libs-239-74.el8_8.5.i686 has inferior architecture
- package systemd-239-74.el8_8.5.x86_64 requires systemd-libs = 239-74.el8_8.5, but none of the providers can be installed
- cannot install both systemd-libs-239-78.el8.x86_64 and systemd-libs-239-74.el8_8.5.x86_64
- cannot install the best update candidate for package systemd-libs-239-74.el8_8.5.x86_64
- problem with installed package systemd-239-74.el8_8.5.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
Oplossing 2
Wanneer u een afhankelijkheidsprobleem ondervindt, begint u met het identificeren van de specifieke combinatie van pakket en versie die ontbreekt of niet compatibel is. Het yum
foutbericht geeft meestal aan welke combinatie van pakketversie is vereist, maar niet beschikbaar is.
Oplossing voor symptoom 2a: het oudere pakket verwijderen
Voor symptoom 2a yum
weigert u een transactie en retourneert u een foutbericht. De fout wordt veroorzaakt door nn-incompatibiliteit tussen het python2-leapp
pakket van een oudere release en de nieuwste release.
U kunt deze fout oplossen door het oudere pakket te verwijderen dat het conflict veroorzaakt (in dit geval python2-leapp-0.16.0-1.el7_9.noarch) door de volgende yum remove
opdracht uit te voeren:
sudo yum remove python2-leapp-0.16.0-1.el7_9.noarch
Vervolgens kunt u doorgaan met de update of installatie van het vereiste pakket.
Oplossing voor symptoom 2b: Verwijder de pakketuitsluiting uit het configuratiebestand
Voor symptoom 2b yum
weigert u een transactie en retourneert u een foutbericht. Een uitsluitingsfilter veroorzaakt de fout.
Als u deze fout wilt oplossen zodat u het bijwerken of installeren van het vereiste pakket kunt hervatten, moet u ervoor zorgen dat het systemd
pakket niet is uitgesloten in het configuratiebestand /etc/yum.conf of /etc/dnf.conf . Als u wilt controleren of de systemd
pakketuitsluiting plaatsvindt, voert u een opdracht uit, zoals de volgende cat
/grep
combinatie:
sudo cat /etc/yum.conf | grep -i exclude
Als het systemd
pakket is uitgesloten, wordt de volgende uitvoer weergegeven:
exclude=systemd
Als u deze pakketuitsluiting wilt beëindigen, gebruikt u een teksteditor (zoals , of ) om de vermelding voor de regel 'exclude' in het vi
of /etc/dnf.confvim
commentaar te geven.nano
Scenario 3: Verkeerde versie van Python
De yum
, dnf
en rpm
hulpprogramma's zijn geschreven in Python en zijn afhankelijk van de Python-interpreter om correct te werken. Ze zijn met name afhankelijk van bepaalde functies en bibliotheken die de Python-interpreter biedt om hun code uit te voeren en te communiceren met het systeem. Als u de standaardversie van Python wijzigt die op het systeem is geïnstalleerd, kan dit problemen yum
veroorzaken of dnf
vanwege een afhankelijkheid van specifieke Python-versies en -configuraties.
U kunt bijvoorbeeld een van de volgende fouten ondervinden als u niet de juiste versie van Python hebt geïnstalleerd:
"Ongeldige syntaxis"
yum list all File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: ^ SyntaxError: invalid syntax
"Geen module met de naam yum"
yum repolist There was a problem importing one of the Python modules required to run yum. The error leading to this problem was: No module named yum
"Ongeldige interpreter: geen dergelijk bestand of dergelijke map"
bash: /usr/bin/yum: /usr/bin/pythonX.X: bad interpreter: No such file or directory
Oplossing 3
Door de officiële documentatie voor uw Linux-distributie te raadplegen, kunt u de standaardversie van Python controleren en deze vergelijken met de versie die op uw systeem is geïnstalleerd. Dit proces zorgt voor consistentie en compatibiliteit tussen softwareafhankelijkheden en systeemconfiguraties.
Nadat u de standaardversie van Python voor uw Linux-distributie hebt geïdentificeerd, kunt u de momenteel geïnstalleerde versie bepalen door een van de volgende opdrachten uit te voeren:
sudo ls -al `which python`
sudo ls -lrth /usr/bin/python*
sudo rpm -V python
Als u controleert of een niet-ondersteunde versie van Python wordt gebruikt, hebt u verschillende opties om dit probleem op te lossen.
Oplossing 3a: De symlink herstellen
Verwijder de symlink naar de niet-ondersteunde versie van Python en maak een symlink naar de ondersteunde versie van Python door de volgende opdrachten uit te voeren:
sudo cd /usr/bin
sudo unlink python
sudo ln -s python2.7 python # Modify if necessary.
Oplossing 3b: Python opnieuw installeren met behulp van RPM
Installeer het Python-pakket opnieuw door de volgende rpm
opdracht uit te voeren:
sudo rpm -ivh python-<release>.<arch>.rpm --replacepkgs --replacefiles
Oplossing 3c: Python opnieuw installeren vanaf een reddings-VM
Installeer het Python-pakket opnieuw vanaf een reddings-VM. Zie Ontbrekende belangrijke systeemkernbibliotheken en -pakketten voor instructies.
Scenario 4: Dubbele pakketten
Als er een onderbreking optreedt tijdens yum
het bijwerken, yum
behoudt u mogelijk de oude pakketversies naast de nieuwe pakketten die worden geïnstalleerd. Dubbele pakketten kunnen verwarring veroorzaken in systeembewerkingen tijdens het volgende gebruik van het hulpprogramma en uiteindelijk 'beveiligde multilib'-fouten of misleidende afhankelijkheidsproblemen veroorzaken.
De volgende scenario's zijn gebruikelijk:
Wordt uitgevoerd
yum update
via Secure Shell (SSH) en ondervindt connectiviteitsonderbrekingen tijdens het updateprocesSIGINT
Een en eenkill -2
signaal naar hetyum
proces verzenden of Ctrl+ selecteren om hetyum
proces te beëindigen terwijl het actief wordt uitgevoerdEen systeem wordt halverwege het updateproces opnieuw opgestart
Oplossing 4
Er zijn twee mogelijke oplossingen: probeer de transactie te voltooien of verwijder de dubbele pakketten handmatig. De stappen voor het voltooien van deze benaderingen verschillen afhankelijk van de distributie en versie van uw Linux-installatie.
Oplossing 4a: probeer de transactie te voltooien
Probeer de transactie te voltooien door de volgende yum-complete-transactieopdracht uit te voeren:
sudo yum-complete-transaction
Als de bewerking is geslaagd zonder meer duplicaten te verlaten, gaat u naar stap 2.
Als er duplicaten aanwezig zijn, lost u deze transactie op door de
--cleanup-only
parameter in deyum-complete-transaction
opdracht op te geven:sudo yum-complete-transaction --cleanup-only
Oplossing 4b: Duplicaten handmatig verwijderen
Verwijder de dubbele pakketten handmatig door de volgende opdrachten uit te voeren. Voor de
yum check
opdracht kan veel tijd nodig zijn, maar het verkrijgen van de uitvoer is van cruciaal belang om door te gaan met deze stappen:sudo tar -cjf /tmp/rpm_dbbkp.tar.bz2 /var/lib/{rpm,yum} sudo yum check &> /tmp/yumcheck grep "duplicate" /tmp/yumcheck | awk '{ print $NF }' | egrep -v "\:" > /tmp/duplicaterpms grep "duplicate" /tmp/yumcheck | awk '{ print $NF }' | egrep ":" | awk -F':' '{ print $NF }' >> /tmp/duplicaterpms for i in $(cat /tmp/duplicaterpms); do sudo rpm -e --justdb --nodeps $i; done sudo yum update
Nadat de duplicaten zijn verwijderd, installeert u de kernel opnieuw als er een nieuwe kernel is opgenomen in de mislukte transactie, om er zeker van te zijn dat de juiste generatie Van Grand Unified Bootloader-vermeldingen (GRUB), de eerste RAM-schijf (initrd) en het oorspronkelijke RAM-bestandssysteem (initramfs) zijn geïnstalleerd.
sudo yum remove kernel-<newversion>-<release>.<arch> sudo yum install kernel-<newversion>-<release>.<arch>
Scenario 5: Yum werkt niet en toont de fout '404 Niet gevonden'
Een foutbericht '404 Niet gevonden' in de yum
uitvoer geeft aan dat yum
het pakket of de resource niet kan worden gevonden op de server. Dit probleem treedt meestal op als yum
u probeert een pakket te downloaden of te openen vanuit een opslagplaats, maar het pakketbestand of de metagegevens die eraan zijn gekoppeld, ontbreken of zijn niet beschikbaar op de server. Dit scenario heeft verschillende oorzaken, waaronder de volgende:
Het pakket of de resource is verwijderd uit de opslagplaats.
De URL of configuratie van de opslagplaats is onjuist.
Netwerkproblemen verhinderen toegang
yum
tot de opslagplaatsserver.Er was tijdelijke uitvaltijd of onderhoud van de server.
Voorbeelden van deze fout worden weergegeven in voorbeelduitvoer voor verschillende Linux-distributies.
Red Hat Enterprise Linux 9 for x86_64 - Supplem 46 B/s | 14 B 00:00
Errors during downloading metadata for repository 'rhel-9-for-x86_64-supplementary-rhui-rpms':
- Status code: 404 for https://rhui4-1.microsoft.com/pulp/repos/content/dist/rhel9/rhui/9.1/x86_64/supplementary/os/repodata/repomd.xml (IP: 52.142.4.99)
Error: Failed to download metadata for repo 'rhel-9-for-x86_64-
Oplossing 5
De volgende mogelijke oplossingen zijn van toepassing op verschillende Linux-distributies.
Zorg ervoor dat u het juiste proces volgt wanneer u schakelt tussen eus-levenscyclusopslagplaatsen (Extended Update Support) en niet-EUS-opslagplaatsen, of van niet-EUS naar EUS. Zie het gedrag van het bijwerken van afbeeldingen voor meer informatie.
Als de fout meestal optreedt omdat er een onjuiste waarde wordt gebruikt voor /etc/yum/vars/releasever en /etc/dnf/vars/releasever, of omdat de waarde niet aanwezig moet zijn (voor niet-EUS-opslagplaatsen), voert u de volgende stappen uit:
Controleer of uw systeem GEBRUIKMAAKT van EUS- of niet-EUS-opslagplaatsen. Voer hiervoor de volgende
rpm
/grep
opdrachtcombinatie uit:sudo rpm -qa | grep -i rhui
De bestandsnaamindeling die de opdracht produceert, is afhankelijk van het type opslagplaats, zoals wordt weergegeven in de volgende tabel.
Type opslagplaats Indeling van bestandsnaam EUS rhui-azure-rhelX-eus-new-version-release.noarch<><> niet-EUS rhui-azure-rhelX-new-version-release.noarch<><> Bepaal de huidige waarde voor de releaseversie door de volgende
cat
opdracht uit te voeren.RHEL-versie Opdracht RHEL 7 sudo cat /etc/yum/vars/releasever
RHEL 8 en 9 sudo cat /etc/dnf/vars/releasever
Wijzig en gebruik de juiste waarde voor de releaseversie:
Als uw systeem GEBRUIKMAAKT van EUS-opslagplaatsen, moet u ervoor zorgen dat de juiste versievergrendeling is toegepast. In het volgende voorbeeld wordt de versievergrendeling toegevoegd voor RHEL 9.2 omdat
RHUI EUS
opslagplaatsen worden gebruikt:sudo sh -c 'echo 9.2 > /etc/dnf/vars/releasever'
Notitie
De steun voor RHEL7 EUS is beëindigd op 30 augustus 2021. U wordt aangeraden geen EUS-opslagplaatsen meer te gebruiken in RHEL7.
RHEL 8.x-versies voor EUS zijn beschikbaar. Deze versies omvatten RHEL 8.8, 8.6, 8.4, 8.2 en 8.1.
RHEL 9.x-versies voor EUS zijn beschikbaar. Deze versies bevatten momenteel RHEL 9.2 en 9.0.
Zie Red Hat Enterprise Linux-levenscyclus voor meer informatie over de beschikbaarheid van versies.
Als uw systeem niet-EUS-opslagplaatsen gebruikt, moet u ervoor zorgen dat u de versievergrendeling voor het bestand /etc/yum/vars/releasever of /etc/dnf/vars/releasever verwijdert door de volgende opdracht uit te voeren.
RHEL-versie Opdracht RHEL 7 sudo echo "" > /etc/yum/vars/releasever
RHEL 8 en 9 sudo echo "" > /etc/dnf/vars/releasever
Scenario 6: PROBLEEM MET RPM-database
De volgende fouten worden weergegeven als u de rpm
opdracht , up2date
, yum
of dnf
tdnf
opdracht uitvoert:
error: rpmdb: BDB0113 Thread/process 24669/140693557245760 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 - (-30973)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:
Deze fouten kunnen om een van de volgende redenen optreden:
- Verbroken RPM-databases
- Een andere toepassing die gebruikmaakt van de database
- Onvoldoende ruimte in de map /var/lib/rpm
Oplossing 6
Bouw de RPM-database opnieuw door de volgende stappen uit te voeren:
Belangrijk
Voordat u deze stappen uitvoert, moet u ervoor zorgen dat er voldoende vrije schijfruimte beschikbaar is.
Maak een back-up van de map /var/lib/rpm door de opdracht uit te
tar
voeren:sudo tar zcvf /var/lib/rpm-backup.tar.gz /var/lib/rpm
Als u verouderde vergrendelingen wilt voorkomen, verwijdert u de __db* -bestanden en controleert u de integriteit van het pakketbestand :
sudo cd /var/lib/rpm sudo rm -f __db.* sudo /usr/lib/rpm/rpmdb_verify Packages
Bouw de RPM-database opnieuw op door de opdracht uit te
rpm
voeren:sudo rpm -vv --rebuilddb
Scenario 7: Yum-opdracht mislukt en retourneert '[Errno 14] HTTPS-fout 403 --Verboden'
De volgende fouten worden weergegeven als u de yum
opdracht uitvoert op een Red Hat 7.x VM die is verbonden met RHUI.
https://rhui4-1.microsoft.com/pulp/repos/content/dist/rhel/rhui/server/7/7Server/x86_64/rh-common/os/repodata/repomd.xml: [Errno 14] HTTPS Error 403 - Forbidden
Oplossing 7
Controleer of er een curl-pakket van derden is geïnstalleerd op uw VM:
sudo rpm -qa | grep -i curl
rpm -q --queryformat '%{VENDOR}\n' curl libcurl
curl-7.73.0-2.0.cf.rhel7.x86_64 libcurl-7.73.0-2.0.cf.rhel7.x86_64 libcurl-devel-7.73.0-2.0.cf.rhel7.x86_64
city-fan.org repo http://www.city-fan.org/ftp/contrib/
Als er een pakket van derden is geïnstalleerd, gaat u naar stap 2.
Belangrijk
De curl-pakketten van bronnen van derden worden geleverd samen met hun eigen binaire bestanden en certificaten die niet worden herkend door Red Hat. Deze incompatibiliteit zorgt ervoor dat yum problemen ondervindt.
Gebruik een van de volgende methoden om de nieuwste versie van de
curl
,libcurl
enlibcurl-devel
pakketten te downloaden die worden geleverd voor RHEL 7.9:Download de pakketten handmatig door u aan te melden bij Red Hat Download en upload vervolgens de rpms-bestanden naar de betreffende VM.
Meld u aan bij een werkende RHEL 7.9-VM
(PAYGO)
, download de vereiste pakketten met behulp van deyumdownloader
opdracht en kopieer de rpms-bestanden vervolgens naar de betreffende VM:sudo yumdownloader curl.x86_64 libcurl.x86_64 libcurl-devel.x86_64
Downgrade de curl-pakketten met behulp van de rpms-bestanden uit stap 2:
sudo cd /path/location/of/rpms/downloaded sudo yum downgrade curl-X.XX.0-XX.el7_9.X.x86_64.rpm libcurl-X.XX.X-XX.el7_9.X.x86_64.rpm libcurl-devel-X.XX.X-XX.el7_9.X.x86_64.rpm --disablerepo=*
Disclaimerinformatie van derden
De producten van derden die in dit artikel worden vermeld, worden vervaardigd door bedrijven die onafhankelijk zijn van Microsoft. Microsoft verleent dan ook geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of de betrouwbaarheid van deze producten.
Disclaimerinformatie van derden
Microsoft biedt contactgegevens van derden om u te helpen aanvullende informatie over dit onderwerp te vinden. Deze contactinformatie kan zonder voorafgaande kennisgeving worden gewijzigd. Microsoft garandeert niet de nauwkeurigheid van contactgegevens van derden.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.