2015-01-07 8 views
10

Ich bin ein Neuling für Haskell und Kabale, also vermisse ich wahrscheinlich etwas Einfaches."cabal install cabal-install" aktualisiert keine cabal-Version in OSX

I aktualisiert Kabale installieren:

sudo cabal install cabal-install 
Password: 
Resolving dependencies... 
Configuring cabal-install-1.22.0.0... 
Building cabal-install-1.22.0.0... 
Installed cabal-install-1.22.0.0 
Updating documentation index 

jedoch cabal --version sagt:

cabal-install version 1.18.0.5 
using version 1.18.1.4 of the Cabal library 

Was 1.22.0.0 geschah mit Cabal installieren?

Antwort

12

Es gibt zwei Möglichkeiten, cabal Pakete global zu installieren. Beachten Sie, dass cabal möglicherweise sudo erfordert.

$ cabal install <PACKAGE> --global 

Als allgemeinere Lösung, bearbeiten Sie die Datei ~/.cabal/config und setzen user-install-False:

Dieser Befehl <PACKAGE> global installieren. Dadurch wird automatisch das Flag --global gesetzt, sodass Sie einfach cabal install <PACKAGE> ohne Sorgen schreiben können. Hier ist ein Ausschnitt meiner config Datei:

... 
-- split-objs: False 
-- executable-stripping: True 
user-install: False 
-- package-db: 
-- flags: 
... 

Sie können auch root-cmd-sudo setzen wollen, wenn es nicht bereits ist, so dass cabal automatisch für das Root-Passwort gefragt wird, wenn es eine Erlaubnis Problem auftritt.

Es gibt weitere Informationen online here.

5

Ich sehe, dass es eine aktualisierte Cabal um ~/Library/Haskell/bin, so dass ich ersetzen konnte/usr/bin/cabal mit einem symbolischen Link zu dieser Kopie oder ich könnte diese Binärdatei zu /usr/bin kopieren.

Ich bin immer noch interessiert, ob es eine elegantere/kanonischere Methode gibt, um sicherzustellen, dass die neue Kabale standardmäßig verwendet wird.

+3

Es wird alles von Ihrem PATH bestimmt. – ErikR

+0

Werfen Sie einen Blick auf diese Antworten: http://StackOverflow.com/A/21200691/3649209, http://StackOverflow.com/A/19736802/3649209. –

2

TLDR: Versuchen hash -r

Bash hat einen PATH hashtable ausgeführt wird, die Befehle an die Stelle von Binärdateien abbildet. Sie können immer noch eine alte Version von cabal irgendwo in Ihrem PATH (möglicherweise in einer Sandbox) installiert haben. Da es sich bei cabal nicht um einen neuen Befehl handelt, wird die alte Version weiterhin von der Hashtabelle bereitgestellt. hash -r baut die Hashtabelle neu auf, damit die Shell die neue Version korrekt findet (vorausgesetzt, sie erscheint früher auf Ihrem Pfad als die alte).

+0

hat das Problem für mich behoben – jojo

Verwandte Themen