Comment spécifier une version rubis supérieure pour l'installation d'une gemme?

8

J'installe un paquet rubis.

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

dit qu'il a besoin d'une version ruby ​​supérieure à 1.9.1.

Mon rubis est 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

J'ai rubis 1.9.1 et 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

mais 1.9.3 est lié à 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

Il se dit cependant que c'est 1.9.3:

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

Je change quand même le lien vers 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

L'installation dit toujours qu'elle a besoin 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]

Dois-je ruby1.9.3 ou juste ruby1.9.1?

Comment puis-je sudo gem install pdfbeadsutiliser ruby ​​1.9.3?


Mise à jour:

J'ai maintenant suivi la façon d'installer ruby ​​2.1.0 par RVM, j'ai ajouté le chemin de rvmmon PATH. J'ai ensuite installé avec succès ruby2.1.0 par

$ rvm install 2.1.0

et l'a fait par défaut

$ 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

Maintenant, revenons pour installer le package pdfbeads, mais sans sudo(car je pensais avoir installé ruby ​​2.1.0 sous mon compte, pas sous root, et l'installation du package nécessite la nouvelle version ruby)

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

Je pense donc que je dois utiliser sudo. Mais je reçois toujours l'erreur d'origine,

$ sudo gem install pdfbeads

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

Je pense que c'est parce que sous sudo, l'utilisateur est root, qui a toujours l'ancienne version ruby1.8.7 par défaut. Je me demande donc que puis-je faire maintenant?

Tim
la source
Le rvmchemin est-il dans la racine PATH?
cuonglm
rvmest dedans $PATH. Je ne sais pas trop ce que vous entendez par "root PATH". y en a-t-il d'autres PATH?
Tim
Je veux dire PATHquand tu es root.
cuonglm
Ce n'est pas. Cela fonctionnera-t-il si je passe à root et que j'ajoute le chemin rvm au PATH de la racine par PATH=$PATH:/home/tim/.rvm/bin? Je devrai revenir sur mon compte et installer pdfbeads.
Tim
Dois-je installer rvm et ruby ​​sous la maison de la racine?
Tim

Réponses:

6

Vous voudrez peut-être envisager d'utiliser un gestionnaire de paquets ruby ​​comme rvm ou rbenv

Vous pouvez installer différents rubis et basculer facilement entre eux.

Vous pouvez également envisager d'essayer 2.0+

Exemple de sortie 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

Obtenez rvm sur http://rvm.io/

Installez avec son fameux 1 liner:

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

Michael Durrant
la source
Merci. J'essaie maintenant ce que vous proposez. Btw, ruby1.9.3 est un lien symbolique, un lien vers 1.9.1. Mais pourquoi il se dit 1.9.3?
Tim
Pourquoi ruby1.9.3 que j'ai installé ne fonctionne pas?
Tim
Obtenez toujours l'erreur "nokogiri requiert la version Ruby> = 1.9.2", après avoir installé ruby ​​2.1.0. Je mets à jour mon message à sa fin.
Tim
1

Installez RVM et utilisez les éléments suivants:

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