Problém
Scénář 1:
Uživatel nemůže provést „yum install oracle-rdbms-server-11gR2-preinstall“.
Yum se pokusí stáhnout nejnovější metadata („http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/repodata/primary.xml.gz“) a odmítne je s chybovou zprávou „[ Errno -1] Soubor metadat neodpovídá kontrolnímu součtu“. Poté yum zkouší další zrcadlo, kde narazí na stejnou chybu a přejde k dalšímu zrcadlu a tak dále, dokud nevyzkouší všechna zrcadla a neskončí chybou „No more mirrors to try.“
# 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.
Scénář 2:
Spuštění skriptu uln_mirror se také nezdařilo s chybou „Soubor metadat neodpovídá kontrolnímu součtu“
#/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
Řešení
Server yum obsahuje metadata a kontrolní součet pro metadata. Po stažení metadat a kontrolního součtu klient yum tyto dva porovná, aby se ujistil, že jsou konzistentní. Měly by nastat problémy s ukládáním metadat do mezipaměti, což vede k chybě, kdy se yum pokouší stáhnout nejnovější metadata.
Možnost 1
Nejprve zkuste vyčistit všechny mezipaměti yum:
# yum clean all # rm -rf /var/cache/yum/* # yum repolist
Možnost 2
Vyčistit metadata:
# yum clean metadata
Možnost 3
Upravte soubor /etc/yum.conf a přidejte řádek „http_caching=packages “, jak je uvedeno níže:
# 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. Počkejte, až vyprší časový limit http cache.
2. Pro každý soubor vydejte „wget“ s možností no-cache:
# wget --no-cache http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/repodata/primary.xml.gz
3. Dočasně nakonfigurujte yum tak, aby nepoužíval verze souborů uložené v mezipaměti. Upravte soubor /etc/yum.conf a přidejte následující řádek:
http_caching=none