Сборка и запуск ruby ​​без установки его в системные каталоги - PullRequest
0 голосов
/ 05 января 2010

Я клонировал исходное дерево ruby ​​1.8.7. Я могу построить рубин. Но я не могу понять, как запустить его, не устанавливая его в системные каталоги. Как я могу это сделать?

Справочная информация: я хочу использовать "git bisect", чтобы выяснить, какая сборка Ruby привнесла новое поведение в мой код. Мне нужно несколько раз собрать и запустить ruby ​​для тестовой программы, но я не хочу загромождать ruby, установленный пакетом Debian.

Вот что я получу, если попробую запустить рубин, который я построил из источника:

$ ./ruby -e 'puts RUBY_VERSION'
ÀÇ      ÀÇ      : ÀÇ    ÀÇ      : cannot open shared object file: No such file or directory - ÀÇ        ÀÇ       (LoadError)

Я также пытался установить его, но не в системные каталоги, и получил трассировку стека:

$ ./configure --prefix=/home/wayne/tmp/ruby/installed --exec-prefix=/home/wayne/tmp/ruby/installed
$ make
$ make install
$ /home/wayne/tmp/ruby/installed/bin/ruby -e 'puts RUBY_VERSION'
/home/wayne/tmp/ruby/installed/lib/ruby/1.8/openssl/ssl.rb:26: uninitialized constant OpenSSL::SSL::VERIFY_PEER (NameError)
        from /home/wayne/tmp/ruby/installed/lib/ruby/1.8/openssl.rb:23:in `require'
        from /home/wayne/tmp/ruby/installed/lib/ruby/1.8/openssl.rb:23

У меня такое ощущение, что я рядом, но промах не больше мили.

Ответы [ 3 ]

3 голосов
/ 06 января 2010

RVM это отличный инструмент. и должен быть в состоянии позаботиться о тяжелой работе для переключения между различными версиями ruby ​​(или даже наборами драгоценных камней).

Установка очень просто :

$ gem install rvm && rvm-install 
$ echo "if [[ ! -z $HOME/.rvm ]] ; then source $HOME/.rvm ; fi" >> ~/.bash_profile

Затем установить определенную версию и уровень исправления:

rvm  install ruby-1.8.7-p160

Затем для переключения между версиями:

$ rvm 1.8.7-p160 
$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 160) [i686-darwin10.0.0]
$ rvm 1.8.7-p174 
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.0.0]
2 голосов
/ 05 января 2010

Когда мне нужно сделать что-то подобное, я использую команду chroot . Создайте временный каталог, установите ruby ​​в подкаталог sbin и chroot во временную папку. В зависимости от того, что вы тестируете, вам также может понадобиться скопировать некоторые системные библиотеки во временное дерево каталогов (перед вами chroot in).

0 голосов
/ 05 января 2010

Вероятно, проще использовать rvm для проверки вашего приложения на наличие различных рубинов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...