Domanda

Quindi, questo è un po 'un problema personale, ma forse le persone avranno buoni consigli o soluzioni alternative.

Il problema è l'installazione di Installamento Cabala e Haskell-piattaforma sotto Debian.

Quando tu apt-get install haskell-platform, spedisce con cabal-install, e il suo comando cabal è disponibile.

Ora questo cabal-install non è aggiornato:

> which cabal
/usr/bin/cabal
> /usr/bin/cabal --version
cabal-install version 0.8.0
using version 1.8.0.2 of the Cabal library

Ma la mia comprensione della corsa cabal update è che aggiorna la cabala, ma poiché non è una "cosa debian", lo mette dentro ~/.cabal/bin/.

> ~/.cabal/bin/cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library

Ora il mio sistema ha 2 cabine e quella che ottengo digitando cabal Non è quello che voglio usare ... perché continuerà ad aggiornare l'altro invece di se stesso, ed è quindi inefficace.

Quindi quello che ho fatto è stato alias nel mio ~/.bashrc:

alias cabal='~/.cabal/bin/cabal'

Adesso:

> cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library

Quindi, le mie ultime domande:

  • Esiste un repository di Deb che contiene Cabala 0.8.2?
  • La mia soluzione attuale potrebbe portare a problemi? (Per esempio, which cabal indica ancora il mio inutile /usr/bin/cabal, quindi se gli script usano questo comando si inganneranno ...)
  • Qualcuno ha escogitato una soluzione migliore? (Il mio è un po 'ad hoc, ma è tutto ciò che potrei venire con la mia scarsa conoscenza di ciò che sta accadendo dietro le quinte ...)
  • Per favore correggimi se qualcosa che dico sopra è sbagliato o inaccurato.
È stato utile?

Soluzione

Quello che faccio è installare la cabala con il --global bandiera. Questo installerà Cabala in /usr/local/bin/cabal, quindi supersone sempre la Cabala dei pacchetti Debian.

Un altro modo, è generalmente evitare i pacchetti Debian e installare la piattaforma Haskell direttamente dalla sua fonte. Questo approccio è anche migliore, se vuoi sempre avere le ultime uscite dei Libs Haskell.

Altri suggerimenti

Tengo il mio utente locale $HOME/.cabal/bin nella parte anteriore del PATH. Instavo solo ghc6, ghc6-prof, ghc6-doc e cabal-install dai pacchetti di distribuzione. Non uso la distribuzione cabal-install per qualcosa di più che bootstrap il nuovo ~/.cabal. Tutto il resto con cui installo cabal install, incluso il nuovo cabal si.

Quando voglio usare il più nuovo GHC, lo distribuirò /usr/local/stow/ghcVERSION, e abilitalo con GNU stow (Aggiunge i collegamenti simbolici in /usr/local che, ancora una volta, ha la precedenza nel mio PATH). Quando voglio tornare alla distribuzione GHC, corro stow -D Per rimuovere tutti i collegamenti simbolici ad esso.

Considero l'uso cabal-dev avere installazioni di cabala specifiche del progetto ed evitare dipendenze rotte che si verificano con cabal di volta in volta.

È un dato di fatto che non uso affatto la piattaforma Haskell perché non ne ho bisogno e trovo più facile poter installare singole librerie. Non installo librerie di distribuzione, perché non tutte sono disponibili o sono esattamente le versioni di cui ho bisogno; ed è molto più facile controllare i conflitti se tutti sono installati nello stesso posto (~/.cabal nel mio caso). Non installo nulla con --global, perché penso che sia sbagliato e difficile da rollback.

Naturalmente queste informazioni non sono aggiornate, ma sì, Debian Instable e Test hanno, al momento della scrittura, INSTALL DI CABAL 0.10.2.

In generale, l'imballaggio Debian di Haskell è rivolto agli utenti che desiderano una serie di pacchetti che è noto per lavorare insieme, cioè senza dipendenza l'inferno, a spese di non avere sempre l'ultimo e il più grande. Ciò include l'installazione della cabala. Uso l'installazione della cabala dai repository e solo per installare quelle librerie che non sono state ancora confezionate per Debian.

Disclaimer: sono uno dei ragazzi che creano quei pacchetti per Debian.

Su Ubuntu tendo anche a installare GHC tramite Stow, ignorando del tutto i pacchetti di sistema.

Una leggera svolta dall'approccio di Jetxee è che installo la piattaforma Haskell (dalla fonte), raggruppandola con la directory GHC Stow. Suppongo che dovrei chiamare i percorsi /usr/local/stow/haskell-platform-VERSION, ma tendo a usare /usr/local/stow/ghc-VERSION invece.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top