Como especificar uma versão ruby ​​mais alta para instalar uma gema?

8

Eu instalo um pacote ruby.

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

diz que precisa da versão ruby ​​maior que 1.9.1.

Meu 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

Eu tenho o ruby ​​1.9.1 e 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

mas 1.9.3 está vinculado a 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

Ele diz que é 1.9.3 no entanto:

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

Eu mudo o link para ruby1.9.3 de qualquer maneira

$ 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

A instalação ainda diz que precisa de 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]

Eu tenho ruby1.9.3 ou apenas ruby1.9.1?

Como posso sudo gem install pdfbeadsusar o ruby ​​1.9.3?


Atualizar:

Agora segui o caminho da instalação do ruby ​​2.1.0 pelo RVM, adicionei o caminho do rvmmeu PATH. Eu instalei com sucesso o ruby2.1.0 pelo

$ rvm install 2.1.0

e tornou padrão

$ 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

Agora, voltei a instalar o pacote pdfbeads, mas sem sudo(porque eu pensei que tinha instalado o ruby ​​2.1.0 na minha conta, não no root, e a instalação do pacote requer a versão mais recente do ruby)

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

Então eu acho que tenho que usar sudo. Mas ainda recebo o erro original,

$ sudo gem install pdfbeads

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

Eu acho que é porque sudo, abaixo , o usuário é root, que ainda tem a versão mais antiga ruby1.8.7 como padrão. Então, eu me pergunto o que posso fazer agora?

Tim
fonte
O rvmcaminho está na raiz PATH?
cuonglm
rvmestá em $PATH. Não sei ao certo o que você quer dizer com "raiz PATH". existem outros PATH?
Tim
Quero dizer PATHquando você é root.
cuonglm
Não é. Funcionará se eu mudar para o root e adicionar o caminho rvm ao PATH da raiz PATH=$PATH:/home/tim/.rvm/bin? Vou ter que voltar para minha conta e instalar pdfbeads.
Tim
Devo instalar o rvm e o ruby ​​sob a casa da raiz?
Tim

Respostas:

6

Você pode considerar o uso de um gerenciador de pacotes ruby ​​como rvm ou rbenv

Você pode instalar rubis diferentes e alternar entre eles facilmente.

Você também pode tentar experimentar a versão 2.0 ou superior

Saída de amostra do 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

Obtenha o rvm em http://rvm.io/

Instale com seu famoso liner 1:

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

Michael Durrant
fonte
Obrigado. Agora estou tentando o que você sugere. Btw, ruby1.9.3 é um link simbólico, com link para 1.9.1. Mas por que se diz que é 1.9.3?
Tim
Por que o ruby1.9.3 eu instalei não está funcionando?
Tim
Ainda assim, o erro "nokogiri requer Ruby versão> = 1.9.2", após a instalação do ruby ​​2.1.0. Eu atualizo minha postagem no final.
Tim
1

Instale o RVM e use o seguinte:

rvm install 1.9.3
rvm use 1.9.3 --default
gem install pdfbeads  # Avoid sudo, will not fix real problems here.
Michael Durrant
fonte