如何指定更高的Ruby版本来安装gem?


8

我安装了一个Ruby包。

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

说它需要大于1.9.1的ruby版本。

我的红宝石是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?


更新:

现在,我遵循了通过RVM安装ruby 2.1.0的方法,将的路径添加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(因为我认为我是在我的帐户下而不是在root下安装了ruby 2.1.0的,并且该软件包的安装需要较新的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 2014年

rvm在中$PATH。我不确定您所说的“根目录PATH” 是什么意思。还有其他的PATH吗?
蒂姆(Tim)

我的意思是PATH当你是根。
cuonglm 2014年

它不是。如果我切换到root,并通过root将rvm路径添加到root的PATH中,它将起作用PATH=$PATH:/home/tim/.rvm/bin吗?我将不得不切换回我的帐户,并进行安装pdfbeads
蒂姆(Tim)

我应该在根目录下安装rvm和ruby吗?
2014年

Answers:


6

您不妨考虑使用诸如rvm或rbenv之类的ruby软件包管理器

您可以安装不同的红宝石,并在它们之间轻松切换。

您可能还需要考虑尝试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/上获取rvm

使用其著名的1个衬板进行安装:

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


谢谢。我现在正在尝试您的建议。顺便说一句,ruby1.9.3是一个符号链接,链接到1.9.1。卜为什么说自己是1.9.3?
蒂姆(Tim)

为什么我安装的ruby1.9.3无法正常工作?
蒂姆(Tim)

安装ruby 2.1.0后,仍然出现“ nokogiri需要Ruby版本> = 1.9.2”错误。我在末尾更新了我的帖子。
蒂姆(Tim)

1

安装RVM并使用以下命令:

rvm install 1.9.3
rvm use 1.9.3 --default
gem install pdfbeads  # Avoid sudo, will not fix real problems here.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.