Проблема с установкой 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.