GNU/Linux >> Znalost Linux >  >> Linux

Problém „Soubor metadat neodpovídá kontrolnímu součtu“ při instalaci nebo aktualizaci balíčku Yum

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, 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

Ř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


Linux
  1. Mapování metadat pomocí Avconv nefunguje?

  2. Proč „zip“ v A For Loop funguje, když soubor existuje, ale ne, když neexistuje?

  3. Může read(2) vrátit nulu, když není na EOF?

  1. Proč mi wget'ing image dává soubor, ne obrázek?

  2. Kam jdou metadata, když uložíte soubor?

  3. logrotate nekomprimuje /var/log/messages

  1. 4 způsoby, jak zakázat/uzamknout určité aktualizace balíčků pomocí příkazu Yum

  2. Soubor metadat neodpovídá kontrolnímu součtu – chyba YUM!

  3. Proč /etc/issue zobrazuje Ubuntu a ne Lubuntu?