установка nokogiri ruby ​​gem с собственным расширением - PullRequest
4 голосов
/ 30 апреля 2010

Я хочу установить рубиновый гем, который пытается создать собственное расширение. Драгоценный камень в этом случае - nokogiri. Если я установлю gem nokogiri, родное расширение динамически связывается с libxml, libxslt libs Я хочу статически ссылаться на этих библиотек. Как мне поступить об этом?

Ответы [ 7 ]

7 голосов
/ 30 апреля 2010

Вот несколько указателей, но это будет нелегко, если nokogiri не содержит флаги сборки для его поддержки:

  1. Если nokogiri поддерживает это, вы можете передать аргументы сборки, чтобы установить gem, как это

    gem install nokogiri -- --with-static-libxml
    
  2. Если встроенной поддержки нет, вы можете попробовать настроить флаги ссылок, используемые для установки гема:

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

    Вероятно, сборка завершится неудачно, поскольку --with-ldflags переопределяет все LDFLAGS, а также '-static' пытается связать все как статические, поэтому вам нужно изучить mkmf.log и обработать его соответствующим образом.

  3. Если вы хотите сделать это вручную, один из способов сделать это - сбой установки gem, вызвав недопустимую опцию, например:

    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
    
6 голосов
/ 31 октября 2011

Попробуйте:

sudo apt-get install libxslt-dev libxml2-dev

Я решаю эту проблему.

3 голосов
/ 06 августа 2013

Для того, чтобы сначала установить гем nokogiri, вам нужно установить libxslt-dev и libxml2-dev

sudo apt-get install libxslt-dev libxml2-dev

А затем установите камень nokogiri

sudo gem install nokogiri

После этого необходимо установить пакет

bundle install

И последнее, но не менее важное: необходимо установить установленный гем в вашем Gemfile

gem 'nokogiri'

Эти шаги сработали для меня безупречно.

2 голосов
/ 28 января 2013

Сообщение об ошибке: ошибка: ошибка при установке nokogiri: ошибка: не удалось собрать Само расширение Gem .

Я исправил эту проблему, выполнив следующие две команды:

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

И все работало нормально .. !! :)

1 голос
/ 02 марта 2012

Если вы используете RVM, запустите требования rvm и установите список библиотек по адресу # Для Ruby / Ruby HEAD.

Это должно работать

0 голосов
/ 01 августа 2013

sudo apt-get install libxslt1-dev libxml2-dev у меня работает. По состоянию на 31 июля 2013 г.

0 голосов
/ 27 ноября 2012

Я исправляю эту проблему: sudo apt-get установить libxml ++ 1.0-dev

На самом деле проблема здесь в том, что этот nokogiri зависит от libxml1, но по умолчанию устанавливается libxml2 ....

...