2014-12-03 5 views
6

Quando eseguo cabal install [pkg] e pkg è un programma a riga di comando eseguibile invece di una biblioteca, spesso mi avverte con questo messaggio: "Attenzione: I seguenti pacchetti sono suscettibili di essere rotto dai reinstalla"cabal installa un eseguibile da Hackage tramite una sandbox?

io uso sempre il --force-reinstalls opzione per procedere.

Ma dal momento che sto installando un eseguibile e NON una libreria, esiste un modo per eseguire cabal install per isolare il processo di compilazione in una sandbox di cabale e quindi installare l'eseguibile in ~/.cabal/bin? O è qualcosa di cui ho bisogno per scrivere uno script bash personalizzato?

risposta

8

ho sempre creare una sandbox per i miei strumenti, come ad esempio hoogle, pointfree, haddock, ghc-mod, hlint, shake e stylish-haskell tra gli altri. Basta seguire questi passaggi:

  • Creare una sandbox cabala con cabal sandbox init nella posizione di vostra scelta
  • Run cabal install [pkg1 [pkg2 ...]]
  • Una volta completato, copiare i file eseguibili desiderati dalla cartella .cabal-sandbox/bin alla cartella ~/.cabal/bin/.
  • Eseguire cabal sandbox delete per rimuovere la sandbox probabilmente molto grande che non è più necessaria.

Questi file eseguibili sono in genere completamente autonomi, quindi è possibile crearli contro le dipendenze richieste in una sandbox e quindi spostarli nel punto desiderato. Ciò aiuta sicuramente a mantenere l'installazione a livello di sistema pulita e priva di conflitti.

+0

Significa che non esiste un modo automatico per copiare gli eseguibili? – Sam

+0

@Sam 'cp .cabal-sandbox/bin/* ~/.cabal/bin /' non è molto difficile. Questa non è una funzionalità di cabal, non presuppongono che si stia utilizzando una sandbox per la creazione di questi strumenti. Non presumono nulla di veramente, le tue sandbox sono le tue e considerando che questo è un passaggio che di solito eseguo una volta dopo aver installato Haskell, non vedo il caso d'uso per aggiungerlo alla cabala. – bheklilr