Ошибка при установке ruby-1.8.7 на Fedora 15
Используя RVM, я попытался установить ree-1.8.7-2011.03 после установки Fedora 15 и получить следующую ошибку. Использование rvm install ree-1.8.7-2011.03
в Ubuntu 11.04 отлично работает.
Те же ошибки (и решение) с MRI ruby-1.8.7-p334 на Fedora 15.
Любые идеи относительно того, как это исправить?
make[1]: Entering directory `/home/ryguy/.rvm/src/ree-1.8.7-2011.03/source/ext/dl'
gcc -I/opt/local/include -I. -I/opt/local/include -I../.. -I../../. -I../.././ext/dl -DHAVE_DLFCN_H -DHAVE_DLOPEN -DHAVE_DLCLOSE -DHAVE_DLSYM -DHAVE_DLERROR -I. -fPIC -g -O2 -fno-defer-pop -fno-omit-frame-pointer -c ptr.c
gcc -I/opt/local/include -I. -I/opt/local/include -I../.. -I../../. -I../.././ext/dl -DHAVE_DLFCN_H -DHAVE_DLOPEN -DHAVE_DLCLOSE -DHAVE_DLSYM -DHAVE_DLERROR -I. -fPIC -g -O2 -fno-defer-pop -fno-omit-frame-pointer -c handle.c
Generating callback.func
Generating cbtable.func
gcc -I/opt/local/include -I. -I/opt/local/include -I../.. -I../../. -I../.././ext/dl -DHAVE_DLFCN_H -DHAVE_DLOPEN -DHAVE_DLCLOSE -DHAVE_DLSYM -DHAVE_DLERROR -I. -fPIC -g -O2 -fno-defer-pop -fno-omit-frame-pointer -c dl.c
In file included from dl.c:104:0:
callback.func:1:1: warning: data definition has no type or storage class [enabled by default]
callback.func:1:7: error: expected identifier or ‘(’ before ‘long’
In file included from dl.c:104:0:
callback.func:78:33: error: expected ‘)’ before ‘(’ token
callback.func:79:3: warning: data definition has no type or storage class [enabled by default]
callback.func:79:24: error: ‘proc’ undeclared here (not in a function)
callback.func:79:39: error: ‘argc’ undeclared here (not in a function)
callback.func:79:45: error: ‘argv’ undeclared here (not in a function)
callback.func:82:1: error: expected identifier or ‘(’ before ‘}’ token
dl.c:106:1: error: expected ‘;’, ‘,’ or ‘)’ before ‘static’
make[1]: *** [dl.o] Error 1
make[1]: Leaving directory `/home/ryguy/.rvm/src/ree-1.8.7-2011.03/source/ext/dl'
make: *** [all] Error 1
Ответы
Ответ 1
Это также происходит при установке ruby-1.8.7 с rvm в Fedora 15.
Ответ Reinier Balt также работает, в моем случае мне пришлось установить системный рубин с помощью yum.
Вот что я сделал:
cd ~/.rvm/src/ruby-1.8.7-p334/ext/dl
ruby mkcallback.rb > callback.func
ruby mkcbtable.rb > cbtable.func
Ответ 2
Я тоже это видел
Я зашел в каталог src/ext/dl и вручную создал callback.func и cbtable.func, которые являются неполными. Я должен был сделать
rm callback.func
touch callback.func
ruby mkcallback.rb >> callback.func
(повторить для cbtable)
Как-то простой ruby mkcallback.rb > callback.func
не работал
то перезапустите rvm install 1.8.7
, который не будет перезаписывать ваши изменения.
Ответ 3
https://bugs.ruby-lang.org/issues/5108
[[tl; dr: см. патч внизу]]
Ответ 4
Я не знаю, почему это происходит, но похоже, что перенаправление к файлу не полностью перенаправляет вывод. В качестве временного взлома/исправления, который заставляет его работать, вы можете пропустить его через тройник. Он выполняет свою работу, но, безусловно, не является правильным решением.
Patch:
https://gist.github.com/1083163
Этот патч при применении так: rvm install --patch /path/to/Fedora-15-ruby-1.8.7-p352.patch%0 ruby-1.8.7
будет работать. Я также проверю его с помощью ree и обновит.
EDIT. Этот же патч также работает с ree.
rvm install --patch /path/to/Fedora-15-ruby-1.8.76-p352.patch%0 ree
успешно установил рабочую ленту для меня.
Ответ 5
патч от user865548 теперь доступен в RVM (будет 1.9.1
или просто rvm get head
)