2010-08-13 166 views
9

我遇到在crunchbang linux上安裝sqlite3-ruby gem的問題。在過去的幾個小時內搜索了幾個人,並且遇到了幾個同樣的問題的人之後,我仍然沒有得到它的工作。安裝sqlite3-ruby時出現問題!

這是我嘗試了「sudo的創業板安裝sqlite3的,紅寶石」

大廈原生擴展後看到。這可能需要一段時間...
錯誤:安裝sqlite3-ruby時出錯:
錯誤:無法構建gem本機擴展。

/usr/bin/ruby1.8 extconf.rb
檢查sqlite3.h ...是
在-lsqlite3檢查sqlite3_libversion_number()...是
檢查rb_proc_arity()...沒有
檢查sqlite3_initialize()...沒有
sqlite3-ruby只支持sqlite3版本3.6.16+,請升級!
* extconf.rb失敗*
無法創建Makefile文件由於某些原因,可能是缺乏
必要的庫和/或標題。檢查mkmf.log文件以獲取更多
的詳細信息。您可能需要配置選項。

接下來我跑過這個頁面; http://groups.google.com/group/sqlite3-ruby/browse_thread/thread/f22d098b561c48af/6e754f7b2fc3cd75?#6e754f7b2fc3cd75

我下載的sqlite-融合,3.7.0.1.tar.gz併發出以下命令:

焦油zxvf的sqlite-合併-3.7.0.1.tar.gz
CD光盤的sqlite-3.7。 0.1
的mkdir $ HOME/SQLite的
的./configure --prefix = $ HOME/SQLite的
使& &使安裝
sudo的創業板安裝sqlite3的,紅寶石 - --with-sqlite3的-DIR = $ HOME /源碼

但是,我仍然得到完全相同的錯誤。我用'sudo apt-get install sqlite3 libsqlite3-dev',但我仍然得到完全相同的錯誤。

有什麼建議嗎?

作爲一個小問題,當我使用'sudo apt-get install sqlite3'時,如何獲取3.5.9而不是我手動下載的3.7.0.1?

回答

3

這是由於extconf.rb在彙編Makefile之前測試函數時拾取舊的3.5.9庫。

一個解決方案削減這短短的是apt-get的刪除sqlite3的,然後重試

sudo gem install sqlite3-ruby -- --with-sqlite3-dir=$HOME/sqlite 

這可以節省您的不兼容性,如果你想使用sqlite3的命令行二進制文件。

另一個解決方案是將你的新的〜/ sqlite/lib/libsqlite3.a複製到你的gem的build目錄中(參見gem env,像gems/sqlite3-ruby-1.3。1/ext/sqlite3)並重試

sudo gem install sqlite3-ruby 

測試應該現在拿起你的新庫並安裝好。

1

我有完全相同的問題。當我將所有文件(不只是libsqlite3.a)從~/sqlite/lib移至gems/sqlite3-ruby-1.3.1/ext/sqlite3時,Jarek的解決方案起作用。

15

安裝sqlite3的,紅寶石的較低版本應該解決您的問題:

sudo gem install sqlite3-ruby --version=1.2.5 
+2

這對我有效。 – Chris 2011-03-13 18:41:23

1

肖恩,讓我嘗試闡述。

Ruby通過編譯小部分示例並驗證編譯是否成功來適應sqlite3庫。這將拾取舊圖書館,它不包括所需的功能。

第一個解決方案是刪除舊庫並將ruby指向您下載新版本的目錄。根據您使用的系統,您必須選擇正確的軟件包管理器:apt-get,dpkg,yum,yast,ipkg,...以刪除過時的軟件包。這可以確保你的構建不會拾取任何舊件。然後你必須確保你使用--with-sqlite3-dir選項將ruby指向新庫所在的正確目錄。

第二種解決方案是一種黑客攻擊。它依靠C編譯器在其他目錄之前拾取當前目錄中的文件。您可以使用cp,mc或任何其他文件管理器將.a庫和.h頭複製到構建目錄。構建應該沒問題,但是你的sqlite3命令仍舊是舊的,可​​能與用新庫創建的數據庫不兼容。

HTH,亞雷克

2

%的sqlite3的,紅寶石(現名爲sqlite3的)README.rdoc,你可以用下面的方法來引導到正確的庫:

If you have sqlite3 installed in a non-standard location, you can specify the location of the include and lib files by doing:

gem install sqlite3 -- --with-sqlite3-include=/opt/local/include \

--with-sqlite3-lib=/opt/local/lib

+0

如果您從源代碼下載並安裝sqlite3到/ usr/local,這是要走的路!謝謝。 – Dmitri 2011-07-10 00:15:08

1

我有一個類似的問題 - 我只是從./Gemfile在項目目錄中註釋掉以下煩人行:

# gem 'sqlite3-ruby', :require => 'sqlite3' 

,做:

bundle install 

腳本/導軌服務器再次正常工作。唷!

好像sqlite3的是重複的 - 怪異

1

我碰到了同樣的問題上OSX 10.5.8

的解決方案是非常簡單的:

1.-從Xcode的蘋果開發下載: xcode314_2809_developerdvd.dmg(需要註冊) 2:下載並安裝的MacPorts:http://distfiles.macports.org/MacPorts/MacPorts-1.9.2-10.5-Leopard.dmg 3.- sudo的港口安裝sqlite3的

,一切工作作爲意。

希望這個結果有用!