2012-10-15 8 views
5

Próbuję zainstalować pakiety, które wymagają innej wersji bazy niż ta, którą zainstalowałem (mam 4.6.0.0, wymagają one < 4.6). Jak mogę zainstalować te w moim systemie?Co zrobić, jeśli biblioteki wymagają innej wersji `base`?

Edytuj: Te pakiety rzeczywiście wymagają starszych pakietów w celu zbudowania, a nie tylko jako ograniczenia .cabal.

Odpowiedz

4

Ponieważ można Ponownie zainstaluj base, jedynym sposobem na zainstalowanie tych pakietów przed ich zaktualizowaniem jest pobranie źródła,

cabal unpack foo 

a następnie edytować foo.cabal, zmieniając górna granica dla base tam wpadać wersję pakietu (dołącz do .1) tak, że podczas instalowania innych pakietów cabal nie sądzę, że jest uszkodzony, ponieważ plik .cabal to wie (od indeks opakowaniem) mówi, że to wymaga innej wersji base i

cabal install 

z katalogu rozpakowane do.

Ponieważ było kilka istotnych zmian w bazie-4.6; z Eq i Show superklasy zostały usunięte z Num i Bits nie ma już Num jako nadrzędnej, może okazać się konieczne ustalenie kodu dodając Eq, Show lub Num na ograniczenia niektórych funkcji, które sprawiają, że pakiety skompilować.

To niewygodne, ale cena za bycie na bieżąco z najnowszą wersją GHC przez kilka tygodni.

+0

Jeśli to zrobię, otrzymam komunikat informujący, że nie może spełnić ograniczeń dla bazy i przerywa instalację. – bfops

+0

Co? Po dokonaniu edycji pliku '.cabal', aby zezwolić na bazę-4.6? –

+0

@RobotGymnast Który pakiet konkretnie próbujesz zainstalować? –

1

Jeśli chcesz, aby jeden z twoich programów był zależny od tych pakietów, możesz użyć cabal-dev jako zamiennik zamiennika dla cabal. Ten pierwszy instaluje lokalne kopie pakietów w ścieżce cabal-dev w bieżącym katalogu. Aby go zainstalować, wystarczy uruchomić:

cabal install cabal-dev 

Dla przenośności, można dodać coś takiego do makefile:

CABAL ?= cabal 

build : 
    $(CABAL) build --builddir=$(BUILD_PATH) 

Następnie w ustawieniach bash

CABAL=cabal-dev 
export CABAL 
1

Jeśli pakiet nie jest zgodny z bazą, którą aktualnie posiadasz (tzn. Po prostu zmiana ograniczenia jest niewystarczająca), jedyne opcje to przeniesienie pakietu samodzielnie lub użycie starszej wersji ghc, która zapewnia poprawną wersję bazy.

Najpierw jednak możesz sprawdzić u opiekuna pakietu. Dział rozwojowy może już obsługiwać to, czego potrzebujesz, a oni po prostu potrzebują trochę popychania, aby go uwolnić.

Powiązane problemy