Ai-je mis à jour mon installation cabale?
Je viens d'installer Haskell à partir de c'est le site officiel. Après cela, suivant son tutoriel de démarrage rapide.
Je cours:
cabal update
Qui affiche ce message:
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
Je cours:
cabal install cabal-install
Et vérifiez si la mise à jour a réussi avec
cabal update
Le résultat, il m'indique le même message depuis le début:
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
Alors, ai-je mis à jour la cabale-installer ou non? Comment puis-je vérifier la version de ma cabale?
Important: j'utilise le 64 version bits pour Mac OS X.
9 réponses
J'ai eu un problème similaire après l'installation de la plate-forme Haskell 2012.4.0.0
sur OSX. Quand j'ai couru cabal install cabal-install
, Il s'est terminé par:
cabal: ../ghc-7.4.2/lib/cabal-install-1.16.0.2/bin/cabal: does not exist
J'ai donc deviné qu'il avait ses chemins mélangés quelque part. Cependant, l'exécutable a été construit avec succès (vérifiez ~/Library/Haskell/ghc-7.4.2/lib/cabal-install-1.16.0.2/bin/cabal
) et je l'ai juste copié à partir de là vers ~/Library/Haskell/bin
qui est sur mon chemin.
Par la suite, tout s'est bien passé:
$ 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
Dans mon cas (et probablement d'autres?) de la cabale est initialement installé dans /usr/local/bin
par homebrew lors de l'installation de haskell-platform
. Lors de la mise à niveau de cabal, la version est installée sur $HOME/.cabal/bin/cabal
. Vous devriez placer vos bacs de cabale plus haut dans votre $PATH
, comme ceci:
export PATH=$HOME/.cabal/bin:$PATH
Tout le monde semble éprouver un problème légèrement différent ici. Dans mon cas, cabal
a été construit avec succès et installé sur ~/Library/Haskell/bin
.
Comme indiqué dans ~/.cabal/config
, l'ajout de ~/Library/Haskell/bin
à PATH
résolu le problème.
Voici la description dans ~/.cabal/config
:
-- === 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"
Sur OS X 10.8, j'ai dû ajouter /Library/Haskell/bin
à mon chemin (le mettre avant /usr/bin
). Ajouter cela a corrigé le message d'erreur
cabal --version
Vous donne la version de cabal que vous courez. Si vous voulez voir la version de la cabale-installation, vous avez, exécutez cabal info cabal-install
et regarder le versions installées ligne.
, Pour moi, sur OS X, versions installées est [unknown]
, après l'exécution de cabal install cabal-install
, ce qui n'est pas grande.
J'ai eu ce problème aussi.
Après avoir exécuté which cabal
, j'ai trouvé qu'il utilisait /usr/bin/cabal
. La suppression de cela a résolu le problème.
Il semble que cabal installe par défaut des paquets localement pour l'utilisateur actuel et ne fera donc pas partie du chemin. Regardez le Cabal documentation spécifiquement étape 1.2.1 où vous pouvez modifier la configuration pour installer les choses globalement par défaut (non recommandé).
La façon dont j'ai installé cabal était cabal --global install cabal-install
mais avait toujours des problèmes avec le chemin qui depuis l'installation par défaut de Haskell place le chemin dans cet ordre C:\Program Files\Haskell Platform\2013.2.0.0\lib\extralibs\bin;C:\Program Files\Haskell Platform\2013.2.0.0\bin;
où le premier chemin a priorité sur la seconde. Avec le -- global flag cabal installé le binaire à C:\Program Files\Haskell\bin
qui n'est pas dans mon chemin mais doit être ajouté avant le chemin C:\Program Files\Haskell Platform\2013.2.0.0\lib\extralibs\bin
.
Extrait de la documentation
, Vous devez mettre la cabale.exe dans un répertoire qui se trouve sur votre % PATH%, par exemple C:\Program fichiers\Haskell \ bin.
Dans mon cas, une combinaison de plusieurs réponses était nécessaire pour résoudre ce problème. Je vais essayer de fournir une solution plus complète dans une réponse pour quelqu'un d'autre dans ma situation.
- Pour commencer, l'exécution de
which cabal
m'a montré que/usr/bin/cabal
est en cours de chargement, qui est un lien symbolique vers/Library/Haskell/ghc-7.8.3-x86_64/bin/cabal
. Je crois que de nouvelles versions de cabal étaient en cours d'installation, mais ce chemin était spécifique à une seule version, donc ils ont été ignorés. Ajouter/Library/Haskell/bin
à l'avant de mon$PATH
remédié à cela situation. - Deuxièmement, et plus important encore, les nouvelles versions de
cabal-install
étaient installées dans mon bac à sable cabal au lieu de l'emplacement du système. Je n'ai pas vu d'autres réponses suggérant cela, mais après un peu de monkeying, j'ai trouvé que le déplacement en dehors du répertoire de mon application permettait à cabal de s'installer sur le système. - enfin, l'ajout de l'indicateur
--global
à la commande a résolu le problème. Ma commande finale étaitcabal install --global cabal-install
. Après cela, j'ai finalement pu mettre à jour correctement.
TL; DR: si vous utilisez des sandboxes cabal, déplacez-vous en dehors du répertoire de votre projet et exécutez cabal install --global cabal-install
. Vérifiez également votre variable $PATH
comme d'autres l'ont suggéré.
Dans mon cas, la nouvelle version de cabal était en cours d'installation dans le .cabal-bac à sable du projet dans lequel j'étais.
Par exemple vérifier la version:
./.cabal-sandbox/bin/cabal --version
J'avais donc besoin de le mettre à jour en dehors de cela. C'était sur OSX.