Как заставить ruby-svm искать библиотеки в macports '/ opt / local? - PullRequest
4 голосов
/ 03 февраля 2010

Я хочу установить Ruby SVM. У меня уже есть macports с обычными настройками, и я установил libsvm через порт просто отлично. Но когда я иду на компиляцию rubysvm, это barfs. (

Ruby SVM: http://rubysvm.cilibrar.com/download/ (большинство ссылок 404, хотя) libsvm: http://www.csie.ntu.edu.tw/~cjlin/libsvm/

Попробуйте это:

sudo port install libsvm
wget http://debian.cilibrar.com/debian/pool/main/libs/libsvm-ruby/libsvm-ruby_2.8.4.orig.tar.gz
tar -xzf libsvm-ruby_2.8.4.orig.tar.gz
cd libsvm-ruby-2.8.4
./configure

... и вы получите ошибку:

...
checking libsvm/svm.h usability... no
checking libsvm/svm.h presence... no
checking for libsvm/svm.h... no
Error, cannot find LIBSVM svm.h header.

Я пробовал это, но безуспешно:

export DYLD_LIBRARY_PATH=/opt/local/include/:/opt/local/lib/
(... ditto for C_INCLUDE_PATH, LD_LIBRARY_PATH, CPATH, & LIBRARY_PATH)
LDFLAGS="-I/opt/local/include -L/opt/local/lib" CPPFLAGS="-I/opt/local/include -L/opt/local/lib" ./configure

Как мне это исправить?

1 Ответ

1 голос
/ 03 февраля 2010

libsvm-ruby предполагает, что libsvm устанавливает свой заголовок в PREFIX/include/libsvm/svm.h, но пакет macports помещает его в /opt/local/include.

Это клудж, но самое простое решение - вручную создать каталог /opt/local/include/libsvm и переместить / скопировать туда заголовок svm.h. Вам все еще может потребоваться выполнить команду configure с настройками LDFLAGS и CPPFLAGS, поскольку похоже, что установка macports не обновляет pkg-config (которую использует libsvm-ruby для поиска флагов компилятора).

Я бы сообщил об этом как об ошибке пакета сопровождающему macports. Если вы разбираетесь в Portfiles MacPort, вы, возможно, даже можете предоставить патч.

Обновление : На самом деле я этого не пробовал, поэтому могут возникнуть другие проблемы, как только вы обнаружите файл заголовка.

Обновление 2 : мне не удалось выполнить настройку с помощью:

sudo mkdir /opt/local/include/libsvm
sudo cp /opt/local/include/svm /opt/local/include/libsvm/
CPPFLAGS=-I/opt/local/include LIBS=-L/opt/local/lib ./configure

Но libsvm-ruby, похоже, зависит от файл shockck.h, который изначально не существует в OS X. На основании это может быть способ скопировать нужные вам файлы, но вам нужно будет пропатчить libsvm-ruby main.cpp и Makefile, чтобы связать это.

Удачи!

...