3

我拼命地尝试安装 Hubris,但每当我运行“cabal install”时安装都会失败。

Hurbis 链接:
https ://github.com/mwotton/Hubris/tree/master/Haskell

链接到阴谋集团文件:
https ://github.com/mwotton/Hubris/blob/master/Haskell/hubris.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

您应该使用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 用户。功劳也归功于 Mark Wotton,因为安装错误主要是由于 Haskell/Cabal 和 Ubuntu 造成的。

_
要求:(
使用此设置进行测试,其他版本可能也可以)

  1. Ubuntu 12.04(Arch Linux 也可以)
  2. 红宝石 1.9.3p0
  3. GHC 7.4.1
  4. Haskell 平台 2012.2.0.0

_
红宝石安装

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  

_
宝石更新系统(可选)

sudo env REALLY_GEM_UPDATE_SYSTEM=1 gem update --system

_
修复 Ubuntu
(错误缺少 C 库: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
(再次按照网站上的说明进行操作)

_
启用对 haskell 包的共享库支持

添加以下行:“共享:真”

nano ~/.cabal/config

_
重新安装每个具有共享支持的 haskell 包
按照以下说明进行操作:

  1. 将 haskell 解释器(提示)构建为动态库,可在 C++ 中使用:Missing Interpreter.dyn_hi
  2. Cabal 使用 enable-shared 标志重建所有内容

注意:以上说明对我不起作用!!在这种情况下,手动手动重新安装每个包(!)用力:

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

对每个已安装的软件包重复!例如,还有 mtl 包等。重新安装所需的包可能会出现相同的错误。只需重新安装该软件包和任何递归依赖项。

如果你立即安装 Hubris,即跳过这​​一步,你会得到以下错误(仅在 ubuntu 中,而不是在 arch linux 中):

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 软件包”)。

**安装傲慢*

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

检查结果是否正常:

控制台输出的最后三行应该是:

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

如果最后一行是“30”,那么一切正常!!请注意,当您第二次运行该命令时,内联 haskell 不会重新编译,因此输出要短得多,但最后一行仍然是“30”。

最后的话 感谢马克沃顿提供傲慢!这是向库添加新功能的绝佳起点。太好了,它是开源的!

于 2012-07-16T14:13:32.083 回答