Проблема с установкой linkparser на Ubuntu 10

  • используя рвм
  • используя ruby ​​1.9.2
  • идентичные гемы (и библиотеки поддержки), установленные в OS X
  • ссылка-грамматика установлена ​​(через apt-get)
  • pkg-config работает как положено.

Когда я бегу gem install linkparser Я получаю следующую ошибку:

Сборка собственных расширений. Это может занять некоторое время...
ОШИБКА: Ошибка установки linkparser:
    ОШИБКА: не удалось создать собственное расширение для гема.

/home/locallyclient/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb
проверка на pkg-config... да
проверка для dictionary_create() в -llink-грамматике... *** ошибка extconf.rb ***
Не удалось создать Makefile по какой-то причине, вероятно, из-за отсутствия
необходимые библиотеки и / или заголовки. Проверьте файл mkmf.log для более
подробности. Вам могут потребоваться параметры конфигурации.

(плюс больше, включая параметры строки cmd и трассировку стека).

mkmf.log выглядит так:

"gcc -o conftest -I / ~ /.rvm / rubies / ruby-1.9.2-p0 / include / ruby-1.9.1 / i686-linux -I / ~ /.rvm / rubies / ruby-1.9.2- p0 / include / ruby-1.9.1 / ruby ​​/backward -I
/~/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1 -I.  -D_FILE_OFFSET_BITS=64   -O3 -ggdb -Wextra -Wno-неиспользуемый параметр -Wno-круглые скобки -Wpointer-arith -Wwrite-st
rings -Wno-missing-field-initializer -Wno-long-long  -fPIC-I/usr/local/include   conftest.c  -L. -L/~/.rvm/rubies/ruby-1.9.2-p0/lib -Wl,-R/~/.r
vm/rubies/ruby-1.9.2-p0/lib -L.  -rdynamic -Wl,-export-dynamic-L/usr/local/lib       -Wl,-R -Wl,/~.rvm/rubies/ruby-1.9.2-p0/lib -L/~/.rvm/rubie
s/ruby-1.9.2-p0/lib -lruby-static  -lpthread -lrt -ldl -lcrypt -lm   -lc"
cc1: ошибка: нераспознанная опция командной строки "-fPIC-I/usr/local/include"
проверенная программа была:
/* начало / 
 1: #include "ruby.h" 
 2:  
 3: int main () {return 0;} 
 / конец * /

(Я заменяю домашний путь на '~' для удобства чтения)

В частности: cc1: ошибка: нераспознанная опция командной строки "-fPIC-I/usr/local/include"

Любые идеи относительно того, почему этот paramater будет искажен и где я могу это исправить?

4 ответа

Решение

Вот несколько шагов, которые я попробовал.

Получить рубиновый источник (1.9.2 p180 сейчас)

$ wget ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p180.tar.gz
$ tar zxvf ruby-1.9.2-p180.tar.gz

экспортный путь к ruby, вы можете записать его в ~/.bashrc, чтобы включить и другие собственные расширения.

$ export CPATH="`pwd`/ruby-1.9.2-p180/include":$CPATH

и выглядит так: apt-get версия link-grammer версии 4.0, а linkparser жалуется на слишком старую (> = 4.7.0), поэтому версия get и trunk, как они упоминали на сайте. v4.7.4 сейчас

http://www.abisource.com/projects/link-grammar/

примечание: если ваш рубин находится в /usr/local/bin, менять --prefix=/usr в --prefix=/usr/local

$ svn co http://svn.abisource.com/link-grammar/trunk link-grammar
$ cd link-grammar
$ ./autogen.sh
$ ./configure --prefix=/usr
$ make
$ sudo make install
$
$ sudo gem install linkparser
Building native extensions.  This could take a while...
Successfully installed linkparser-1.1.0
1 gem installed
Installing ri documentation for linkparser-1.1.0...

Тестовые коды для подтверждения правильной работы

ссылка: http://deveiate.org/code/linkparser/

$ irb
> require 'linkparser'
=> true
> dict = LinkParser::Dictionary.new( :screen_width => 100 )
> sent = dict.parse( "People use Ruby for all kinds of nifty things." )
> puts sent.constituent_tree_string
(S (NP People)
   (VP use
       (NP Ruby)
       (PP for
           (NP (NP all kinds)
               (PP of
                   (NP nifty things)))))
   .)
=> nil
> puts sent.diagram

    +---------------------------------Xp--------------------------------+
    |                +-----MVp----+-----Jp-----+     +------Jp-----+    |
    +----Wd---+--Sp--+--Os--+     |     +--Dmc-+--Mp-+    +----A---+    |
    |         |      |      |     |     |      |     |    |        |    |
LEFT-WALL people.p use.v Ruby.f for.p all.a kinds.n of nifty.a things.n . 

=> nil

У меня возникла та же проблема, когда linkparser не смог найти ruby ​​/ intern.h или что-то подобное. Я следовал вышеупомянутым инструкциям, и это все еще не работало. Я сделал мягкую ссылку (ln -s) из /usr/lib/ruby/1.8/x86_64-linux/ruby/* на /usr/lib/ruby/1.8/x86_64-linux/* и когда я пошел к компиляции linkparser это работало как чемпион. Я тогда попробовал это с 1.9.2, и это также работало на другой коробке.

У меня также была проблема с Wordnet, и это исправление сработало и над этим.

Крис

В исходном коде gem есть ошибка, из-за которой CFLAGS объединяется как-fPIC-I/usr/local/include вместо -fPIC -I/usr/local/include

Исправлено (имеется в виду Gem версии 1.1.0):

в ./ext/exconf.rbнайдите следующие строки (должны быть строки 20 и 21):

$LDFLAGS << read_cmd_output( pkgconfig, '--libs-only-L', 'link-grammar' )
$CFLAGS << read_cmd_output( pkgconfig, '--cflags', 'link-grammar' ) 

и измените их на:

$LDFLAGS << ' ' + `#{pkgconfig} --libs-only-L link-grammar`.chomp
$CFLAGS <<  ' ' + `#{pkgconfig} --cflags link-grammar`.chomp

это должно позволить вам установить гем в наборе гемов rvm

Я выпустил версию 1.1.2 гема, которая включает исправление от @alexander.

Другие вопросы по тегам