3

必死に Hubris をインストールしようとしていますが、「cabal install」を実行するたびにインストールに失敗します。

ハービスへのリンク:
https://github.com/mwotton/Hubris/tree/master/Haskell

Cabal ファイルへのリンク:
https://github.com/mwotton/Hubris/blob/master/Haskell/hubris.cabal

失敗する cabal コマンドは次のとおりです。

cabal install --extra-include-dirs=/usr/include/ruby-1.9.1/x86_64-linux --extra-include-dirs=/usr/include/ruby-1.9.1 --extra-lib-dirs=/usr/lib --user  --enable-shared  --with-ghc=/usr/local/bin/ghc

エラーメッセージは次のとおりです。

Resolving dependencies...
Configuring hubris-0.0.4...
cabal: Missing dependencies on foreign libraries:
* Missing C libraries: ruby, ruby, ruby
This problem can usually be solved by installing the system packages that
provide these libraries (you may need the "-dev" versions). If the libraries
are already installed but in a non-standard location then you can use the
flags --extra-include-dirs= and --extra-lib-dirs= to specify where they are.
cabal: Error: some packages failed to install:
hubris-0.0.4 failed during the configure step. The exception was:
ExitFailure 1

レーキエラーは同じです:

+install -c tmp/x86_64-linux/stub/1.9.3/stub.so lib/stub.so
cabal: Missing dependencies on foreign libraries:
* Missing C libraries: ruby, ruby, ruby
This problem can usually be solved by installing the system packages that
provide these libraries (you may need the "-dev" versions). If the libraries
are already installed but in a non-standard location then you can use the
flags --extra-include-dirs= and --extra-lib-dirs= to specify where they are.
cabal: Error: some packages failed to install:
hubris-0.0.4 failed during the configure step. The exception was:
ExitFailure 1
rake aborted!
ERROR: ran cabal update; cd Haskell; cabal install --extra-include-    
dirs=/usr/include/ruby-1.9.1/x86_64-linux --extra-include-dirs=/usr/include/ruby-1.9.1 -
-extra-lib-dirs=/usr/lib --user  --enable-shared  --with-ghc=/usr/local/bin/ghc, got 
Downloading the latest package list from hackage.haskell.org

「ruby-dev」もインストールしました。

apt-get install ruby1.9.1-dev

おそらく、このエラーは、cabal コマンドを実行したときのヘッダー ファイルの欠落とインクルード ディレクトリの誤りに関連しています。

.

システム構成:

 ubuntu 12.04
 GHC version 7.4.1
 ruby version 1.9.3p0
 gem version 1.8.24
4

2 に答える 2

2

を使用して Hubris をインストールする必要がありrakeます。rakeリポジトリのルートで呼び出すだけで機能します。ライブラリをビルドするタスクは、関連する ruby​​ インクルード ディレクトリを見つけます。

コンパイルを最新の Haskell (Haskell Platform 2012.2.0.0 など) で動作させるには、いくつかの変更を加える必要がありました。変更はhttps://github.com/dflemstr/Hubrisで入手できます。

Arch Linuxで動作します:

Arch ... well it's rolling release, so there is no version number
GHC version 7.4.2
ruby version 1.9.3p194 (2012-04-20 revision 35410)
gem version 1.8.23
于 2012-07-15T16:33:37.213 に答える
1

最終的な答え!!! すべてが機能します!!!

正しい答えの功績は、ユーザー「dflemstr」に与えられます。ただし、特にUbuntuユーザーの詳細については、この回答をご覧ください。主に Haskell/Cabal と Ubuntu が原因のインストール エラーとして、Mark Wotton にも功績があります。

_
要件:
(このセットアップでテスト済み。他のバージョンもおそらく動作します)

  1. Ubuntu 12.04 (Arch Linux も動作します)
  2. ルビー 1.9.3p0
  3. GHC 7.4.1
  4. Haskell プラットフォーム 2012.2.0.0

_
Ruby のインストール

sudo apt-get install libruby1.9.1 libruby1.9.1-dbg libtcltk-ruby1.9.1 ruby1.9.1 ruby1.9.1-dev ruby1.9.1-examples ruby1.9.1-full rubybook rubygems  

_
Gem 更新システム (オプション)

sudo env REALLY_GEM_UPDATE_SYSTEM=1 gem update --system

_
Ubuntu の修正
(エラー Missing C libraries: ruby​​, ruby​​, ruby​​)

 cd /usr/lib
 ln -s libruby-1.9.1.so ./libruby.so

_
GHC のインストール
注: GHC と haskell プラットフォーム用の ubuntu パッケージは使用していません。stackoverflow の一部の人々はこれを推奨しています。

http://www.haskell.org/ghc/download_ghc_7_4_1 (ウェブサイトの指示に従ってください)

_
Haskel プラットフォームのインストール
http://lambda.haskell.org/platform/download/2012.2.0.0/haskell-platform-2012.2.0.0.tar.gz
(Web サイトの指示に従ってください)
.

_
haskell パッケージの共有ライブラリ サポートを有効にする

次の行を追加します: "shared: True"

nano ~/.cabal/config

_
共有サポート付きのすべての haskell パッケージを再インストール
します。

  1. C++ から使用可能な動的ライブラリとして Haskell インタープリター (ヒント) を構築する: Interpreter.dyn_hi がありません
  2. enable-shared フラグを使用して Cabal がすべて再構築する

注:上記の手順は私にはうまくいきませんでした!! その場合、強制的にすべてのパッケージを手動 (!) で再インストールします。

cabal install hint-0.3.3.4 --reinstall --force-reinstall

インストールされているすべてのパッケージで繰り返します。たとえば、mtl パッケージなども同様です。再インストールに必要なパッケージでも同じエラーが発生する場合があります。そのパッケージと再帰的な依存関係を再インストールするだけです。

Hubris をすぐにインストールすると、つまりこの手順をスキップすると、次のエラーが表示されます (arch Linux ではなく ubuntu のみ):

Language/Ruby/Hubris/LibraryBuilder.hs:13:8:
Could not find module `Control.Monad.Error.Class'
Perhaps you haven't installed the "dyn" libraries for package `mtl-2.0.1.0'?
Use -v to see a list of the files searched for.
cabal: Error: some packages failed to install:

必要な Haskell パッケージをインストールする

cabal install c2hs

必要な ruby​​ パッケージをインストールする

sudo gem install rake open4 rspec hoe
sudo gem install bundler
sudo gem install rake-compiler
sudo gem install rspec

github から Hurbis を入手する

git clone https://github.com/dflemstr/Hubris.git

(注: これは今のところです。変更がマージされると、Mark Wotton の元の github バージョンがプルされます!)

Rakefile が ubuntu で GHC を見つけるように修正

「/usr/bin/ghc」「/usr/local/bin/ghc」に変更:

cd Hubris
nano Rakefile

ランレーキ

cd Hubris
rake

ここで「'dyn' ライブラリがインストールされていない可能性があります」などのエラーが表示される場合は、一部のパッケージが再インストールされていないことが原因である可能性があります (手順:「共有サポートを含むすべての haskell パッケージを再インストールする」を参照)。

**Hubrisをインストール*

cd Hubris
sudo rake install

レーキをインストールする

パーミッションを修正:

chmod -R 777 /var/hubris

注: 777 は使用しないでください!! その場合は、後で 755 または 766 などに変更します。これはテスト用です。

rake インストールは「sudo」で行われますが、cabal パッケージは別のユーザーでインストールされるため、これが必要です。Hubris は /var/hubris/ にある haskell ファイルをコンパイルします。アクセス許可を変更しない限り、通常のユーザーはアクセスできません。

テスト例の実行 次の行を「test.rb」に追加します。

require 'hubris' # best line ever

class Target
  hubris :inline =>"triple::Int->Int; triple n = 10*n"
end

t = Target.new
puts t.triple(3)

test.rb を実行します。

ruby test.rb

結果が問題ないかどうかを確認します。

コンソール出力の最後の 3 行は次のようになります。

... many lines and possibly GHC error messages ...
|
error ||
30

最後の行が「30」の場合、すべてが機能します!! コマンドを 2 回目に実行すると、インライン Haskell が再コンパイルされないため、出力ははるかに短くなりますが、最後の行はまだ「30」であることに注意してください。

おわりに Hubris を提供してくれた Mark Wotton に感謝します!! ライブラリに新しい機能を追加するための優れた出発点です。それがオープンソースであることは素晴らしいことです!

于 2012-07-16T14:13:32.083 に答える