Проблемы с установкой gsl gem - PullRequest
21 голосов
/ 11 сентября 2011

Я могу успешно установить библиотеку gsl в моем домашнем каталоге, но когда я пытаюсь установить гем gsl, я получаю большой список ошибок, которые я не понимаю.Мне интересно, может ли кто-нибудь дать мне представление о том, почему я могу получить эти ошибки.Я могу сказать, что у меня есть:

успешно установлен gsl;по крайней мере, так это выглядело.Я указал путь к gsl-config

Вот как выглядит журнал ошибок:

  Building native extensions.  This could take a while...
  ERROR:  Error installing gsl:
    ERROR: Failed to build gem native extension.

  /home/ted/ruby-1.9.1/bin/ruby extconf.rb install gsl
  checking gsl version... 1.15
  checking gsl cflags... -I/home/ted/gsl-1.15/include
  checking for main() in -lcblas... no
  checking gsl libs... -L/home/ted/gsl-1.15/lib -lgsl -lgslcblas -lm
  checking for round()... no
  checking for rngextra/rngextra.h... no
  checking for qrngextra/qrngextra.h... no
  checking for ool/ool_version.h... no
  checking for tensor/tensor.h... no
  checking for jacobi.h... no
  checking for gsl/gsl_cqp.h... no
  checking for gsl/gsl_multimin_fsdf.h... no
  checking for gsl_poly_solve_quartic() in -lgsl... no
  checking for gsl_eigen_francis() in -lgsl... no
  checking for ndlinear/gsl_multifit_ndlinear.h... no
  checking for alf/alf.h... no
  checking rb-gsl version...1.14.7
  checking ruby version... 1.9.1
  checking for graph... no
  checking for narray.h... yes
  checking for tamu_anova/tamu_anova.h... no
  checking for main() in -ltamuanova... no
  creating Makefile

  make
  gcc -I. -I/home/ted/ruby-1.9.1/include/ruby-1.9.1/x86_64-linux -I/home/ted/ruby-1.9.1/include/ruby-1.9.1/ruby/backward -I/home/ted/ruby-1.9.1/include/ruby-1.9.1 -I. -DHAVE_NARRAY_H  -I/home/ted/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/narray-0.6.0.1/. -I/home/ted/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/x86_64-linux    -fPIC  -Wall -I../include  -I/home/ted/gsl-1.15/include  -o sf_bessel.o -c sf_bessel.c
  In file included from sf_bessel.c:13:
  ../include/rb_gsl_sf.h:15:24: error: gsl/gsl_sf.h: No such file or directory
  ../include/rb_gsl_sf.h:16:27: error: gsl/gsl_errno.h: No such file or directory
  ../include/rb_gsl_sf.h:17:28: error: gsl/gsl_vector.h: No such file or directory
  In file included from ../include/rb_gsl_sf.h:18,
                   from sf_bessel.c:13:
  /home/ted/gsl-1.15/include/gsl/gsl_math.h:23:25: error: gsl/gsl_sys.h: No such file or directory
  In file included from sf_bessel.c:13:
  ../include/rb_gsl_sf.h:19:29: error: gsl/gsl_complex.h: No such file or directory
  In file included from ../include/rb_gsl.h:20,
                   from ../include/rb_gsl_sf.h:21,
                   from sf_bessel.c:13:
  ../include/rb_gsl_common.h:23:28: error: gsl/gsl_matrix.h: No such file or directory
  ../include/rb_gsl_common.h:24:33: error: gsl/gsl_permutation.h: No such file or directory
  ../include/rb_gsl_common.h:25:32: error: gsl/gsl_ieee_utils.h: No such file or directory
  In file included from ../include/rb_gsl.h:20,
                   from ../include/rb_gsl_sf.h:21,
                   from sf_bessel.c:13:
  ../include/rb_gsl_common.h:322: warning: type defaults to ‘int’ in declaration of ‘gsl_complex’
  ../include/rb_gsl_common.h:322: error: expected ‘;’, ‘,’ or ‘)’ before ‘*’ token
  ../include/rb_gsl_common.h:324: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
  ../include/rb_gsl_common.h:325: error: expected ‘)’ before ‘*’ token
  ../include/rb_gsl_common.h:326: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
  ../include/rb_gsl_common.h:328: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
  ../include/rb_gsl_common.h:329: error: expected ‘)’ before ‘*’ token
  ../include/rb_gsl_common.h:330: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
  ../include/rb_gsl_common.h:340: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ary2complex’
  In file included from ../include/rb_gsl.h:21,
                   from ../include/rb_gsl_sf.h:21,
                   from sf_bessel.c:13:
  ../include/rb_gsl_math.h:24: error: expected ‘)’ before ‘(’ token
  In file included from ../include/rb_gsl.h:22,
                   from ../include/rb_gsl_sf.h:21,
                   from sf_bessel.c:13:
  ../include/rb_gsl_complex.h:19:34: error: gsl/gsl_complex_math.h: No such file or directory

...

  sf_bessel.c: In function ‘rb_gsl_sf_bessel_zero_J1_e’:
  sf_bessel.c:643: error: ‘gsl_sf_bessel_zero_J1_e’ undeclared (first use in this function)
  sf_bessel.c: In function ‘rb_gsl_sf_bessel_zero_Jnu’:
  sf_bessel.c:648: error: ‘gsl_sf_bessel_zero_Jnu’ undeclared (first use in this function)
  sf_bessel.c: In function ‘rb_gsl_sf_bessel_zero_Jnu_e’:
  sf_bessel.c:653: error: ‘gsl_sf_bessel_zero_Jnu_e’ undeclared (first use in this function)
  make: *** [sf_bessel.o] Error 1


  Gem files will remain installed in /home/ted/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/gsl-1.14.7 for inspection.
  Results logged to /home/ted/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/gsl-1.14.7/ext/gem_make.out

Ответы [ 10 ]

20 голосов
/ 20 августа 2012

Установить ruby ​​GSL:

Ubuntu 11.10 включает в себя более новую версию (1.15) libgsl0, которая не совместима с ruby ​​/ gsl:

Необходимо установить старую версию 1.14 для работы ruby ​​/ gsl:

curl -O http://mirror.veriportal.com/gnu/gsl/gsl-1.14.tar.gz
tar xvzf gsl-1.14.tar.gz
cd gsl-1.14
./configure
make
sudo make install
sudo gem install --conservative --no-ri --no-rdoc gsl

Установка работает нормально, тестирование в Ubuntu и Debian Squeeze:

Fetching: narray-0.6.0.1.gem (100%)
Building native extensions.  This could take a while...
Fetching: gsl-1.14.7.gem (100%)
Building native extensions.  This could take a while...
Successfully installed narray-0.6.0.1
Successfully installed gsl-1.14.7
2 gems installed
10 голосов
/ 22 ноября 2011

в какой ОС вы работаете?

сначала вам нужно установить gsl и gsl-devel RPM в вашей ОС от имени root ... например, в Fedora Linux:

sudo yum install -y gsl gsl-devel

затем выполните gem install gsl или bundle install

без пакета gsl-devel, он не найдет правильные файлы заголовка C.

Вы также должны убедиться, что эти заголовочные файлыустановлены в месте, которое включено в LD_LIBRARY_PATH или указано в /etc/ld.so.conf

7 голосов
/ 29 июня 2014

Если у вас есть:

  • GSL 1.16 (проверьте с помощью gsl-config --version) (например, в Ubuntu 14.04 ),
  • Ruby 2.1

Затем попробуйте https://github.com/siefca/rb-gsl - он настроен для такой конфигурации.
Он также должен работать с Ruby 1.9 и Ruby 2.0.

Если вы используете упаковщик для управления драгоценными камнями в проекте, тогда добавьте строку в свои Gemfile:

gem 'gsl', :git => 'git://github.com/siefca/rb-gsl'

Приветствия!

5 голосов
/ 28 июня 2013

под Ubuntu 13.04 это решает проблему:

sudo apt-get install libgsl0-dev

нет необходимости вручную устанавливать старую версию

5 голосов
/ 26 февраля 2013

Для тех, кто все еще пытается установить это с проблемой gsl_matrix_complex_equal.

Если вы запустили brew install gsl, который на момент написания этой статьи установил 1.15, а затем попытался установить привязки ruby, вы потенциально можетестолкнуться с этой проблемой.

Использование этого репо в качестве источника гемов rb-gsl решает проблему: https://github.com/30robots/rb-gsl

Однако, если у вас более новая версия rubygems, это репо делает вызовна Gem#searcher, который является устаревшим и теперь удаленным методом.

Обновления моего репо, которые вызывают использование Gem::Specification API:

https://github.com/whistlerbrk/rb-gsl

Короче говоря:

brew install gsl в OSX

и в вашем Gemfile:

gem 'gsl', :git => 'git://github.com/whistlerbrk/rb-gsl.git'

2 голосов
/ 19 августа 2015

На моей новой установке Mac OS X Yosemite мне нужно было конкретно 1.15.3, и доморощенный не может получить это для меня (нет brew install gsl115)

curl ftp://ftp.gnu.org/gnu/gsl/gsl-1.15.tar.gz > gsl-1.15.tar.gz
tar xvzf gsl-1.15.tar.gz
cd gsl-1.15
./configure
make
sudo make install
gem install gsl
2 голосов
/ 20 января 2014

Внимание, он не работает с Ruby 2.1.0.

Для Ubuntu 12.04 LTS и Ruby 2.0.0:

cd ~
wget ftp://ftp.gnu.org/gnu/gsl/gsl-1.15.tar.gz
tar xvzf gsl-1.15.tar.gz
cd gsl-1.15
./configure
make
sudo make install

Проверьте, правильно ли установлен GSL 1.15

gsl-config --version

Затем установите gem (gsl 1.15.3)

gem install gsl
1 голос
/ 25 апреля 2018

Это также работает на Ubuntu 16.04 LTS и ruby ​​2.2.2
sudo apt-get install libgsl0-dev

1 голос
/ 26 февраля 2015

lsb_release -a Ubuntu 14.04.1 LTS
ruby --version ruby ​​2.1.2p95

Важно: Установите пакет разработки gsl (https://askubuntu.com/a/490475/121418)
sudo apt-get install libgsl0-dev

Добавьте эту строку в Gemfile
gem 'rb-gsl'

Установите gemчерез терминал
bundle install

Проверить
bundle show rb-gsl
/.rvm/gems/ruby-2.1.2/gems/rb-gsl-1.16.0.4

gsl-config --version
1.15

При необходимости используйте require "gsl" в файле ruby ​​

1 голос
/ 13 декабря 2013

Для Ubuntu 13.10 ruby ​​2.0.0 отлично работает. Далее -

curl -O http://ftp.unicamp.br/pub/gnu/gsl/gsl-1.16.tar.gz
tar xvzf gsl-1.16.tar.gz
cd gsl-1.16
./configure
make
sudo make install
sudo gem install --conservative --no-ri --no-rdoc gsl

Внимание: Ами Навон написал -

Для работы ruby ​​/ gsl необходимо установить более старую версию 1.14

Это сейчас не актуально для gsl-1.16 / ruby-2.0.0

...