4 votes

Homebrew : Mauvaise correspondance SHA1 même après la mise à jour

  • Mac OS X 10.7.4 (Lion)
  • Homebrew 0.9.2

Nouvelle installation de Homebrew. Aucun programme ne s'installera de lui-même - la signature de hachage attendue ne correspond jamais à la signature réelle, pour une raison quelconque.

La seule réponse que j'ai trouvée en ligne est de faire brew update au préalable. Je l'ai fait et j'ai supprimé le paquet précédemment téléchargé, mais cela ne semble pas avoir d'effet :

 $ brew update
 Already up-to-date.
 $ brew install sshfs
 ==> Installing sshfs dependency: autoconf
 ==> Downloading http://ftpmirror.gnu.org/autoconf/autoconf-2.69.tar.gz
 ######################################################################## 100.0%
 Error: SHA1 mismatch
 Expected: 562471cbcb0dd0fa42a76665acf0dbb68479b78a
 Actual: 304f244353d8b7694914ff42fa87f31608728aed
 Archive: /Library/Caches/Homebrew/autoconf-2.69.tar.gz
 (To retry an incomplete download, remove the file above.)

Que se passe-t-il ?

Éditer : Si je télécharge un paquet manuellement, et que je le place dans le dossier /Library/Caches/Homebrew/ avec le même nom de fichier que celui attendu par Homebrew, puis essayez d'installer, cela fonctionne bien. Mais si je laisse Homebrew essayer de récupérer le fichier lui-même, le téléchargement se termine prématurément après seulement quelques kilo-octets, ce qui corrompt le fichier et fait que les hachages ne correspondent pas.

5voto

shsteimer Points 8749

Si vous êtes certain que l'archive téléchargée de sshfs est bon peut essayer de forcer Homebrew à l'installer avec :

brew install -f sshfs

Cependant, s'il se plaint toujours, il est plus probable que vous ayez téléchargé une archive corrompue. Vous pouvez supprimer /usr/local/Cellar/sshfs/2.4.0/sshfs_2_4_0 qui est l'archive mise en cache que Homebrew a téléchargée, et demander à Homebrew d'essayer de télécharger à nouveau le paquet.

S'il se plaint toujours de la non-concordance des valeurs de hachage, vous pouvez éditer la recette et mettre à jour la somme de contrôle MD5 pour le fichier dans la recette, puis l'installer. Le fichier à éditer est /usr/local/Library/Formula/sshfs.rb . En regardant :

/Users/ian/code/tmp/brew [ian@Ian-Chesals-MacBook-Pro] [13:13]
> cat /usr/local/Library/Formula/sshfs.rb
require 'formula'

class Sshfs < Formula
  homepage 'http://fuse.sourceforge.net/sshfs.html'
  url 'https://github.com/fuse4x/sshfs/tarball/sshfs_2_4_0'
  md5 'c9ea547b9684ec4d85437393a2731322'
  version '2.4.0'

  depends_on :automake
  depends_on :libtool

  depends_on 'pkg-config' => :build
  depends_on 'fuse4x'
  depends_on 'glib'

  def install
    system "autoreconf", "--force", "--install"
    system "./configure", "--disable-debug", "--disable-dependency-tracking",
                          "--prefix=#{prefix}"
    system "make install"
  end

  def caveats; <<-EOS.undent
    Make sure to follow the directions given by `brew info fuse4x-kext`
    before trying to use a FUSE-based filesystem.
    EOS
  end
end

Vous pouvez voir que vous devez télécharger https://github.com/fuse4x/sshfs/tarball/sshfs_2_4_0 et recalculer la somme de contrôle MD5 du fichier, puis mettre à jour la recette. C'est ainsi que.. :

/Users/ian/code/tmp/brew [ian@Ian-Cs-MacBook-Pro] [13:13]
> wget https://github.com/fuse4x/sshfs/tarball/sshfs_2_4_0
--2012-07-23 13:13:53--  https://github.com/fuse4x/sshfs/tarball/sshfs_2_4_0
Resolving github.com... 207.97.227.239
Connecting to github.com|207.97.227.239|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://nodeload.github.com/fuse4x/sshfs/tarball/sshfs_2_4_0 [following]
--2012-07-23 13:13:53--  https://nodeload.github.com/fuse4x/sshfs/tarball/sshfs_2_4_0
Resolving nodeload.github.com... 207.97.227.252
Connecting to nodeload.github.com|207.97.227.252|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 52812 (52K) [application/octet-stream]
Saving to: `sshfs_2_4_0'

100%[===========================================================================================>] 52,812       288K/s   in 0.2s    

2012-07-23 13:13:54 (288 KB/s) - `sshfs_2_4_0' saved [52812/52812]

/Users/ian/code/tmp/brew [ian@Ian-Cs-MacBook-Pro] [13:13]
> md5 sshfs_2_4_0 
MD5 (sshfs_2_4_0) = c9ea547b9684ec4d85437393a2731322

Dans mon cas, la valeur calculée pour le téléchargement correspond à la valeur de la recette. Si c'est différent dans votre cas, il est probable que votre téléchargement soit corrompu. Vous pouvez continuer et mettre à jour la recette si vous pensez que votre téléchargement n'est pas corrompu.

Note : J'ai fait une brew update avant d'exécuter ce qui précède afin que je puisse attester du fait que j'ai bien la dernière recette de sshfs et que la somme de contrôle MD5 de l'archive dans la recette est correcte et correspond à ce qui est téléchargé depuis github.

Caveat Utilitor si vous le faites.

3voto

Jerry Points 36

OK, il s'avère que le problème n'était pas avec Homebrew, mais avec cURL, qui ne téléchargeait que 2 KB de n'importe quel fichier que je lui lançais et qui échouait. J'ai pu résoudre ce problème en installant la dernière version de cURL.

Mesures prises pour résoudre le problème :

  1. Ouvert http://curl.haxx.se/download/curl-7.27.0.tar.gz dans un navigateur web, sauvegardé dans /Library/Caches/Homebrew/ .
  2. Ran brew install curl .
  3. Chaque fois que j'ai obtenu une erreur de hachage lors du téléchargement d'une dépendance, j'ai refait les étapes 1 et 2, en remplaçant l'emplacement du paquet cURL par celui indiqué dans la sortie de la console pour la dépendance concernée.
  4. Par défaut, OS X utilise /usr/bin/curl alors que la version Homebrew se trouve apparemment dans /usr/local/Cellar/curl/7.27.0/bin/curl . qui aurait en fait dû être lié par un lien symbolique sous la forme de /usr/local/bin/curl mais ne l'a pas été pour une raison quelconque brew link curl Cela a été corrigé (il a peut-être fallu répéter l'opération pour les dépendances).
  5. Cependant, Homebrew a apparemment pour philosophie qu'il est souhaitable de toujours utiliser les binaires par défaut du système d'Apple s'ils sont disponibles. Ce n'était pas mon cas, j'ai donc suivi la procédure suivante ce conseil et a ajouté export PATH=/usr/local/bin:$PATH à mon profil bash, pour faire l'inverse, et toujours utiliser les binaires Homebrew en premier, malgré les répercussions que cela peut avoir.
  6. brew update .
  7. brew install sshfs -Succès !

Un grand merci à Ian C. pour avoir pris le temps de discuter avec moi et de m'orienter dans la bonne direction.

1voto

HolyGenius Points 11

J'ai eu un problème similaire en essayant d'installer sdl_image (brew install sdl_image)

brew install sdl_image
==> Downloading http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.1
######################################################################## 100.0%
Error: SHA1 mismatch
Expected: 5e3e393d4e366638048bbb10d6a269ea3f4e4cf2
Actual: 96553a2470b51f5cca98d9c390c56bacd12f8ed4

Cependant, j'ai réussi à le faire fonctionner après avoir réalisé que j'étais derrière un serveur qui met à zéro/brise les fichiers s'ils dépassent une certaine taille, ce qui fait qu'ils sont corrompus. J'ai résolu le problème en changeant de réseau et en essayant de réinstaller. Bien que j'aie obtenu la même erreur, je savais que le fichier était complet parce que le sha attendu dans les erreurs précédentes était maintenant indiqué dans le sha réel.

Ensuite, pour réussir à résoudre le problème, j'ai dû faire ce qui suit brew edit sdl_image et copier le sha actuel sur le sha du fichier.

1voto

Mark Miller Points 11

J'ai eu un problème similaire avec zlib-1.2.8. La cause première était que j'avais un fichier .curlrc que le fichier spécifié --compressed Cette option permet à curl de décompresser le fichier avant de l'écrire.

La suppression de l'option a résolu le problème pour moi, mais je ne sais pas s'il existe une meilleure solution.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X