[英]cabal-install and Debian
因此,這是一個個人問題,但也許人們會有很好的建議或解決方法。
問題是關於在Debian下安裝cabal-install和haskell-platform。
當您apt-get install haskell-platform
,它隨cabal-install
,並且其命令cabal
可用。
現在,該cabal-install
不是最新的:
> 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
但是,我對運行cabal update
理解是,它會更新cabal,但是由於它不是“ Debian玩物”,因此將其放在~/.cabal/bin/
。
> ~/.cabal/bin/cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library
現在我的系統有2個cabal,而我輸入的cabal
不是我要使用的。因為它會不斷更新另一個而不是自身,因此無效。
所以我要做的就是在~/.bashrc
中給它起別名:
alias cabal='~/.cabal/bin/cabal'
現在:
> cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library
所以,我的最后一個問題是:
which cabal
仍然指向我無用的/usr/bin/cabal
,因此,如果腳本使用此命令,它們將被愚弄...) 我要做的是使用--global
標志安裝cabal。 這會將cabal安裝到/usr/local/bin/cabal
,因此它將始終取代Debian軟件包cabal。
另一種方法是通常避免使用Debian軟件包並直接從其源代碼安裝Haskell平台。 如果您始終希望擁有Haskell庫的最新版本,則此方法也更好。
我將我的用戶本地$HOME/.cabal/bin
放在PATH
的前面。 我僅從分發軟件包中安裝ghc6
, ghc6-prof
, ghc6-doc
和cabal-install
。 除了引導新的~/.cabal
之外,我不使用發行版cabal-install
進行任何其他~/.cabal
。 我使用cabal install
所有其余部分,包括較新的cabal
本身。
當我想使用較新的GHC時,我將其部署在/usr/local/stow/ghcVERSION
,並使用GNU stow
啟用它(它在/usr/local
添加了符號鏈接,該符號鏈接同樣在PATH
具有優先級)。 當我想切換回發行版GHC時,只需運行stow -D
即可刪除所有指向它的符號鏈接。
我考慮使用cabal-dev
進行項目特定的cabal安裝,並避免因cabal
時不時發生的cabal
依賴關系。
事實上,我根本不使用Haskell平台,因為我不需要所有功能,並且發現安裝單個庫更容易。 我不安裝分發庫,因為並非所有分發庫都可用,或者正是我需要的版本。 如果所有沖突都安裝在同一位置(在我的情況下是~/.cabal
),則控制沖突要容易得多。 我不使用--global
安裝任何東西,因為我認為這是錯誤的並且很難回滾。
當然,這些信息已經過時了,但是,是的,Debian不穩定,並且在撰寫本文時,測試已經有了cabal-install 0.10.2。
通常,Haskell東西的Debian打包針對希望使用一組已知可以一起工作的軟件包的用戶,即沒有依賴地獄,而又不總是擁有最新和最偉大的東西。 這包括安裝安裝。 我使用來自存儲庫的cabal-install,僅安裝那些尚未為Debian打包的庫。
免責聲明:我是為Debian創建這些軟件包的人之一。
在Ubuntu上,我也傾向於通過存儲來安裝GHC,而完全不考慮系統軟件包。
jetxee的方法有一個小變化,就是我確實安裝了Haskell平台(從源代碼),並將其與GHC存放目錄合並。 我想應該將路徑稱為/usr/local/stow/haskell-platform-VERSION
,但是我傾向於使用/usr/local/stow/ghc-VERSION
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.