web-dev-qa-db-ja.com

cabal-installをアップグレードしましたか?

Haskellを 公式サイト からインストールしました。その後、クイックスタートチュートリアルに従います。

走る:

cabal update

これはこのメッセージを示しています:

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

走る:

cabal install cabal-install

更新が成功したかどうかを確認します

cabal update

その結果、最初から同じメッセージが表示されます。

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

では、cabal-installをアップグレードしましたか?陰謀団のバージョンを確認するにはどうすればよいですか?

重要:Mac OS X用の64ビットバージョンを使用しています。

30

Haskellプラットフォーム2012.4.0.0をOSXにインストールした後、同様の問題が発生しました。 cabal install cabal-installを実行すると、次のように終了しました。

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

だから私はそれがどこかでその道を混乱させたと思いました。ただし、実行可能ファイルは実際には正常にビルドされ(~/Library/Haskell/ghc-7.4.2/lib/cabal-install-1.16.0.2/bin/cabalを確認)、そこからパス上にある~/Library/Haskell/binにコピーしました。

その後、すべてが正常に実行されました。

$ 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
18
Shaun the Sheep

私の場合(そしておそらく他の人?)、cabalは/usr/local/binをインストールするときに、自作によってhaskell-platformに最初にインストールされます。 cabalをアップグレードする場合、バージョンは$HOME/.cabal/bin/cabalにインストールされます。次のように、キャバルビンを$PATHのより高い位置に配置する必要があります。

export PATH=$HOME/.cabal/bin:$PATH
26
Charles

ここでは、誰もが少し異なる問題を経験しているようです。私の場合、cabalは正常にビルドされ、~/Library/Haskell/binにインストールされました。

~/.cabal/configに記載されているように、~/Library/Haskell/binPATHに追加すると問題が解決しました。

以下は~/.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"
12
Handol Park

OS X 10.8では、PATHに/Library/Haskell/binを追加する必要がありました(/usr/binの前に配置してください)。これを追加すると、エラーメッセージが修正されました

10
Jay Dorsey

cabal --versionは、実行しているcabalのバージョンを示します。お持ちのcabal-installのバージョンを確認したい場合は、cabal info cabal-installを実行し、インストールされているバージョン行を確認してください。

OS Xの私にとって、インストールされているバージョン[unknown]を実行した後、cabal install cabal-installです。

3
Chris Barrett

私もこの問題を抱えていました。

which cabalを実行した後、/usr/bin/cabalを使用していることがわかりました。これを削除すると問題が解決しました。

3
Matthew H

デフォルトでは、cabalは現在のユーザーのパッケージをローカルにインストールするため、PATHの一部にはならないようです。 Cabalドキュメント 具体的にはステップ1.2.1を見てください。ここでは、デフォルトでグローバルにインストールするように構成を変更できます(非推奨)。

私がcabalをインストールした方法はcabal --global install cabal-installでしたが、Haskellのデフォルトのインストール以降、パスはC:\Program Files\Haskell Platform\2013.2.0.0\lib\extralibs\bin;C:\Program Files\Haskell Platform\2013.2.0.0\bin;の順序で配置され、最初のパスが2番目のパスよりも優先されるという問題がありました。 --globalフラグを使用して、cabalはバイナリをC:\Program Files\Haskell\binにインストールしました。これは私のパスにはありませんが、C:\Program Files\Haskell Platform\2013.2.0.0\lib\extralibs\binパスの前に追加する必要があります。

ドキュメントから取得

Cabal.exeは、%PATH%にあるディレクトリ(C:\ Program Files\Haskell\binなど)に配置する必要があります。

1
Har

私の場合、この問題を解決するには、ここでいくつかの回答を組み合わせる必要がありました。私の状況にある他の人のために、1つの答えでより包括的な解決策を提供しようと思います。

  • 手始めに、which cabalを実行すると、/usr/bin/cabalがロードされていることがわかりました。これは/Library/Haskell/ghc-7.8.3-x86_64/bin/cabalへのシンボリックリンクです。新しいバージョンのcabalがインストールされていると思いますが、このパスは単一バージョンに固有であるため、無視されました。 /Library/Haskell/binの前に$PATHを追加すると、その状況が改善されました。
  • 次に、さらに重要なことに、新しいバージョンのcabal-installが、システムの場所ではなく、私のcabalサンドボックスにインストールされていました。これを示唆する他の回答は見当たりませんでしたが、少しおしゃべりした後、アプリケーションのディレクトリの外に移動すると、cabalが実際にシステムにインストールできることがわかりました。
  • 最後に、コマンドに--globalフラグを追加すると、問題が修正されました。私の最後のコマンドはcabal install --global cabal-installでした。この後、ようやくちゃんとアップデートできました。

TL; DR:陰謀団のサンドボックスを使用している場合は、プロジェクトのディレクトリの外に移動して、cabal install --global cabal-installを実行します。また、他の人が提案しているように、$PATH変数を確認してください。

1
MacKinley Smith

私の場合、新しいバージョンのcabalは、私が参加していたプロジェクトの.cabal-sandboxにインストールされていました。

例えばバージョンの確認:

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

それで、それ以外でアップグレードする必要がありました。これはOSX上にありました。

0
ericdwhite