Tim*_*Tim 9 software-installation ruby gem
我安装了一个 ruby 包。
$ sudo gem install pdfbeads
ERROR: Error installing pdfbeads:
nokogiri requires Ruby version >= 1.9.2.
Run Code Online (Sandbox Code Playgroud)
说它需要 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
Run Code Online (Sandbox Code Playgroud)
我有红宝石 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
Run Code Online (Sandbox Code Playgroud)
但是 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
Run Code Online (Sandbox Code Playgroud)
然而,它说自己是 1.9.3:
$ /usr/bin/ruby1.9.3 --version
ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux]
Run Code Online (Sandbox Code Playgroud)
无论如何,我将链接更改为 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
Run Code Online (Sandbox Code Playgroud)
安装仍然说它需要 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]
Run Code Online (Sandbox Code Playgroud)
我有 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
Run Code Online (Sandbox Code Playgroud)
并将其设为默认值
$ 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
Run Code Online (Sandbox Code Playgroud)
现在回到安装包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.
Run Code Online (Sandbox Code Playgroud)
所以我想我必须使用sudo. 但我仍然得到原来的错误,
$ sudo gem install pdfbeads
ERROR: Error installing pdfbeads:
nokogiri requires Ruby version >= 1.9.2.
Run Code Online (Sandbox Code Playgroud)
我想是因为在 下sudo,用户是root,默认还是老版本的ruby1.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
Run Code Online (Sandbox Code Playgroud)
在http://rvm.io/获取 rvm
使用其著名的 1 衬垫安装:
$ \curl -sSL https://get.rvm.io | bash -s stable