2010-04-29 148 views
4

我想安裝一個嘗試構建本機擴展的紅寶石寶石。這種情況下的寶石是nokogiri。如果我使用gem install nokogiri,則本地擴展會動態鏈接到libxml和libxslt庫。我想靜態鏈接這些庫。我應該怎麼做呢?安裝nokogiri紅寶石本地擴展

+0

他們現在在[nokogiri.org]有一個關於這個問題的教程(http://www.nokogiri.org/tutorials/installing_nokogiri.html) – Sylhare 2017-11-08 15:51:15

回答

5

這裏有一些三分球,但就是除非引入nokogiri包含建立標誌來支持它,這並不容易:

  1. 如果引入nokogiri支持的話,你可以通過建立參數安裝寶石這樣

    gem install nokogiri -- --with-static-libxml 
    
  2. 如果沒有內置支持,您可以嘗試調整用於安裝gem的鏈接標記:

    gem install nokogiri -- --with-ldflags='-static' 
    

    構建失敗很有可能,因爲--with-ldflags覆蓋了所有LDFLAGS,並且'-static'也試圖將所有內容鏈接爲靜態,因此您需要檢查mkmf.log並相應地對其進行處理。

  3. 如果你想要做手工,一個辦法做到這一點是使創業板安裝失敗,通過與像無效選項調用:

    gem install nokogiri -- --with-ldflags 
    

    這將導致安裝失敗,這樣的消息:

    Building native extensions. This could take a while... 
    ERROR: Error installing nokogiri: 
         ERROR: Failed to build gem native extension. 
    
    ruby extconf.rb --with-ldflags 
    

    所以,你應該能夠建立自己的寶石,然後它的工作完成後進行安裝(見gem help install):

    gem spec ../../cache/nokogiri-1.4.1.gem --ruby > \ 
         ../../specifications/nokogiri-1.4.1.gemspec 
    
+0

有沒有什麼辦法可以下載這個包(gem fetch),然後解壓縮並修改Makefile然後安裝它? – user287468 2010-04-30 19:57:40

+0

@ajstack,是的,這應該是可以看到寶石幫助安裝,我已經將它添加到我的答案 – mfazekas 2010-05-05 11:20:49

+0

這是這裏唯一的答案,實際上解決這個問題 - 謝謝! – 2016-11-17 12:17:34

5

嘗試:

sudo apt-get install libxslt-dev libxml2-dev 

我解決這個問題。

1

如果您使用的是RVM,請運行rvm requirements並在#對於Ruby/Ruby HEAD安裝庫列表。

這應該工作

0

我解決這個問題: 命令和apt-get安裝的libxml ++ 1.0-dev的

真正發出這裏是因爲這個引入nokogiri取決於libxml1,但默認安裝是libxml2的....

2

Error Msg : error: error installing nokogiri: error: failed to build gem native extension.

我解決了這個問題,只是通過運行這兩個命令:

$ sudo apt-get install libxml2 libxml2-dev libxslt libxslt-dev? 
$ gem install nokogiri 

它工作得很好。 :)

+0

謝謝!需要安裝一些這些庫,然後用命令運行gem:** sudo ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future gem install nokogiri - --use-系統庫** – vilpe89 2014-11-01 23:56:27

0

sudo apt-get install libxslt1-dev libxml2-dev適合我。截至7月31日,2013年

3

要首先安裝引入nokogiri寶石,你需要安裝的libxslt-dev的和的libxml2-dev的

sudo apt-get install libxslt-dev libxml2-dev 

然後安裝引入nokogiri寶石

sudo gem install nokogiri 

之後,您需要安裝捆綁銷售

bundle install 

最後但並非最不重要安裝的寶石需要在您的Gemfil中定義e

gem 'nokogiri' 

這些步驟對我來說工作完美無瑕。