2015-07-30 11 views
5

Attualmente, sto usando GHC 7.10.1 sul mio sistema Ubuntu 14.04, solo ora ho notato dalla mailing list che è stata rilasciata una nuova versione contenente molte correzioni di bug. Quindi sto pensando di aggiornare il mio GHC.Cosa devo fare se voglio installare una nuova versione di GHC?

So come installare GHC, tuttavia, ho poche conoscenze su come gestire i pacchetti che ho già installato tramite cabal. Sembra che quei pacchetti siano stati installati su ~/.cabal, ad esempio, le librerie sono state installate su ~/.cabal/lib/x86_64-linux-ghc-7.10.1 e registrate in ~/.ghc/x86_64-linux-7.10.1.

Il nome del percorso (... x86_64-linux-7.10.1 ...) sembra suggerire che potrebbero essere utilizzati solo da GHC 7.10.1, quindi se voglio utilizzare una nuova versione GHC e rimuovere il vecchio ghc 7.10.1 dal mio sistema, dovrei pulirli e reinstallare quei pacchetti?

ad esempio, devo rm -rf ~/.cabal && rm -rf ~/.ghc e reinstallare sia la cabina che GHC? o dovrei lasciare quei pacchetti lì? in tal caso, quei pacchetti installati sarebbero riutilizzati dal nuovo GHC?

+0

Hai installato GHC a mano o hai usato pacchetti [hvr's] (https://launchpad.net/~hvr/+archive/ubuntu/ghc)? Ad ogni modo, dato che [7.10.2 corregge un sacco di bug] (https://downloads.haskell.org/~ghc/7.10.2/docs/html/users_guide/release-7-10-2.html) e fornisce nuove versioni di librerie (binarie e di base), probabilmente è meglio rimuovere '~/.cabal' e' ~/.ghc'. – Zeta

+0

@Zeta Ho installato a mano ... – Alaya

risposta

2

Sì, è necessario reinstallare i pacchetti quando si aggiorna il compilatore.

Tuttavia, se si elimina ~/.ghc, questo rimuove i pacchetti dal punto di vista di GHC. Puoi anche eliminare ~/.cabal e reinstallare tutto, ma i file binari in ~/.cabal/bin (incluso cabal) di solito funzionano ancora, così spesso è più facile tenerli e risparmiare un po 'di tempo (dai un'occhiata per vedere cosa c'è). Potrebbero esserci dei problemi con alcuni - penso che alcuni binari potrebbero avere il percorso GHC codificato internamente, quindi si romperà, ma è sempre possibile reinstallarli.

~/.cabal/packages contiene download memorizzati nella cache, quindi è a te decidere se lo elimini. I dati verranno nuovamente abbattuti la volta successiva la tua corsa cabal. In caso di dubbio, basta eliminarlo.

È necessario eliminare ~/.cabal/lib che contiene i pacchetti compilati e non sarà compatibile con un GHC diverso. Allo stesso modo per ~/.cabal/share.

A meno che non si sia modificato manualmente il file ~/.cabal/config e si desidera mantenere le modifiche, è possibile eliminarlo e ne verrà creato uno nuovo.

2

Non è necessario rimuovere nulla. Se si installa GHC 7.10.2 nella stessa posizione in cui è installato GHC 7.10.1, tutti i symlink ghc, ghci, ghc-pkg ecc. Verranno sovrascritti per puntare a 7.10.2, ma è comunque possibile eseguire i programmi con versione ghc-7.10.1, ghci-7.10.1, ghc-pkg-7.10.1, ecc. O indicare a cabal di compilare con un compilatore specifico con il flag -w. Tutte le librerie e le informazioni di registrazione della biblioteca (siano esse fornite con GHC, siano installate nel database del pacchetto utente o siano in una sandbox) sono (per impostazione predefinita) memorizzate nelle sottodirectory specifiche della versione di GHC, quindi versioni differenti di GHC non interferiranno con ciascuna altro.

Se non si sta esaurendo lo spazio su disco, suggerirei di non rimuovere GHC 7.10.1. Dopo tutto 7.10.2 è stato rilasciato solo ieri, e se si verifica uno strano problema con 7.10.2, potrebbe valere la pena controllare se anche il 7.10.1 sia stato interessato.

Problemi correlati