Datei ist korrupt oder unvollständig

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der TIPPs & Tricks Sammlung.
Terminals / Shells X Portage System Dateisysteme Kernel Netzwerk Sonstiges alphabetischer Tipp Index

Inhaltsverzeichnis

[Bearbeiten] Einleitung

Dieser Artikel soll eine Anleitung sein, wie man mit MD5 Fehlern beim Installieren von Paketen umgeht. Am Schluss sollte es auf die eine oder andere Weise möglich sein das Paket doch zu installieren.

[Bearbeiten] Beispiele

Code: Beispiel: Unvollständiger Download
# emerge -v cowsay
Calculating dependencies ...done!
>>> emerge (1 of 1) games-misc/cowsay-3.03 to /

!!! Digest verification Failed:
!!!    /usr/portage/distfiles/cowsay-3.03.tar.gz
!!! Reason: Filesize does not match recorded size
Code: Beispiel: Daten sind korrupt
# emerge -v cowsay
Calculating dependencies ...done!
>>> emerge (1 of 1) games-misc/cowsay-3.03 to /

!!! Digest verification Failed:
!!!    /usr/portage/distfiles/cowsay-3.03.tar.gz
!!! Reason: Failed on MD5 verification
Code: Beispiel: Kaputte Datei eines ebuilds aus dem overlay Verzeichnis
>>> Resuming download...
>>> Downloading http://foo/bar.tar.gz
--10:19:12--  http://foo/bar.tar.gz
           => `/bar.tar.gz'
Resolving foo... 1.2.3.4
Connecting to foo[1.2.3.4]:80... connected.
HTTP request sent, awaiting response... 200 OK

    The file is already fully retrieved; nothing to do.

!!! Couldn't download bar.tar.gz. Aborting.


[Bearbeiten] Gründe

  • Die angegebene Dateigröße in /usr/portage/<pkg-class>/<pkg-name>/files/<digestfile> ist zu groß. Man musst auch die Digest-Datei reparieren (ebuild <ebuildfile> digest).
 fix: 
 i=pkgname-ver.tbz2; j=pkgclass; 
 echo \
 MD5 `md5sum /usr/portage/distfiles/$i | awk '{split($0,a," "); print a[1];exit}'` $i \
 `du -bs /usr/portage/distfiles/$i | awk '{split($0,a" ");print a[1]; exit'` \
 > /usr/portage/$j/`echo $i | awk '{split($0,a,"-");print a[1];exit}'`/files/digest-`echo $i | awk '{split($0,a,".tar.bz2");print a[1]; exit}'` 
 ebuild /usr/portage/$j/`echo $i | awk '{split($0,a,"-"); printf a[1]; exit}'`/*.ebuild digest

Diese Art von Fehlern kann verschiedene Gründe haben. Hier eine kleine Auswahl:

  • beim Runterladen des Pakets gab es einen Übertragungsfehler
  • beim Synchronisieren des portage trees gab es einen Übertragungsfehler
  • die Datei auf dem Mirror von dem der Download erfolgte ist schon korrupt
  • der Tree auf dem Server von dem der sync erfolgte ist beschädigt
  • der Autor der Programms hat das Paket noch einmal geändert nachdem das ebuild bereits geschrieben war
  • das ebuild ist fehlerhaft

[Bearbeiten] Lokaler Fehler

Zunächst sollte man den einfachen Übertragungsfehler ausschliessen und das Paket neu downloaden. Dazu muss man das schon empfangene Paket wieder löschen.

 # cd /usr/portage/distfiles
 # rm cowsay-3.03.tar.gz

Ein erneuter merge mit

 # emerge -v cowsay

kann dann schon zum Erfolg führen. Schlägt es jedoch erneut fehl, so sollte man sich zunächst die MD5 Summe des Pakets ausgeben lassen.

 # cd /usr/portage/distfiles
 # md5sum cowsay-3.03.tar.gz 
c7794a3597d8afa8ad2993a93f71b5ef  cowsay-3.03.tar.gz

Und nun kann man testen, ob ein anderer Mirror aus dieser Liste die gleiche Datei hat. Dazu müssen wir zunächst diesen anderen Mirror in die /etc/make.conf eintragen.

Datei: /etc/make.conf
...
GENTOO_MIRRORS="http://gentoo.chem.wisc.edu/gentoo/"
...


Jetzt kann man die fehlerhafte Datei löschen und einen erneuten Versuch starten.

 # cd /usr/portage/distfiles
 # rm cowsay-3.03.tar.gz
 # emerge -v cowsay

Klappt dieser Versuch wieder nicht, sollte die MD5 Summe der gerade heruntergeladenen Datei mit der vorherigen vergleichen.

 # cd /usr/portage/distfiles
 # md5sum cowsay-3.03.tar.gz 
c7794a3597d8afa8ad2993a93f71b5ef  cowsay-3.03.tar.gz

Sind die Summen verschieden und die Installation klappt nicht, so ist wahrscheinlich etwas mit der Leitung nicht in Ordnung und man sollte sich zunächst um dieses Problem kümmern. Sind sie (wie in diesem Beispiel) identisch, so kann man davon ausgehen, dass die Datei auf allen Mirrors so aussieht (wenn man ganz sicher gehen will, kann man noch weitere testen) und man sollte sich dem portage tree zuwenden.

Zunächst sollte man einen erneuten sync durchführen, um sicher zu gehen dass die Daten im eigenen portage tree nicht beschädigt sind und dann den nächsten Versuch starten.

 # emerge --sync
 # emerge -v cowsay

Ist in der /etc/make.conf kein spezieller rsync Server eigetragen, so sollte der portage tree nahezu bei jedem sync von einem anderen Server geholt werden. Hier lohnt es sich also nicht einen anderen Server einzutragen. Klappt es nun immer noch nicht, so kann von einem Fehler im portage ausgangen werden.

[Bearbeiten] Fehler im Portage

Ist der Fehler im Portage, so sollte man zunächst im Gentoo Bugzilla und in den Gentoo Foren nach anderen Usern mit dem gleichen Problem suchen. Kann man nichts finden, so sollte man die oberen Schritte aus dem Teil Lokale Fehler beheben noch einmal durchführen. Bringt ein neuer Durchlauf jedoch dasselbe Ergebnis, so sollte man zuerst einen Bug eintragen, damit dieser Fehler behoben werden kann. Will man das Paket dennoch installieren, so kann man die MD5 Summen von Hand ändern. Zuänchst sollte man aber das Archiv selbst auf seinen Zustand hin überprüfen. Ist es zum Beispiel ein .tar.gz File, so kann man es mit dem Programm tar prüfen.

 # tar -tvzf cowsay-3.03.tar.gz 
-rw-r--r-- 10365/10365     931 2000-05-29 19:55:24 cowsay-3.03/ChangeLog
-rw-r--r-- 10365/10365     385 1999-08-14 10:03:17 cowsay-3.03/INSTALL
...
-rw-r--r-- 10365/10365     279 1999-08-14 09:17:55 cowsay-3.03/cows/vader.cow

Tritt hier kein Fehler auf, kann man die alten MD5 Summen löschen und neue erstellen.

 # cd /usr/portage/games-misc/cowsay/
 # rm files/digest-cowsay-3.03 
 # ebuild cowsay-3.03.ebuild digest
>>> Generating digest file...
<<< cowsay-3.03.tar.gz
>>> Generating manifest file...
<<< cowsay-3.03.ebuild
<<< ChangeLog
<<< metadata.xml
<<< files/digest-cowsay-3.03
>>> Computed message digests.

Und schliesslich kann wieder versucht werden das Paket zu installieren

 # emerge -v cowsay

Natürlich gibt es keine Garantie, dass dies nun klappt. Zumindest der digest Fehler sollte nun aber nicht mehr auftreten.

'Persönliche Werkzeuge