2016-08-08 17 views
3

私はLTS 2でコンパイルしたいプロジェクトを持っていますが、this well-known bug in OS X 10.11を回避しようとしています。LTSのカバールバージョンをオーバーライド

ghc-7.8.4と一緒に使用するCabalの新しいバージョンを何とか指定できますか?プロジェクトは実際にはGHC 7.8。*のみでコンパイルされることに注意してください。

編集:

は本当にCabal、ないcabal-installを意味しました。

編集2:

バグがCabalに固有ではないので、実際には、この質問に対する答えは本当に、(= 7.8.4 GHC <を必要とheliumをコンパイルし、)私の具体的な問題を解決していませんが、むしろunixになり、GHC< 7.10はそれに依存する。

+1

他の方法がない場合は、常にスタックを落としてプレーンカバールを使用することができます。それは理想的ではありませんが、スタックがスタックした場合の最後の手段です。 – MarLinn

+1

私は 'stack'がcabalバイナリを呼び出すとは思わない - 少なくともスタック1.1.2ではない。私は[haskell-stackメーリングリスト](https://groups.google.com/forum/#!forum/haskell-stack)、キャバルのサンドボックスを使用してコンパイルします。 – ErikR

+1

スタックのセットアップ--upgrade-cabalをお探しですか? –

答えて

1

Michael Snoyman's commentに記載されているように、これを行うにはstack setup --upgrade-cabalがあります。それはこの質問に対する答えです。私の特定の場合(XY問題)で


、それが機能するためには、私はhereを説明され、that El Capitano related bugのための通常の回避策をしなければなりませんでした。だから私はrootlessを有効にして、アップグレードコマンドを実行し、rootlessを再度有効にしました。

私は恐れています:このバグはunix < 2.7.1.0に固有で、GHC 7.8.4もこれに依存しています。したがって、カバールをアップグレードした後でも、ルートレスを無効にしない限り、lts-2をコンパイルすることはできません。これはかなり面倒です。

実際には、更新済みのunixパッケージを使用してthe GHC folks decided not to file a new minor releaseをちょっと押し下げています。これは、GHC < 7.10を含む何かを構築することができる現実的な/最近のOS Xの設定がないことを意味します。

1

私はこの問題は、Cabalライブラリバージョン(btw、スタックは使用していないか、cabal-installを必要としません)だけでなく、GHCバージョンにも関連していると思います。 Stackのよくある質問にはitem about this errorが含まれていますが、私にとっては役に立たなかったと思いますが、その時点で7.10.2にアップグレードしました。

+0

私は 'helium'コンパイラをコンパイルしようとしていますが、グローバルにインストールされたGHC 7.10をコンパイルしません。 GHC 7.8を並行してインストールすることはあまりにも面倒です(私はむしろ 'ヘリウム'を試したくないでしょう)ので、 'stack'を使用しようとしました。 –

+0

@SebastianGrafを 'stack'と組み合わせると、GHC 7.10をインストールする手間がかかりません。 'stack setup'を実行するだけで、あなたのパスを汚染することなく'〜/ .stack'の中にghcをインストールします。次回の 'stack build'の実行時に、あなたのPATHにない場合でも、そのGHCを使うことが分かります。 –

+0

ええ、私は知っています。しかし、 'ヘリウム'は7.10でビルドされていないので、私はlts-2.22を使うか、手動で7.8をインストールしなければならない。 –

1

はここで任意のディレクトリにGHC-7.8.4をインストールするためのレシピです:

  1. スクラッチディレクトリにuntarしhttps://www.haskell.org/ghc/download_ghc_7_8_4#macosx_x86_64
  2. から「bindist」をダウンロード先ディレクトリを作成します。 、例えば$HOME/my-prefix。スクラッチディレクトリの実行で
  3. $ ./configure --prefix=$HOME/my-prefix 
    $ make install 
    

今GHCは$HOME/my-prefix/binに見いだすことができます。

+0

これは本当に私が尋ねた質問に答えるものではありませんし、私が直面している具体的な問題も解決しません。バグは 'unix <2.7.1.0 '' Cabal'と 'ghc' <7.10の両方が依存しています。唯一の現実的な回避策は、私が理解できるものから、ルートレスモードを無効にすることです。 –

+0

しかし、このバージョンのghcで必要なUNIXのバージョンを再構築することはできます。 – ErikR

関連する問題