2010-01-24 191 views
2

我在我的機器上安裝了JRuby MySQL gem。然而,由於某種原因,我不得不改變,以紅寶石,而不是JRuby和一切似乎是工作的罰款,除了MySQL的寶石對Ruby沒有安裝,現在當我嘗試安裝它,我得到以下錯誤:安裝MySQL gem for Ruby和JRuby gem

Building native extensions. This could take a while... 
ERROR: Error installing mysql: 
    ERROR: Failed to build gem native extension. 

/usr/bin/ruby1.8 extconf.rb --with-mysql-dir=/usr/include/mysql 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lm... yes 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lz... no 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lsocket... no 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lnsl... yes 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lmygcc... no 
checking for mysql_query() in -lmysqlclient... no 
*** extconf.rb failed *** 
Could not create Makefile due to some reason, probably lack of 
necessary libraries and/or headers. Check the mkmf.log file for more 
details. You may need configuration options. 

Provided configuration options: 
    --with-opt-dir 
    --without-opt-dir 
    --with-opt-include 

我搜索了一下,發現我可能需要安裝libmysqlclient12-dev包。

但當我這樣做,我得到了以下錯誤:

Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
Package libmysqlclient12-dev is not available, but is referred to by another package. 
This may mean that the package is missing, has been obsoleted, or 
is only available from another source 
E: Package libmysqlclient12-dev has no installation candidate 

現在我似乎碰壁,而不是與此向前邁進。任何指針或幫助將不勝感激。

Cheers

回答

1

我有同樣的問題。我做了

apt-get install libmysqlclient-dev 

在Ubuntu上,它工作。

1

您正在使用哪個gem命令?紅寶石的一個還是jruby的?

如果您使用* unix,請嘗試which gem

看看您的路徑,以確保C-ruby二進制文件位於JRuby二進制文件的前面(或者,如果您不打算再使用它,請將JRuby從路徑中移除)。

1

我從包管理器猜測你正在運行Linux。

libmysqlclient12-dev是Ubuntu的一個包。如果你正在運行一些其他發行版,那麼它很可能只是被命名爲別的。我相信你需要的Fedora包是mysql-devel。如果你使用distro和libmysqlclient12-dev的名字進行搜索,你可能會發現它的確切名稱。

你的發行版也可能有一些寶石的預建版本。 Fedora(這是我使用的)沒有預先構建的mysql gem,但是另一個分佈可能會發生。在Fedora中,它們根據寶石命名爲rubygem-GEMNAME。例如,sqlite預建的gem是rubygem-sqlite3-ruby