2012-10-15 3 views
5

Sto cercando di installare pacchetti che richiedono una versione di base diversa da quella che ho installato (ho 4.6.0.0, richiedono < 4.6). Come posso installarli sul mio sistema?Cosa fare se le librerie richiedono una versione diversa di `base`?

Modifica: questi pacchetti richiedono effettivamente pacchetti precedenti per poter essere compilati, non solo come vincolo .cabal.

risposta

4

in quanto è possibile 't reinstallare base, l'unico modo per ottenere questi pacchetti installati prima che vengano aggiornati è quello di afferrare la fonte,

cabal unpack foo 

e quindi modificare foo.cabal, cambiando il limite superiore per base lì, urtare la versione del pacchetto (aggiungere un .1) in modo che durante l'installazione di altri pacchetti cabal non pensa che è rotto, poiché il file .cabal sa (dal indice dei pacchetti) dice che richiede una versione diversa di base, e

cabal install 

dalla directory si è spacchettato a.

Poiché ci sono stati alcuni cambiamenti significativi in ​​base-4.6; le Eq e Show superclassi sono stati rimossi da Num e Bits non ha più Num come superclasse, può essere necessario fissare il codice aggiungendo Eq, Show o Num ai vincoli di alcune funzioni per rendere i pacchetti di compilazione.

Questo è un inconveniente, ma il prezzo per essere aggiornati con la nuova versione di GHC per alcune settimane.

+0

Se lo faccio, ricevo un messaggio che mi dice che non può soddisfare i vincoli per la base e interrompe l'installazione. – bfops

+0

Cosa? Dopo aver modificato il file '.cabal' per consentire base-4.6? –

+0

@RobotGymnast Quale pacchetto stai specificatamente cercando di installare? –

1

Se si desidera che uno dei programmi dipenda da questi pacchetti, è possibile utilizzare cabal-dev come sostituzione drop-in per cabal. Il primo installa copie locali dei pacchetti in un percorso cabal-dev nella directory corrente. Per installarlo, basta eseguire:

cabal install cabal-dev 

Per la portabilità, si può aggiungere qualcosa di simile a un makefile:

CABAL ?= cabal 

build : 
    $(CABAL) build --builddir=$(BUILD_PATH) 

Poi nelle impostazioni Bash:

CABAL=cabal-dev 
export CABAL 
1

Se un pacchetto non è compatibile con la base che si ha attualmente (cioè, basta modificare il vincolo è insufficiente), le uniche opzioni sono di portare il pacchetto da soli o utilizzare un ghc precedente che fornisce la versione corretta della base.

Si consiglia di verificare prima con il manutentore del pacchetto. Un ramo di sviluppo potrebbe già supportare quello che ti serve, e hanno solo bisogno di un po 'di incoraggiamento per rilasciarlo.