4

接頭辞が付いたカスタムHaskellツールチェーンをインストールした$HOME/usrので、コンパイラはに$HOME/usr/bin/ghcあり、ドキュメントはにあり$HOME/usr/share/doc/ghc/...ます。ツールチェーンは、ghcインストール、cabalインストール、および必要なすべてのライブラリで構成されています。$PATH私は、これらすべてのプログラムが含まれているように設定しました。私のシステムには、これらのツールの他のインストールはありません。

今、私は他のいくつかのライブラリをインストールしようとしました。しかし、cabalがドキュメントをインストールしようとすると、常に同じエラーが発生しました。

〜$ cabal install --global binary
依存関係を解決しています...
バイナリの設定-0.5.0.2..。
ライブラリバイナリの前処理-0.5.0.2..。
バイナリの構築-0.5.0.2..。
 ... をちょきちょきと切る ...
バイナリの登録-0.5.0.2..。
カバール:/ usr / local / share / doc:許可が拒否されました

ドキュメントがどこにあるべきかをcabalに伝えるにはどうすればよいですか?この情報をシェルで何度も提供したくないので、構成ファイルが最適です。間違ったコマンドでシステムを破壊しないように、ハスケル関連のものをすべてホームツリーに入れたいと思います。

4

3 に答える 3

9

なぜ「--global」でインストールするのですか?デフォルトでは、これによりすべてが/ usr /local/に配置されます。標準のユーザーごとのインストールを行う場合、ドキュメントはホームディレクトリにインストールされ、正常に機能するはずです。

そうは言っても、これはファイルを介して構成可能です。カバール構成ファイルは通常、にあります~/.cabal/config/。これが私の関連セクションです:

install-dirs global
  -- prefix: /usr/local
  -- bindir: $prefix/bin
  -- libdir: $prefix/lib
  -- libsubdir: $pkgid/$compiler
  -- libexecdir: $prefix/libexec
  -- datadir: $prefix/share
  -- datasubdir: $pkgid
  -- docdir: $datadir/doc/$pkgid
  -- htmldir: $docdir/html
  -- haddockdir: $htmldir

好きなように変更を加えることができます。必ず行のコメントを外してください。ユーザーごとのインストールで使用される「install-dirsuser」セクションもあります。

于 2011-04-29T13:43:44.593 に答える
2

ポスターに同意します。許可が必要なときにsudoのプロンプトを表示するcabalinstallpackage --globalの実行方法に関する明確なドキュメントがないのはなぜですか?sudo cabal install packageを実行することは、rootとしてパッケージをビルドするため、お勧めできません。また、rootが所有するファイルへの書き込みをインターネット接続に許可する必要があります(/root/.cabalなどにデータを入力する必要があります)。

これを実行したい理由は次のとおりです。Linuxパッケージマネージャーを介してghcとhaskellプラットフォームをインストールすると(これには十分な理由があります;)、cabal install packageを実行すると、次のパッケージが認識されません。世界的に認められています。

于 2011-05-14T01:51:07.123 に答える
1

さて、誰かが実際に、パーミッションエラーに遭遇することなくグローバルインストール(--globalまたはinstall-dirsglobalのいずれかを使用)を実行する方法の詳細な説明を投稿しました(ほとんど迷惑ではありません)。秘訣は、cabal設定ファイルでroot-cmdsudoを使用することです。http://jdgallag.wordpress.com/2011/05/14/cabal-install-to-global-using-sudo-but-do-not-build-as-root/を参照してください

于 2011-05-23T04:18:46.150 に答える