Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: ✔️ Virtuella Linux-datorer
Den här artikeln beskriver och löser vanliga problem som kan uppstå när du använder yum
och dnf
pakethanteringsverktyg för att installera eller uppdatera program på virtuella Microsoft Azure-datorer (VM).
Varning
Den här artikeln refererar till CentOS, en Linux-distribution som har nått sin supportslutpunkt (EOL). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS End Of Life-vägledningen.
Översikt
Kommandoradspakethanteringsverktyget yum används i Linux-distributioner som använder RPM Package Manager. Verktygsnamnet är en förkortning för "Yellowdog Updater Modified" och utvecklades ursprungligen för Yellow Dog Linux. Verktyget yum
har fått omfattande användning, särskilt i RPM-baserade distributioner som Red Hat Enterprise Linux (RHEL), CentOS, Oracle Linux, Mariner och Fedora.
Dnf-kommandoradspaketets hanteringsverktyg, eller "Dandified Yum", är ett moderniserat och förbättrat pakethanteringsverktyg för RPM-baserade Linux-distributioner.
Scenario 1: Problem med lagringsplatsåtkomst
Du får fel som gäller för certifikat eller nätverksanslutning.
Kör ett valideringsskript
Azure tillhandahåller kontrollskriptet för Red Hat Update Infrastructure (RHUI) på GitHub. Det här Python-skriptet innehåller följande funktioner:
- Validerar RHUI-klientcertifikatet.
- Validerar RHUI rpm-konsekvens.
- Kontrollerar konsekvensen mellan konfigurationer av utökad uppdateringssupport (EUS) och icke-EUS-lagringsplatser och deras krav.
- Verifierar anslutningen till RHUI-lagringsplatserna.
- Rapporterar lyckad lagringsplatsanslutning om inga fel identifieras.
- Verifierar SSL-anslutningen till RHUI-lagringsplatserna.
- Fokuserar uteslutande på RHUI-lagringsplatserna.
- Verifierar ett fel som hittats med hjälp av de definierade villkoren och ger rekommendationer för en korrigering.
Red Hat-bilder som stöds
Den här versionen av kontrollskriptet stöder för närvarande endast följande virtuella Red Hat-datorer som distribueras från Azure Marketplace-avbildningen:
- RHEL 7.x PAYG virtuella datorer
- RHEL 8.x PAYG virtuella datorer
- RHEL 9.x PAYG virtuella datorer
- RHEL 10.x virtuella PAYG-maskiner
Så här kör du RHUI-kontrollskriptet
Om du vill köra kontrollskriptet anger du följande gränssnittskommandon på en virtuell Red Hat-dator:
Om den virtuella datorn har internetåtkomst kör du skriptet direkt från den virtuella datorn med hjälp av följande kommando:
curl -sL https://raw.githubusercontent.com/Azure/azure-support-scripts/refs/heads/master/Linux_scripts/rhui-check/rhui-check.py | sudo python2 -
Om den virtuella datorn inte har direkt internetåtkomst laddar du ned skriptet från följande URL: RHUI-kontrollskript, överför skriptet till den virtuella datorn och kör sedan följande kommando:
sudo python2 ./rhui-check.py
Skriptet genererar en rapport som innehåller eventuella problem som hittas. Skriptutdata sparas också i
/var/log/rhuicheck.log
när du har kört det.
Lösning 1
Ett RHEL-system finns i Felsöka Red Hat RHUI-certifikatproblem i Azure eller Felsöka Red Hat RHUI-anslutningsproblem i Azure.
För andra Linux-distributioner kontrollerar du att kommunikation till motsvarande lagringsplats tillåts via port 443. Kontrollera dessutom att operativsystemet använder ett giltigt certifikat om ett giltigt certifikat krävs.
Scenario 2: Beroendeproblem
Du kan uppleva något av flera fel när du stöter på en beroendekonflikt under en uppdatering. Följande underavsnitt visar utdatasymptomen för typiska beroendefel.
Symptom 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)
Symptom 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)
Lösning 2
När du stöter på ett beroendeproblem börjar du med att identifiera den specifika kombinationen av paket och version som saknas eller är inkompatibel. Felmeddelandet yum
anger vanligtvis vilken kombination av paketversion som krävs men inte är tillgänglig.
Lösning för symptom 2a: Ta bort det äldre paketet
För Symptom 2a yum
avvisar en transaktion och returnerar ett felmeddelande. Felet orsakas av nn-inkompatibilitet mellan python2-leapp
paketet från en äldre version och den senaste versionen.
För att åtgärda det här felet måste du ta bort det äldre paketet som orsakar konflikten (i det här fallet python2-leapp-0.16.0-1.el7_9.noarch) genom att köra följande yum remove
kommando:
sudo yum remove python2-leapp-0.16.0-1.el7_9.noarch
Sedan kan du fortsätta uppdateringen eller installationen av det nödvändiga paketet.
Lösning för symptom 2b: Ta bort paketundantag från konfigurationsfilen
För symptom 2b yum
avvisar en transaktion och returnerar ett felmeddelande. Ett undantagsfilter orsakar felet.
Om du vill åtgärda det här felet så att du kan återuppta uppdateringen eller installationen av det nödvändiga paketet kontrollerar du att systemd
paketet inte är exkluderat i konfigurationsfilen /etc/yum.conf eller /etc/dnf.conf . Om du vill kontrollera om systemd
paketundantag inträffar kör du ett kommando, till exempel följande cat
/grep
kombination:
sudo cat /etc/yum.conf | grep -i exclude
Om paketet systemd
undantas visas följande utdata:
exclude=systemd
Om du vill avsluta det här paketundantag använder du en textredigerare (till exempel , eller ) för att ta bort eller kommentera ut posten för raden "exclude" i vi
eller vim
.nano
Scenario 3: Fel version av Python
Verktygen yum
, dnf
och rpm
skrivs i Python och är beroende av att Python-tolken fungerar korrekt. Mer specifikt förlitar de sig på vissa funktioner och bibliotek som Python-tolken tillhandahåller för att köra sin kod och interagera med systemet. Om du ändrar standardversionen av Python som är installerad i systemet kan det orsaka problem inom yum
eller dnf
på grund av ett beroende av specifika Python-versioner och konfigurationer.
Du kan till exempel uppleva något av följande fel om du inte har rätt version av Python installerad:
"Ogiltig syntax"
yum list all File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: ^ SyntaxError: invalid syntax
"Ingen modul med namnet 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
"Felaktig tolk: Ingen sådan fil eller katalog"
bash: /usr/bin/yum: /usr/bin/pythonX.X: bad interpreter: No such file or directory
Lösning 3
Genom att konsultera den officiella dokumentationen för din Linux-distribution kan du kontrollera standardversionen av Python och jämföra den med den version som är installerad på systemet. Den här processen hjälper till att säkerställa konsekvens och kompatibilitet mellan programvaruberoenden och systemkonfigurationer.
När du har identifierat standardversionen av Python för din Linux-distribution kan du fastställa vilken version som är installerad genom att köra något av följande kommandon:
sudo ls -al `which python`
sudo ls -lrth /usr/bin/python*
sudo rpm -V python
Om du kontrollerar att en version av Python som inte stöds används har du flera alternativ för att åtgärda problemet.
Lösning 3a: Åtgärda symlänken
Ta bort symlinken till den version av Python som inte stöds och skapa en symlink till den version av Python som stöds genom att köra följande kommandon:
sudo cd /usr/bin
sudo unlink python
sudo ln -s python2.7 python # Modify if necessary.
Lösning 3b: Installera om Python med RPM
Installera om Python-paketet genom att köra följande rpm
kommando:
sudo rpm -ivh python-<release>.<arch>.rpm --replacepkgs --replacefiles
Lösning 3c: Installera om Python från en virtuell räddningsdator
Installera om Python-paketet från en virtuell räddningsdator. Anvisningar finns i Saknade viktiga systemkärnningsbibliotek och -paket.
Scenario 4: Duplicera paket
Om ett avbrott inträffar under yum
uppdateringen yum
kan du behålla de gamla paketversionerna tillsammans med de nya paket som installeras. Duplicerade paket kan orsaka förvirring i systemåtgärder under efterföljande användning av verktyget och så småningom orsaka "skyddade multilib"-fel eller missvisande beroendeproblem.
Följande scenarier är typiska:
Köra
yum update
över Secure Shell (SSH) och uppleva anslutningsstörningar under uppdateringsprocessenSkicka en
SIGINT
och enkill -2
signal tillyum
processen, eller välj Ctrl+C för att avsluta processen medan denyum
körs aktivtUpplever en systemomstart halvvägs genom uppdateringsprocessen
Lösning 4
Det finns två möjliga lösningar: Försök att slutföra transaktionen eller ta bort dubblettpaketen manuellt. Stegen för att slutföra dessa metoder varierar beroende på distributionen och versionen av linux-installationen.
Lösning 4a: Försök att slutföra transaktionen
Försök att slutföra transaktionen genom att köra följande yum-complete-transaction-kommando :
sudo yum-complete-transaction
Om åtgärden lyckas utan att lämna fler dubbletter går du till steg 2.
Om dubbletter finns löser du den här transaktionen genom att ange parametern
--cleanup-only
iyum-complete-transaction
kommandot:sudo yum-complete-transaction --cleanup-only
Lösning 4b: Ta bort dubbletter manuellt
Ta bort dubblettpaketen manuellt genom att köra följande kommandon. Kommandot
yum check
kan kräva mycket tid, men det är viktigt att du hämtar utdata för att fortsätta med följande steg: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
När dubbletterna har tagits bort, om en ny kernel ingick i den misslyckade transaktionen, installerar du om kerneln för att se till att rätt generering av GRUB-poster (Grand Unified Bootloader), den ursprungliga RAM-disken (initrd) och det första RAM-filsystemet (initramfs) har installerats.
sudo yum remove kernel-<newversion>-<release>.<arch> sudo yum install kernel-<newversion>-<release>.<arch>
Scenario 5: Yum fungerar inte och visar felet "404 Hittades inte"
Felmeddelandet "404 Hittades inte" i yum
utdata anger att det inte gick att yum
hitta paketet eller resursen på servern. Det här problemet uppstår vanligtvis om yum
du försöker ladda ned eller komma åt ett paket från en lagringsplats, men paketfilen eller metadata som är associerade med den saknas eller är inte tillgängliga på servern. Det här scenariot har olika orsaker, inklusive följande:
Paketet eller resursen har tagits bort från lagringsplatsen.
Lagringsplatsens URL eller konfiguration är felaktig.
Nätverksproblem hindrar
yum
från att komma åt lagringsplatsens server.Det fanns tillfällig serveravbrott eller underhåll.
Exempel på det här felet visas i exempelutdata för olika Linux-distributioner.
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-
Lösning 5
Följande möjliga lösningar gäller för olika Linux-distributioner.
Se till att du följer rätt process när du växlar mellan lagringsplatser för utökad uppdateringssupport (EUS) och lagringsplatser som inte är EUS-lagringsplatser, eller från icke-EUS till EUS. Mer information finns i Beteende för bilduppdatering.
Om felet vanligtvis uppstår på grund av att ett felaktigt värde används för /etc/yum/vars/releasever och /etc/dnf/vars/releasever, eller på grund av att värdet ska vara frånvarande (för lagringsplatser som inte kommer från EUS), följer du dessa steg:
Kontrollera om systemet använder EUS- eller icke-EUS-lagringsplatser. Kör följande
rpm
/grep
kommandokombination för att göra detta:sudo rpm -qa | grep -i rhui
Filnamnsformatet som kommandot skapar beror på lagringsplatsens typ, enligt följande tabell.
Lagringsplatstyp Format på filnamn EUS rhui-azure-rhelX-eus-new-version-release.noarch<><> icke-EUS rhui-azure-rhelX-new-version-release.noarch<><> Fastställa det aktuella värdet för versionsversionen genom att köra följande
cat
kommando.RHEL-version Befallning RHEL 7 sudo cat /etc/yum/vars/releasever
RHEL 8 och 9 sudo cat /etc/dnf/vars/releasever
Ändra och använd rätt värde för versionsversionen:
Om systemet använder EUS-lagringsplatser kontrollerar du att rätt versionslås tillämpas. I följande exempel läggs versionslåset till för RHEL 9.2 eftersom
RHUI EUS
lagringsplatser används:sudo sh -c 'echo 9.2 > /etc/dnf/vars/releasever'
Kommentar
Stödet för RHEL7 EUS upphörde den 30 augusti 2021. Vi rekommenderar att du inte längre använder EUS-lagringsplatser i RHEL7.
RHEL 8.x versioner för EUS är tillgängliga. Dessa versioner omfattar RHEL 8.8, 8.6, 8.4, 8.2 och 8.1.
RHEL 9.x versioner för EUS är tillgängliga. För närvarande innehåller dessa versioner RHEL 9.2 och 9.0.
Mer information om versionstillgänglighet finns i Livscykel för Red Hat Enterprise Linux.
Om systemet använder icke-EUS-lagringsplatser måste du ta bort versionslåset för filen /etc/yum/vars/releasever eller /etc/dnf/vars/releasever genom att köra följande kommando.
RHEL-version Befallning RHEL 7 sudo echo "" > /etc/yum/vars/releasever
RHEL 8 och 9 sudo echo "" > /etc/dnf/vars/releasever
Scenario 6: RPM-databasproblem
Följande fel visas om du kör rpm
kommandot , up2date
, yum
, dnf
eller tdnf
:
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:
Dessa fel kan inträffa av någon av följande orsaker:
- Brutna RPM-databaser
- Ett annat program som använder databasen
- Otillräckligt utrymme i katalogen /var/lib/rpm
Lösning 6
Återskapa RPM-databasen genom att följa dessa steg:
Viktigt!
Innan du utför de här stegen måste du se till att det finns tillräckligt med ledigt diskutrymme.
Skapa en säkerhetskopia av katalogen /var/lib/rpm genom att
tar
köra kommandot:sudo tar zcvf /var/lib/rpm-backup.tar.gz /var/lib/rpm
För att undvika inaktuella lås tar du bort __db*-filerna och kontrollerar paketfilensintegritet:
sudo cd /var/lib/rpm sudo rm -f __db.* sudo /usr/lib/rpm/rpmdb_verify Packages
Återskapa RPM-databasen genom att
rpm
köra kommandot:sudo rpm -vv --rebuilddb
Scenario 7: Yum-kommandot misslyckas och returnerar "[Errno 14] HTTPS-fel 403 --Förbjuden"
Följande fel visas om du kör yum
kommandot på en Red Hat 7.x Virtuell dator som är ansluten till 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
Lösning 7
Kontrollera om ett curl-paket från tredje part är installerat på den virtuella datorn:
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/
Om något tredjepartspaket har installerats går du till steg 2.
Viktigt!
Curl-paketen från tredjepartskällor tillhandahålls tillsammans med egna binärfiler och certifikat som inte känns igen av Red Hat. Den här inkompatibiliteten gör att yum får problem.
Använd någon av följande metoder för att hämta den senaste versionen av
curl
,libcurl
ochlibcurl-devel
paket som tillhandahålls för RHEL 7.9:Ladda ned paketen manuellt genom att logga in på Red Hat Download och ladda sedan upp rpms-filerna till den berörda virtuella datorn.
Logga in på en fungerande virtuell RHEL 7.9-dator
(PAYGO)
, ladda ned de paket som krävs med kommandotyumdownloader
och kopiera sedan rpms-filerna till den berörda virtuella datorn:sudo yumdownloader curl.x86_64 libcurl.x86_64 libcurl-devel.x86_64
Nedgradera curl-paketen med hjälp av rpms-filerna från steg 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=*
Ansvarsfriskrivning för information från tredje part
De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.
Ansvarsfriskrivning för tredje part
Microsoft tillhandahåller kontaktinformation från tredje part som hjälper dig att hitta ytterligare information om det här ämnet. Denna kontaktinformation kan ändras utan föregående meddelande. Microsoft garanterar inte att kontaktinformation från tredje part är korrekt.
Kontakta oss för att få hjälp
Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.