2011-03-21 5 views
13

이것은 약간의 개인적인 문제이지만 사람들은 좋은 조언이나 해결 방법을 가지고있을 것입니다.cabal-install and 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/bin/.

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

지금 내 시스템은 두 파벌이 있고, 내가 cabal을 입력하여 얻을 하나 내가 대신 자체의 다른 하나를 업데이트하겠습니다 때문에 ... 사용하고자하는 것이 아니다, 따라서 효과가 . 이제

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

:

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

그래서, 내 마지막 질문 :

그래서 제가 한 일은 내 ~/.bashrc에서 그것을 별명이었다 뎁 저장소가 있습니까

  • 그 캐벌은 0.8.2를 보유하고 있습니까?
  • 현재 솔루션으로 문제가 발생할 수 있습니까? (예를 들어, which cabal은 여전히 ​​내 쓸데없는 점 /usr/bin/cabal을 가리 킵니다. 스크립트가이 명령을 사용하면 바보가 될 것입니다 ...)
  • 더 나은 해결책을 찾은 사람이 있습니까? (광산은 약간 임시 변통입니다. 그러나 그 모든 것은 내가 뒤에서 일어나는 일에 대한 나의 가난한 지식을 가지고 올 수 있습니다 ...)
  • 제가 말한 것이 잘못되었거나 부정확 할 경우 저를 시정하십시오.
+1

+1. 나는 하스켈이 자체 패키지 관리자를 필요로하는 이유를 알지 못하지만, 다른 언어는 없어도 얻을 수있다. – harpo

+5

많은 언어가 자체 패키지 관리자를 보유하고 있습니까? 예를 들어, RubyGem은 Ruby 커뮤니티에서 매우 인기가 있습니다. – dbyrne

+0

ruby, pip 또는 python, maven 및 Java 파생물의 easy_install 용 보석 ... 제 3 자 라이브러리를 광범위하게 사용하는 사람들을 위해 OS 패키지 관리 시스템에 의존하는 것이 항상 최선의 방법은 아닙니다. 특히 데비안과 같은 보수적 인 OS에. 나는 무거운 개발하에 (클라이언트가 아닌 개발자로서) 일부 라이브러리의 최신 릴리스를 따라해야하며 매번 수동으로 설치하는 것이 좋을 것입니다. –

답변

13

내가 수행하는 일은 --global 플래그가있는 캐럴을 설치하는 것입니다. 그러면 cabal이 /usr/local/bin/cabal에 설치 될 것이므로 항상 데비안 패키지 cabal을 능가 할 것입니다.

또 다른 방법은 일반적으로 데비안 패키지를 피하고 소스에서 곧바로 하스켈 플랫폼을 설치하는 것입니다. Haskell 라이브러리의 최신 버전을 항상 갖고 싶다면이 방법이 더 좋습니다.

+1

이것은 흥미 롭습니다. 그래서 나는 그것을 작동하게 만들었습니다 :> su> cabal update> cabal install cabal-install --global> exit> (여기에서 내 .bashrc에서 별칭을 제거하고 터미널을 다시 열었습니다) 이제는 잘 작동합니다! 감사. – Ptival

11

나는 사용자 로컬 $HOME/.cabal/binPATH 앞에두고 있습니다. 배포 패키지에서 ghc6, ghc6-prof, ghc6-doccabal-install 만 설치합니다. 나는 cabal-install 배포판을 사용하여 새로운 ~/.cabal을 부트 스트랩하는 것 이상으로 사용하지 않습니다. cabal install으로 설치 한 나머지 모든 항목 (최신 cabal 포함).

나는 새로운 GHC를 사용하려면

, 나는 /usr/local/stow/ghcVERSION에 배포하고, GNU stow로 가능합니다 (다시, 내 PATH에 우선 순위가 /usr/local에 심볼릭 링크를 추가합니다).배포본 GHC로 돌아가고 싶을 때 나는 그것에 대한 모든 심볼릭 링크를 제거하기 위해 stow -D을 실행한다.

cabal-dev을 사용하여 프로젝트 별 독점 설치를 고려하고 수시로 cabal과 같은 부수적 인 종속성을 피할 것을 고려합니다.

사실 저는 하스켈 플랫폼을 전혀 사용하지 않기 때문에 모든 것을 필요로하지 않고 개별 라이브러리를 설치하기가 더 쉽다는 것을 알았습니다. 나는 배포 라이브러리를 설치하지 않는다. 왜냐하면 그것들 모두가 사용 가능한 것은 아니거나 정확하게 필요한 버전이기 때문이다. 그리고 모두가 같은 장소 (내 경우에는 ~/.cabal)에 설치되면 충돌을 제어하는 ​​것이 훨씬 쉽습니다. --global으로 아무것도 설치하지 않습니다. 롤백이 잘못되어 어렵다고 생각하기 때문입니다.

+0

감사합니다. 흥미 롭습니다. 나는 어떤 문제/성가심이라도 만났을 때 이것으로 바꿀지도 모른다. – Ptival

1

우분투에서는 시스템 패키지를 모두 무시하고 GHC를 설치하는 경향이 있습니다.

jetxee의 접근법에서 약간의 비꼬는 점은 GHC stow 디렉토리를 사용하여 Haskell Platform (소스에서)을 설치한다는 것입니다. 나는 /usr/local/stow/haskell-platform-VERSION 경로를 호출해야한다고 생각하지만, 대신 /usr/local/stow/ghc-VERSION을 사용하는 경향이 있습니다.

4

물론이 정보는 오래되었지만 예, 데비안 불안정 및 테스트의 경우 작성 당시에 cabal-install 0.10.2.

일반적으로 데비안의 하스켈 패키지는 항상 최신 패키지 나 최고의 패키지를 사용하지 않고도 함께 작동하는 것으로 알려진 패키지 세트를 원하는 사용자를 대상으로합니다. 여기에는 음모 설치가 포함됩니다. 저장소에서 cabal-install을 사용하고 아직 데비안 용으로 패키지되지 않은 라이브러리 만 설치합니다.

면책 조항 : 나는 데비안 용 패키지를 만드는 사람들 중 한 명입니다.

+0

충분히 공정하게, 나는 당신이 모든 사람의 필요를 만족시킬 수 없다는 것을 이해하며, 지루한 대안이 없다는 것을 이해합니다. – Ptival