2015-09-30 49 views
6

Po przeprowadzeniu aktualizacji do OS X El Capitan, Cabal i GHC nie są już znaleźć na moim systemie:Haskell i Cabal brakuje po El Capitan aktualizacji

-bash: ghc: command not found 
-bash: cabal: command not found 

Co muszę zrobić, aby uzyskać Cabal i GHC pracy na OS X El Capitan?

+0

Jeśli możesz, utwórz dla niego problem na stronie HP github, aby mógł być śledzony: https://github.com/haskell/haskell-platform/issues Również - czy programy nadal istnieją w/usr/bin (ale nie są wykonywalne) lub czy uaktualnienie całkowicie je usunęło? – ErikR

+0

Aktualizacja usuwa wszystkie '/ usr' (z wyjątkiem'/usr/local') z czegokolwiek innego niż z Apple. – orome

Odpowiedz

11

Znalazłem następujące podejście najbardziej niezawodne we wszystkich wersjach OSX, w tym El Capitan.

  1. Install Homebrew

  2. Run brew install ghc

  3. Run brew install cabal-install

Takie podejście pozwala łatwo zainstalować najnowsze wersje i zainstalowano wiele wersji i łatwo przełączać się między nimi za pomocą polecenie brew switch. Platforma Haskell nie ma tych właściwości, dlatego też zaawansowani użytkownicy unikają jej w żaden sposób.

+0

To dobry pomysł. Jak pozbyć się mojej istniejącej instalacji platformy Haskell (chciałbym ją najpierw wyczyścić)? Czy moje istniejące pakiety w '/ Users/Roy/Library/Haskell/ghc-7.10.2-x86_64/lib' pozostaną i czy nadal będę mógł z nich korzystać? – orome

+2

Możesz po prostu usunąć pliki (katalogi instalacyjne i pakietowe) na wypadek, gdyby nie było lepszego sposobu. Nie spodziewam się żadnych konfliktów, nawet jeśli nic nie zrobisz. Zainstalowana w Brewie Cabal używa innej struktury katalogów, więc musiałbyś trochę zatęchnąć, żeby zachować pakiety, ale wolałbym je upuścić i pozwolić Cabalowi wykonać swoją pracę i zainstalować je, gdy jest to wymagane. –

+0

Brzmi obiecująco. Gdzie Homebrew umieszcza zainstalowane pakiety? W tym miejscu, gdzie umieścić pliki wykonywalne dla 'stylish-haskell' i' hlint'- nie mogę ich znaleźć? – orome

1

Uważam, że El Capitan nie pozwala użytkownikom na zmianę /usr, która jest tam, gdzie zainstalowane są pliki binarne Haskell.

Jeśli możesz skopiować/zainstalować programy w /usr/local/bin, powinny one działać od tego miejsca.

Jeśli programy nie są już widoczne w/usr/bin, sugerowałbym ponowne zainstalowanie HP na innej partycji. Następnie skopiuj je do/usr/local.

Daj mi znać, jak to działa.

+0

Każdy pomysł, czy planowana jest aktualizacja GHC lub Cabal, która rozwiąże ten problem. Ręczne przemieszczanie obiektów wydaje się nieco delikatne. – orome

+0

BTW: Kopiowanie nie jest opcją, ponieważ wygląda na to, że instalacja EC usuwa wszystko, czego nie lubi w '/ usr'. – orome

10

Edytuj: Istnieje teraz released version, który rozwiązuje te problemy.

Wszystko to jest spowodowane nowymi funkcjami "rootless security" w El Capitan.

Nie trzeba kopiować ani ponownie instalować programów - pliki w /usr/bin były zawsze tylko dowiązaniami symbolicznymi, do rzeczy dostępnych w /Library/Frameworks/GHC.framework/ i /Library/Frameworks/HaskellPlatform.framework. Więc powinieneś być w stanie dowiązać je ponownie (do /usr/local/bin tym razem) stamtąd.

Zobacz także https://github.com/haskell/haskell-platform/issues/205

Mamy nadzieję, że nowa wersja platformy, która rozwiązuje te problemy będą się wkrótce.

+0

FWIW, testowałem kandydata ostatniej nocy i wydaje się, że działa idealnie. (I już to zgłosiłem do zeszłej nocy, więc to nie liczy się jako dodatkowy raport o sukcesie.) – Carl