¿Cómo especificar una versión rubí más alta para instalar una gema?

8

Instalo un paquete ruby.

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

dice que necesita una versión ruby ​​superior a 1.9.1.

Mi rubí es 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

Tengo ruby ​​1.9.1 y 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

pero 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

Sin embargo, dice que es 1.9.3:

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

Cambio el enlace a ruby1.9.3 de todos modos

$ 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

La instalación aún dice que necesita 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]

¿Tengo ruby1.9.3 o solo ruby1.9.1?

¿Cómo puedo hacer sudo gem install pdfbeadsuso de ruby ​​1.9.3?


Actualizar:

Ahora he seguido la forma de instalar ruby ​​2.1.0 por RVM, he agregado la ruta de rvmmi PATH. Luego instalé con éxito ruby2.1.0 por

$ rvm install 2.1.0

y lo hizo por defecto

$ 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

Ahora vuelvo a instalar el paquete pdfbeads, pero sin él sudo(porque pensé que había instalado ruby ​​2.1.0 en mi cuenta, no en root, y la instalación del paquete requiere la versión más nueva de ruby)

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

Entonces creo que tengo que usar sudo. Pero sigo teniendo el error original,

$ sudo gem install pdfbeads

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

Creo que es porque debajo sudo, el usuario es root, que todavía tiene la versión anterior ruby1.8.7 como predeterminada. ¿Entonces me pregunto qué puedo hacer ahora?

Tim
fuente
¿El rvmcamino está en la raíz PATH?
Cuonglm
rvmestá en $PATH. No estoy seguro de qué quieres decir con "raíz PATH". ¿hay otros PATH?
Tim
Quiero decir PATHcuando eres root.
Cuonglm
No lo es. ¿Funcionará si cambio a root y agrego la ruta rvm al RUTA de la raíz PATH=$PATH:/home/tim/.rvm/bin? Tendré que volver a mi cuenta e instalar pdfbeads.
Tim
¿Debo instalar rvm y ruby ​​debajo de la raíz?
Tim

Respuestas:

6

Es posible que desee considerar el uso de un administrador de paquetes ruby ​​como rvm o rbenv

Puede instalar diferentes rubíes y cambiar entre ellos fácilmente.

Es posible que también desee considerar probar 2.0+

Salida de muestra de 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

Obtenga rvm en http://rvm.io/

Instalar con su famoso 1 liner:

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

Michael Durrant
fuente
Gracias. Ahora estoy intentando lo que sugieres. Por cierto, ruby1.9.3 es un enlace simbólico, que se vincula a 1.9.1. ¿Pero por qué dice que es 1.9.3?
Tim
¿Por qué ruby1.9.3 que instalé no funciona?
Tim
Todavía aparece el error "nokogiri requiere la versión Ruby> = 1.9.2", después de instalar ruby ​​2.1.0. Actualizo mi publicación al final.
Tim
1

Instale RVM y use lo siguiente:

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