Homebrew: SHA1 Mancata corrispondenza anche dopo l'aggiornamento

4
  • Mac OS X 10.7.4 (Lion)
  • Homebrew 0.9.2

Nuova installazione di Homebrew. Nessun programma verrà installato da solo: la firma dell'hash prevista non corrisponde mai a quella effettiva, per qualsiasi motivo.

L'unica risposta che ho trovato online è di fare brew update in anticipo. L'ho fatto e ho eliminato il pacchetto scaricato in precedenza, ma non sembra avere alcun effetto:

 $ 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.)

Che sta succedendo?

Modifica : se scarico un pacchetto manualmente e lo metto in /Library/Caches/Homebrew/ con lo stesso nome di file che Homebrew si aspetta, e poi tenta di installare, funziona perfettamente. Ma se lascio che Homebrew provi a recuperare il file stesso, il download termina prematuramente dopo solo pochi kilobyte che corrompono il file e fanno sì che gli hash non corrispondano.

    
posta Hugh Guiney 23.07.2012 - 16:47
fonte

4 risposte

2

OK, quindi il problema non era con Homebrew, ma con cURL, che scaricava solo 2 KB di qualunque file l'avessi gettato e poi fallendo. Sono stato in grado di risolvere questo problema installando l'ultima versione di cURL.

Passaggi per risolvere:

  1. Aperto link in un browser web, salvato in /Library/Caches/Homebrew/ .
  2. Ran brew install curl .
  3. Ogni volta che ho ottenuto un errore di hash durante il download di una dipendenza, ho eseguito nuovamente i passaggi 1 e 2, sostituendo il percorso del pacchetto cURL con quello elencato nell'output della console per la rispettiva dipendenza.
  4. Per impostazione predefinita, OS X utilizza /usr/bin/curl , mentre la versione Homebrew apparentemente visse in /usr/local/Cellar/curl/7.27.0/bin/curl . Che in realtà avrebbe dovuto essere simulato come /usr/local/bin/curl , ma per qualche motivo non era stato riparato brew link curl (potrebbe aver dovuto ripetere per le dipendenze).
  5. Tuttavia, sembra che Homebrew abbia la filosofia secondo cui è preferibile utilizzare sempre i binari predefiniti di sistema di Apple, se disponibili. Non era nel mio caso, quindi ho seguito questo consiglio e aggiunto export PATH=/usr/local/bin:$PATH al mio profilo di bash, per fare il contrario e usa sempre per prima cosa i binari di Homebrew, nonostante le ripercussioni sul margine sanguinante che potrebbero avere.
  6. brew update .
  7. brew install sshfs -success!

Mille grazie a Ian C. per aver dedicato del tempo a chattare con me e indirizzarmi nella giusta direzione.

    
risposta data 10.08.2012 - 02:55
fonte
5

Se sei certo che il tarball scaricato per sshfs è buono puoi provare a forzare Homebrew per installarlo con:

brew install -f sshfs

Più che probabile, se si lamenta ancora, hai un download tarball corrotto. Puoi rimuovere /usr/local/Cellar/sshfs/2.4.0/sshfs_2_4_0 , che è il tarball memorizzato nella cache scaricato da Homebrew, e provare Homebrew a scaricare nuovamente il pacchetto.

Se si lamenta ancora della mancata corrispondenza del valore hash, è possibile modificare la ricetta e aggiornare il checksum MD5 per il file nella ricetta e quindi installare. Il file da modificare è /usr/local/Library/Formula/sshfs.rb . Guardando:

/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

Puoi vedere che devi scaricare link e ricalcolare il checksum MD5 per il file e poi aggiornare il ricetta. Quindi:

/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

Nel mio caso il valore calcolato per il download corrisponde al valore nella ricetta. Se è diverso per il tuo caso, è probabile che il tuo download sia corrotto. Puoi procedere e aggiornare la ricetta se ritieni che il download non sia corrotto.

Nota: ho eseguito un brew update prima di eseguire quanto sopra, quindi posso attestare che ho l'ultima ricetta per sshfs e che il checksum MD5 per il tarball nella ricetta è corretto e corrisponde a quello che ottiene scaricato da github.

Caveat Utilitor se lo fai.

    
risposta data 23.07.2012 - 19:19
fonte
1

Si è verificato un problema simile durante il tentativo di installare 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

Tuttavia, ha funzionato dopo aver capito che ero dietro un server che zeri / rompe i file se superano una certa dimensione e quindi sono danneggiati. Risolto spostandosi su un'altra rete e cercando di reinstallare. Anche se ho avuto lo stesso errore, sapevo che il file era completo perché l'aspettato sha dato gli errori precedenti era ora dato nel vero sha.

Quindi, per completare con successo quando mi sono imbattuto nel tentativo di risolvere il problema, c'era brew edit sdl_image e copia l'effettivo sha nello sha nel file.

    
risposta data 26.09.2013 - 07:45
fonte
1

Ho avuto un problema simile con zlib-1.2.8. La causa principale era che avevo un file .curlrc che ha specificato --compressed , e questa opzione fa sì che arricciate il file prima di scriverlo.

La rimozione dell'opzione ha risolto il problema per me, ma non so se è disponibile una soluzione migliore.

    
risposta data 04.12.2014 - 23:13
fonte

Leggi altre domande sui tag