2013-02-17 9 views
30

Właśnie zainstalowałem Haskella z it's official site. Następnie wykonaj samouczek szybkiego uruchamiania.Czy uaktualniłem moją instalację kablową?

biegnę:

cabal update 

który pokazuje komunikat:

Downloading the latest package list from hackage.haskell.org 
Note: there is a new version of cabal-install available. 
To upgrade, run: cabal install cabal-install 

biegnę:

cabal install cabal-install 

i sprawdzić, czy aktualizacja powiodła się z

cabal update 

W rezultacie, to pokazuje mi się ten sam komunikat od początku:

Downloading the latest package list from hackage.haskell.org 
Note: there is a new version of cabal-install available. 
To upgrade, run: cabal install cabal-install 

Więc ja uaktualnić Cabal zainstalować czy nie? Jak mogę sprawdzić wersję mojej kabały?

Ważne: Używam wersji 64 bity dla Mac OS X.

+3

Użyj 'which cabal', aby dowiedzieć się, która instalacja cabal używasz, cabal prawdopodobnie nie instaluje nowo pobraną wersję do Twojej PATH. Sprawdź ~/bin dla innego pliku wykonywalnego cabal. – bisserlis

Odpowiedz

18

Miałem podobny problem po zainstalowaniu platformy Haskell 2012.4.0.0 na OSX. Kiedy wpadłem cabal install cabal-install, skończyło się:

cabal: ../ghc-7.4.2/lib/cabal-install-1.16.0.2/bin/cabal: does not exist 

więc domyśliłem się, że dostał jej ścieżki mieszają się gdzieś. Jednak plik wykonywalny został faktycznie zbudowany pomyślnie (sprawdź dla ~/Library/Haskell/ghc-7.4.2/lib/cabal-install-1.16.0.2/bin/cabal), a następnie skopiowałem go do ~/Library/Haskell/bin, który znajduje się na mojej ścieżce.

Następnie wszystko przebiegało OK:

$ which cabal 
/Users/luke/Library/Haskell/bin/cabal 
$ cabal update 
Downloading the latest package list from hackage.haskell.org 
$ cabal --version 
cabal-install version 1.16.0.2 
using version 1.16.0.3 of the Cabal library 
+2

Podobna sytuacja wystąpiła w moim systemie Windows. Katalog instalacji cabal na użytkownika będzie w '% HOMEPATH% \ AppData \ Roaming \ cabal \ bin', więc to musi być dołączone do ścieżki jako wyższy priorytet. –

3

cabal --version daje wersję kabały używasz. Jeśli chcesz zobaczyć wersję cabal-install, uruchom cabal info cabal-install i spójrz na wersję zainstalowaną na linii.

Dla mnie na OS X, wersje zainstalowane jest [unknown], po uruchomieniu cabal install cabal-install, co nie jest wspaniałe.

+0

Może dlatego, że jest nieuczciwe, zawsze mówi ci o uaktualnieniu? –

+1

@LuisOrtegaAraneda Nie, cabal binary zna swoją wersję, tylko informuje, aby uaktualnić, jeśli jest nowsza na hackage. Prawdopodobnie nowy został zainstalowany w katalogu, który nie znajduje się na twojej ścieżce. Który system operacyjny? W systemie Linux (i OS X, iirc) powinieneś dodać do swojej ścieżki '$ HOME/.cabal/bin'; w systemie Windows, coś w stylu "Użytkownicy \ Ty \ AppData \ Roaming". –

+0

Właściwie to nie działa z tą ścieżką, w systemie OS X musisz użyć '/ Library/Haskell /'. I kiedy robię cabal info cabal-install, mówi '[nieznane]' –

3

miałem ten problem zbyt.

Po uruchomieniu which cabal okazało się, że korzystał z numeru /usr/bin/cabal. Usunięcie tego rozwiązało problem.

10

Na OS X 10.8 musiałem dodać /Library/Haskell/bin do mojej PATH (umieść to przed /usr/bin). Dodając, że naprawiono komunikat o błędzie

+1

To prawda. Stara wersja w '/ usr/bin' zasłonięta wersją w'/Library/Haskell/bin'. Całkiem niechętna instalacja ... Dlaczego nie zastąpią starej wersji w '/ usr/bin'. –

12

Każdy wydaje się tutaj mieć nieco inny problem. W moim przypadku cabal został pomyślnie zbudowany i zainstalowany pod numerem ~/Library/Haskell/bin.

Jak odnotowano w ~/.cabal/config, rozwiązanie problemu zostało rozwiązane dzięki dodaniu ~/Library/Haskell/bin do PATH.

Poniżej znajduje się opis w ~/.cabal/config: (? I prawdopodobnie innych)

-- === Built executables will be installed in: 
--  ~/Library/Haskell/bin 
-- 
-- You may wish to place this on your PATH by adding the following 
-- line to your ~/.bash_profile: 
--  export PATH="$HOME/Library/Haskell/bin:$PATH" 
+0

To jest droga, IMO. –

+0

Uratowałeś mój dzień. – Wilbeibi

26

W moim przypadku kabała jest wstępnie zainstalowany w /usr/local/bin przez homebrew podczas instalowania haskell-platform. Podczas aktualizacji cabal, wersja jest instalowana na $HOME/.cabal/bin/cabal. powinno Ci umieścić swoje kosze Cabal wyższe w swojej $PATH, tak:

export PATH=$HOME/.cabal/bin:$PATH 
+0

To nie działało dla mnie na homebrew + mavericks. Odpowiedź [This] (http://stackoverflow.com/a/19736802/388010) była jednak taka. –

+0

@Sebastian - Right - JEŚLI używasz pakietu bezpośrednio z http://hackage.haskell.org/platform/. Homebrew używa '$ HOME/.cabal' oraz'/usr/local/bin', w przeciwieństwie do '/ Library/Haskell/bin'. Zdaję sobie teraz sprawę, że powyższe rozwiązanie odpowiada nieco odmiennemu pytaniu niż pytanie zadane przez PO. – Charles

+0

To był problem dla mnie. –

1

Wydaje się, że kabała domyślnie instaluje pakiety lokalnie dla bieżącego użytkownika, a zatem nie będzie częścią ścieżki. Spójrz na Cabal documentation w szczególności krok 1.2.1, w którym możesz zmienić konfigurację, aby zainstalować rzeczy globalnie (nie zalecane).

Sposób, w jaki zainstalowałem cabal to cabal --global install cabal-install, ale wciąż miałem problemy ze ścieżką, która od czasu domyślnej instalacji Haskella umieszcza ścieżkę w tej kolejności C:\Program Files\Haskell Platform\2013.2.0.0\lib\extralibs\bin;C:\Program Files\Haskell Platform\2013.2.0.0\bin;, gdzie pierwsza ścieżka ma pierwszeństwo przed drugą. Z kablem flag -global zainstalowałem binarkę na C:\Program Files\Haskell\bin, która nie jest na mojej ścieżce, ale musi zostać dodana przed ścieżką C:\Program Files\Haskell Platform\2013.2.0.0\lib\extralibs\bin.

Zrobione z dokumentacji

Musisz umieścić cabal.exe w katalogu, który ma na swoim% PATH%, na przykład C: \ Program Files \ bin \ Haskell.

0

W moim przypadku nowa wersja kabały był zainstalowany w .cabal-piaskownicy projektu byłem w.

np Sprawdzanie wersji:

./.cabal-sandbox/bin/cabal --version 

Więc musiałem go ulepszyć poza tym. To było na OSX.

1

W moim przypadku potrzebna była kombinacja kilku odpowiedzi tutaj, aby rozwiązać ten problem. Spróbuję dostarczyć bardziej kompleksowe rozwiązanie w jednej odpowiedzi dla każdego innego w mojej sytuacji.

  • Na początek, uruchomiony which cabal pokazał mi, że /usr/bin/cabal był załadowany, który był dowiązaniem do /Library/Haskell/ghc-7.8.3-x86_64/bin/cabal. Sądzę, że instalowano nowsze wersje cabal, ale ta ścieżka była specyficzna dla pojedynczej wersji, więc zostały one zignorowane. Dodanie /Library/Haskell/bin z przodu mojego $PATH naprawiło tę sytuację.
  • Po drugie, i co ważniejsze, nowe wersje cabal-install zostały zainstalowane w mojej kabalowej piaskownicy, a nie w lokalizacji systemu. Nie widziałem innych odpowiedzi sugerujących to, ale po trochę małpowania wokół stwierdziłem, że poruszanie się poza katalogiem mojej aplikacji pozwoliło cabal na zainstalowanie się w systemie.
  • Na koniec dodanie do polecenia flagi --global rozwiązało problem. Moje ostatnie polecenie brzmiało: cabal install --global cabal-install. Po tym, w końcu udało mi się zaktualizować poprawnie.

TL; DR: jeśli używasz kabinowych piaskownic, wyjdź poza katalog projektu i uruchom cabal install --global cabal-install. Sprawdź także zmienną $PATH, zgodnie z sugestią innych osób.

Powiązane problemy