GNU/Linux >> Linux Esercitazione >  >> Linux

Problema "Il file dei metadati non corrisponde al checksum" quando Yum installa o aggiorna il pacchetto

Il problema

Scenario 1:

L'utente non è in grado di eseguire "yum install oracle-rdbms-server-11gR2-preinstall".

Lo yum prova a scaricare gli ultimi metadati ("http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/repodata/primary.xml.gz" ) e lo rifiuta con il messaggio di errore "[ Errno -1] Il file dei metadati non corrisponde al checksum”. Su questo, yum prova il mirror successivo dove incontra lo stesso errore e passa al mirror successivo e così via fino a quando non ha provato tutti i mirror e termina con l'errore "Non ci sono più mirror da provare".

# yum install oracle-rdbms-server-11gR2-preinstall
Loaded plugins: refresh-packagekit, security
ol6_UEK_base | 951 B 00:00
ol6_UEK_base/primary | 686 kB 00:09
ol6_UEK_base 29/29
ol6_UEK_latest | 1.2 kB 00:00
ol6_ga_base | 1.1 kB 00:00
ol6_ga_base/primary | 2.9 MB 00:34
ol6_ga_base 8029/8029
ol6_latest | 1.4 kB 00:00
ol6_latest/primary | 22 MB 04:48
http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/repodata/primary.xml.gz: [Errno -1] Metadata file does not match checksum
Trying other mirror.
ol6_latest/primary | 22 MB 04:42
http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/repodata/primary.xml.gz: [Errno -1] Metadata file does not match checksum
Trying other mirror.
Error: failure: repodata/primary.xml.gz from ol6_latest: [Errno 256] No more mirrors to try.

Scenario 2:

Anche l'esecuzione dello script uln_mirror non è riuscita con l'errore "Il file dei metadati non corrisponde al checksum"

#/usr/bin/uln-yum-mirror
--snip--
rhnplugin.py:410:_getFile:RepoError: failed to retrieve repodata/update=einfo.xml.gz from ol6_x86_64_latest
error was [Errno -1] Metadata file does not match checksum :
Traceback (most recent call last):
File "/usr/bin/reposync", line 352, in 
main()
File "/usr/bin/reposync", line 256, in main
resultfile =3D repo.retrieveMD(ftype)
File "/usr/lib/python2.6/site-packages/yum/yumRepo.py", line 1571, i=n retrieveMD : return self._retrieveMD(mdtype)
File "/usr/lib/python2.6/site-packages/yum/yumRepo.py", line 1654, i=n _retrieveMD : size=3Dthisdata.size)
File "/usr/share/yum-plugins/rhnplugin.py", line 410, in _getFile : self.id, e)
RepoError: failed to retrieve repodata/updateinfo.xml.gz from ol6_x86_= 64_latest :error was [Errno -1] Metadata file does not match checksum

La soluzione

Il server yum contiene metadati e checksum per i metadati. Dopo aver scaricato metadati e checksum, yum client confronta i due per assicurarsi che siano coerenti. Dovrebbero esserci problemi con la memorizzazione nella cache dei metadati, che porta all'errore in cui yum tenta di scaricare i metadati più recenti.

Opzione 1

Per prima cosa prova a svuotare tutte le yum cache:

# yum clean all
# rm -rf /var/cache/yum/*
# yum repolist

Opzione 2

Pulisci i metadati:

# yum clean metadata

Opzione 3

Modifica il file /etc/yum.conf e aggiungi una riga "http_caching=packages ” come di seguito:

# vi /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=3
http_caching=packages

# This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
# It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

1. Attendi che la cache http scada.

2. Per ogni file emettere un "wget" con l'opzione no-cache:

# wget --no-cache http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/repodata/primary.xml.gz 

3. Configura temporaneamente yum per non utilizzare le versioni dei file memorizzate nella cache. Modifica /etc/yum.conf e aggiungi la seguente riga:

http_caching=none


Linux
  1. La mappatura dei metadati con Avconv non funziona?

  2. Perché /etc/issue mi mostra Ubuntu e non Lubuntu?

  3. open() in Python non crea un file se non esiste

  4. Disabilita il controllo della transazione yum per il conflitto di file

  5. Perché wget'ing un'immagine mi dà un file, non un'immagine?

Cosa fare quando vedi "Il repository non ha un file di rilascio" Errore in Ubuntu

La corrispondenza del modello non funziona nello script bash

Dove vanno a finire i metadati quando salvi un file?

Perché yum updateinfo non mostra tutti gli aggiornamenti?

quando si verifica l'errore "Errore:niente da fare" durante l'installazione tramite yum?

Perché rm manual dice che possiamo eseguirlo senza alcun argomento, quando questo non è vero?