2013-01-12 4 views
3

npm에서 종속 패키지는 종속 패키지의 디렉토리와 관련된 디렉토리 node_modules에 설치됩니다. 각 패키지는 자체 내부에 종속성을 저장합니다.Cabal 패키지를 로컬로 설치할 수 있습니까?

Cabal을 사용하면 패키지를 설치하면 항상 패키지가 전역 적으로 (즉, ~/.cabal) 설치되므로 다른 버전의 패키지가 서로 충돌하여 모든 것이 실패하고 잘못 될 수 있기 때문에 악몽과 눈물의 완벽한 처방입니다.

차라리 세계적으로보다 에 내 자신의 패키지의 하위 디렉토리를 즉 음모 패키지 로컬를 설치하고 싶습니다. 이러한 패키지의 모든 종속성은 동일하게 적용됩니다. 내 패키지 디렉토리 트리의 예는 다음과 같습니다.

my_package/ 
    dependencies/ 
    json/ 
     dependencies/ 
     foo/ 
      etc... 
     bar/ 
      etc... 
    mtl/ 
     etc... 
    my_package.cabal 
    src/ 
    Main.hs 

어떻게 할 수 있습니까?

답변

4

편집 : 최신 버전의 cabal에서는 cabal-dev가 아닌 cabal sandboxes을 사용해야합니다.

cabal-dev 도구를 살펴보십시오. Python의 경우 virtualenv과 비슷합니다.

기본적으로 cabal 명령을 사용할 경우 cabal-dev을 사용하십시오. 따라서 작업중인 패키지를 설치하려면 해당 디렉토리로 이동하여 cabal-dev install을 실행하십시오. ghc-pkg에서 cabal-dev까지 실행할 수도 있으므로 cabal-dev ghc-pkg unregister foo-bar과 같은 작업을 수행 할 수 있습니다. 또한 GHCi도 함께 시작할 수 있습니다 (cabal-dev ghci).

기본적으로 cabal-dev은 프로젝트의 cabal-dev 디렉토리에 패키지를 설치합니다.이 예제는 dependencies입니다.

+1

cabal-dev를 설치하면 버전 충돌이 발생합니다. 얼마나 역설적인가. T_T –

+0

@Zoidberg HEAD 버전을 사용해보십시오. https://github.com/creswick/cabal-dev/ –

+0

@MikhailGlushenkov 템플릿 - haskell 패키지를'--force-reinstall'해야했지만 효과가있었습니다. 나는 그것이 아무 것도 깨지 않았 으면 좋겠다. –

관련 문제