Как указать более высокую версию ruby ​​для установки гема?

8

Я устанавливаю пакет ruby.

$ sudo gem install pdfbeads
ERROR:  Error installing pdfbeads:
    nokogiri requires Ruby version >= 1.9.2.

говорит, что для этого нужна версия ruby ​​больше 1.9.1.

Мой рубин 1.8.7.

$ which ruby
/usr/bin/ruby
$ ruby --version
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
$ gem --version
1.8.15

У меня есть рубины 1.9.1 и 1.9.3.

$ whereis ruby1.9.1
ruby1.9: /usr/bin/ruby1.9.1 /usr/bin/ruby1.9.3 /usr/bin/X11/ruby1.9.1 /usr/bin/X11/ruby1.9.3

но 1.9.3 связан с 1.9.1.

$ ls /usr/bin/ruby* -l
lrwxrwxrwx 1 root root   22 Jul 10 02:33 /usr/bin/ruby -> /etc/alternatives/ruby
-rwxr-xr-x 1 root root 5504 Nov 26  2013 /usr/bin/ruby1.8
-rwxr-xr-x 1 root root 5552 Nov 26  2013 /usr/bin/ruby1.9.1
lrwxrwxrwx 1 root root    9 Nov 26  2013 /usr/bin/ruby1.9.3 -> ruby1.9.1

Само по себе это 1.9.3, однако:

$  /usr/bin/ruby1.9.3 --version
ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux]

Я в любом случае изменить ссылку на ruby1.9.3

$ ls -l /usr/bin/ruby*
lrwxrwxrwx 1 root root    9 Aug 20 21:16 /usr/bin/ruby -> ruby1.9.3
-rwxr-xr-x 1 root root 5504 Nov 26  2013 /usr/bin/ruby1.8
-rwxr-xr-x 1 root root 5552 Nov 26  2013 /usr/bin/ruby1.9.1
lrwxrwxrwx 1 root root    9 Nov 26  2013 /usr/bin/ruby1.9.3 -> ruby1.9.1

Инсталляция все еще говорит, что ей нужен ruby> = 1.9.2

$ sudo gem install pdfbeads
ERROR:  Error installing pdfbeads:
    nokogiri requires Ruby version >= 1.9.2.
$ gem --version
1.8.15
$ ruby --version
ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux]

У меня есть ruby1.9.3 или просто ruby1.9.1?

Как я могу sudo gem install pdfbeadsиспользовать ruby ​​1.9.3?


Обновить:

Теперь я пошел по пути установки ruby ​​2.1.0 с помощью RVM, я добавил путь rvmк моему PATH. Затем я успешно установил ruby2.1.0

$ rvm install 2.1.0

и сделал это по умолчанию

$ rvm use 2.1.0

$ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [i686-linux]
$ which ruby
/home/tim/.rvm/rubies/ruby-2.1.0/bin/ruby

Теперь вернемся к установке пакета pdfbeads, но без sudo(потому что я думал, что установил ruby ​​2.1.0 под своей учетной записью, а не под root, и для установки пакета требуется более новая версия ruby)

$ gem install pdfbeads
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /var/lib/gems/1.8 directory.

Поэтому я думаю, что я должен использовать sudo. Но я все еще получаю оригинальную ошибку,

$ sudo gem install pdfbeads

ERROR:  Error installing pdfbeads:
    nokogiri requires Ruby version >= 1.9.2.

Я думаю, что это потому sudo, что ниже , пользователь root, который все еще имеет более старую версию ruby1.8.7 по умолчанию. Так что мне интересно, что я могу сделать сейчас?

Тим
источник
Это rvmпуть в корне PATH?
cuonglm
rvmнаходится в $PATH. Я не уверен, что вы подразумеваете под "рутом PATH". есть другие PATH?
Тим
Я имею в виду, PATHкогда вы root.
cuonglm
Не то. Будет ли это работать, если я переключусь на root и добавлю rvm path к PATH root'а PATH=$PATH:/home/tim/.rvm/bin? Мне придется вернуться к своей учетной записи и установить pdfbeads.
Тим
Должен ли я установить rvm и ruby ​​под дом рута?
Тим

Ответы:

6

Вы можете рассмотреть возможность использования менеджера пакетов ruby, такого как rvm или rbenv

Вы можете устанавливать различные рубины и легко переключаться между ними.

Вы также можете попробовать попробовать 2.0+

Пример вывода из rvm:

21:59:48 durrantm Castle2012 /home/durrantm 
$ rvm list

rvm rubies

   ruby-1.8.7-p374 [ x86_64 ]
   ruby-1.9.3-p125 [ x86_64 ]
   ruby-1.9.3-p194 [ x86_64 ]
   ruby-1.9.3-p448 [ x86_64 ]
   ruby-2.0.0-p195 [ x86_64 ]
=* ruby-2.0.0-p247 [ x86_64 ]
   ruby-2.0.0-p481 [ x86_64 ]
   ruby-2.1.1 [ x86_64 ]
   ruby-2.1.2 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

21:59:50 durrantm Castle2012 /home/durrantm 
$ rvm use 2.0.0
Using /home/durrantm/.rvm/gems/ruby-2.0.0-p481

$ rvm use 2.1.1
Using /home/durrantm/.rvm/gems/ruby-2.1.1

$ rvm use 1.9.3
ruby-1.9.3-p547 is not installed.

$ rvm use 1.9.3-p448
Using /home/durrantm/.rvm/gems/ruby-1.9.3-p448

Получить рвм на http://rvm.io/

Установите со своим знаменитым 1 вкладышем:

$ \curl -sSL https://get.rvm.io | bash -s stable

Майкл Даррант
источник
Спасибо. Я сейчас пытаюсь, что вы предлагаете. Кстати, ruby1.9.3 является символической ссылкой, ссылающейся на 1.9.1. Но почему он говорит, что это 1.9.3?
Тим
Почему не установлен ruby1.9.3, который я установил?
Тим
По-прежнему получайте сообщение об ошибке «nokogiri требует Ruby version> = 1.9.2» после установки ruby ​​2.1.0. Я обновляю свой пост в конце.
Тим
1

Установите RVM и используйте следующее:

rvm install 1.9.3
rvm use 1.9.3 --default
gem install pdfbeads  # Avoid sudo, will not fix real problems here.
Майкл Даррант
источник