2015-01-07 24 views
10

içinde cabal versiyonunu güncellemez. Ben haskell ve cabal için yeni biriyim, bu yüzden muhtemelen basit bir şey eksik."cabal install cabal-install", OSX

Güncellenmiş cabal yükleyin:

sudo cabal install cabal-install 
Password: 
Resolving dependencies... 
Configuring cabal-install-1.22.0.0... 
Building cabal-install-1.22.0.0... 
Installed cabal-install-1.22.0.0 
Updating documentation index 

Ancak cabal --version diyor ki: ne oldu

cabal-install version 1.18.0.5 
using version 1.18.1.4 of the Cabal library 

1.22.0.0 yükleyin Cabal?

cevap

12

Dünya çapında cabal yükleme paketi yapmanın iki yolu vardır. Sonuç olarak, cabal'un sudo gerektirebileceğini unutmayın. Dosyayı ~/.cabal/config düzenleyin daha genel bir çözüm olarak

$ cabal install <PACKAGE> --global 

ve False için user-install ayarlayın:

Bu komut <PACKAGE> küresel kuracaktır. Bu --global bayrağını otomatik olarak ayarlayacaktır, böylece cabal install <PACKAGE>'u herhangi bir endişe olmadan yazabilirsiniz. İşte benim config dosyasının bir pasajı: bu bir izin sorunu karşılaştığında cabal otomatik kök şifresini isteyecektir böylece, halen açık değilse

... 
-- split-objs: False 
-- executable-stripping: True 
user-install: False 
-- package-db: 
-- flags: 
... 

Ayrıca sudo için root-cmd ayarlamak isteyebilirsiniz.

Çevrimiçi daha fazla bilgi çevrimiçi var here.

5

~/Library/Haskell/bin adresinde güncellenmiş bir kabalık olduğunu görüyorum, bu nedenle bu kopyaya/usr/bin/cabal değerini bu kopyaya çevirebilirim veya bu ikili dosyayı /usr/bin'a kopyalayabilirim.

Yeni kabinin varsayılan olarak kullanılmasını sağlamak için daha zarif/kanonik bir yol varsa hala ilgileniyorum.

+3

Hepsi PATH tarafından belirlenir. – ErikR

+0

Bu cevaplara bir göz atın: http://stackoverflow.com/a/21200691/3649209, http://stackoverflow.com/a/19736802/3649209. Benim için –

2

TLDR: ikili konuma komutları eşleştiren bir PATH hashtable sahiptir hash -r

Bash çalıştırmayı deneyin. Yine de PATH'nizde bir yere monte edilmiş eski bir cabal versiyonuna sahip olabilirsiniz (muhtemelen bir kum havuzunda). Cabal yeni bir komut olmadığı için, hashtable eski sürümü sunmaya devam edecektir. hash -r hashtable'ı yeniden oluşturduğundan, kabuk yeni sürümü (yolunuzda öncekinden daha eski bir görünüme sahip olarak sağlayarak) doğru şekilde bulacaktır.

+0

düzeltildi – jojo