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, inmain() 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