2014-03-05 4 views
9

카발 샌드 박스에서 패키지를 업그레이드하는 방법을 이해하는 데 어려움이 있습니다. esqueleto-1.3.4.5esqueleto-1.3.5으로 업그레이드하고 myapp.cabalesqueleto >= 1.3.5 && < 1.4에 의존하도록 변경했습니다. 도당이 어떻게 작동하는지, esqueleto-1.3.4.5/installed-ac7... 누군가가 설명 할 수 esqueleto의 설치 버전을 사용 종속성을 해결하기 위해 노력하고있는 것처럼 카발 샌드 박스에 설치된 패키지 업그레이드

$ cabal --version cabal-install version 1.18.0.2 using version 1.18.1.2 of the Cabal library $ cabal install --upgrade-dependencies Resolving dependencies... cabal: Could not resolve dependencies: trying: esqueleto-1.3.4.5/installed-ac7... (user goal) next goal: myapp (user goal) rejecting: myapp-0.0.0 (conflict: esqueleto==1.3.4.5/installed-ac7..., myapp => esqueleto>=1.3.5 && <1.4)

오류

나에게 보인다?

나의 직감은 이것을하기 위해 --upgrade-dependencies을 사용해야한다는 것이었지만 나는 --only-dependencies--reinstall도 시도했다.

+2

'cabal sandbox delete','cabal sandbox init','cabal install --only-dependencies'는 제가 평소 이런 일을하는 방식입니다. 상대적으로 작은 종속성 세트로 모든 것을 다시 실행하는 데 그리 오래 걸리지 않습니다. 또는'.cabal-sandbox/ -package-db /'폴더에서 오래된'equeleto' 폴더를 삭제할 수 있습니다 (폴더 경로에 부정확 할 수도 있습니다. 머리 상단을 기억할 수 없습니다). – bheklilr

+0

고마워요. bodlilr - yesod 플랫폼에서 컴파일하는 데 많은 시간이 걸리지 만 패키지 폴더를 삭제하는 것이 더 좋은 방법 일 수 있습니다. 귀하의 의견을 답변으로 게시하십시오, 나는 upvote거야. –

답변

6

내가 찾은 가장 쉬운 방법은 당신의 샌드 박스를 핵무기와 당신은 교대로 .cabal-sandbox/<platform>/.cabal-sandbox/<platform>-packages.conf/ 폴더에서 특정 패키지를 삭제할 수 있습니다

$ cabal sandbox delete 
$ cabal sandbox init 
$ cabal install --only-dependencies 

시작하는 것입니다,하지만 좀 더 "수술"필요 . 당신의 의존성이 방대하고이 일을 자주해야 할 필요가 없다면, 핵 옵션은별로 짜증나지 않습니다.

+0

나에게 일어난 다른 일은'cabal configure '를 먼저 실행하는 것을 잊었다 고 생각합니다. 그것은 나를 처음부터 다시 빌드하거나 수동으로 패키지를 삭제하지 않고도 종속성을 업그레이드 할 수 있어야합니다. 나는 atm을 여행하고있다. 그러나 그것이 하루나 이틀에 효과가 있는지 확인할 것이다. 감사합니다 –

+0

* 핑 * 작동 했습니까? –