Cabal-install e Debian
-
28-10-2019 - |
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.
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.