Software-Installation

如何為安裝 gem 指定更高的 ruby 版本?

  • May 14, 2015

我安裝了一個紅寶石包。

$ 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]

無論如何,我將連結更改為 ruby​​1.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]

我有 ruby​​1.9.3 還是只有 ruby​​1.9.1?

如何sudo gem install pdfbeads使用 ruby​​ 1.9.3?


更新:

我現在已經按照 RVM 安裝 ruby​​ 2.1.0 的方式,添加rvmPATH. 然後我成功安裝了 ruby​​2.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,它仍然具有舊版本 ruby​​1.8.7 作為預設值。所以我想知道我現在能做什麼?

您可能希望考慮使用 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/獲取 rvm

使用其著名的 1 襯墊安裝:

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

引用自:https://unix.stackexchange.com/questions/151281