2015-01-07 4 views
10

저는 haskell과 cabal의 초보자입니다. 그래서 나는 간단한 것을 놓친 것 같습니다."cabal install cabal-install"은 OSX에서 Cabal 버전을 업데이트하지 않습니다.

내가 업데이트 음모 설치 :

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 

그러나 cabal --version는 말합니다 :에 무슨 일이 있었는지

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

은 1.22.0.0을 설치 음모?

답변

12

cabal 패키지를 전역으로 설치하는 데는 두 가지 방법이 있습니다. 결과적으로 cabal에 sudo가 필요할 수 있습니다. 파일 ~/.cabal/config을 편집,보다 일반적인 해결책으로

$ cabal install <PACKAGE> --global 

Falseuser-install을 설정

이 명령은 <PACKAGE> 전 세계적으로 설치됩니다. 그러면 자동으로 --global 플래그가 설정되므로 아무런 걱정없이 cabal install <PACKAGE>을 쓸 수 있습니다. 여기 내 config 파일의 단편이다 : 그것은 권한 문제가 발생하면 cabal 자동으로 루트 암호를 입력하라는 메시지가 표시됩니다 있도록이 이미 아니라면

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

는 또한 sudoroot-cmd을 설정할 수 있습니다.

온라인 정보는 here입니다.

5

~/Library/Haskell/bin에 업데이트 된 음소가 있음을 알기 때문에/usr/bin/cabal을이 사본의 심볼릭 링크로 바꿀 수 있습니다.이 바이너리를 /usr/bin으로 복사 할 수 있습니다.

새로운 음모가 기본적으로 사용되는지보다 우아하고 표준적인 방법이 있다면 여전히 관심이 있습니다.

+3

귀하의 PATH에 따라 결정됩니다. – ErikR

+0

다음 답변을 살펴보십시오. http://stackoverflow.com/a/21200691/3649209, http://stackoverflow.com/a/19736802/3649209. –

2

TLDR : 바이너리의 위치에 명령을 매핑하는 PATH의 해시 테이블을 가지고 hash -r

배쉬를 실행 해보십시오. PATH에 어딘가에 (아마도 샌드 박스에) 오래된 버전의 cabal이 설치되어있을 수 있습니다. cabal은 새로운 명령이 아니기 때문에 해시 테이블은 이전 버전을 계속 제공합니다. hash -r은 해시 테이블을 다시 작성하므로 셸은 새 버전을 올바르게 찾습니다 (이전 버전보다 경로 앞에서 표시됨).

+0

이 문제를 해결했습니다. – jojo