Wie kann man eine höhere Ruby-Version für die Installation eines Edelsteins angeben?

8

Ich installiere ein Ruby-Paket.

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

sagt, dass es eine Ruby-Version größer als 1.9.1 benötigt.

Mein Rubin ist 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

Ich habe Ruby 1.9.1 und 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

aber 1.9.3 ist mit 1.9.1 verknüpft.

$ 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

Es sagt sich jedoch 1.9.3:

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

Ich ändere den Link trotzdem auf 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

Die Installation sagt immer noch, dass es Ruby> = 1.9.2 braucht

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

Habe ich ruby1.9.3 oder nur ruby1.9.1?

Wie kann ich sudo gem install pdfbeadsRuby 1.9.3 verwenden?


Aktualisieren:

Ich habe jetzt den Weg der Installation von Ruby 2.1.0 durch RVM verfolgt, ich habe den Pfad von rvmzu meinem hinzugefügt PATH. Ich habe dann erfolgreich ruby2.1.0 von installiert

$ rvm install 2.1.0

und machte es Standard

$ 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

Nun zurück, um das Paket zu installieren pdfbeads, aber ohne sudo(weil ich dachte, ich hätte Ruby 2.1.0 unter meinem Konto installiert, nicht unter root, und für die Installation des Pakets ist die neuere Version Ruby erforderlich).

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

Also denke ich muss ich benutzen sudo. Aber ich bekomme immer noch den ursprünglichen Fehler,

$ sudo gem install pdfbeads

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

Ich denke es liegt daran, dass unter sudo, der Benutzer ist root, der noch die ältere Version ruby1.8.7 als Standard hat. Also frage ich mich, was ich jetzt tun kann?

Tim
quelle
Ist der rvmPfad in Roots PATH?
Cuonglm
rvmist in $PATH. Ich bin mir nicht sicher, was du mit "root's PATH" meinst . gibt es andere PATH?
Tim
Ich meine, PATHwenn du Wurzel bist.
Cuonglm
Es ist nicht. Funktioniert es, wenn ich zu root wechsle und dem PATH von root einen rvm-Pfad hinzufüge PATH=$PATH:/home/tim/.rvm/bin? Ich muss zurück zu meinem Konto wechseln und installieren pdfbeads.
Tim
Soll ich rvm und ruby ​​unter dem Haus der Wurzel installieren?
Tim

Antworten:

6

Möglicherweise möchten Sie einen Ruby-Paketmanager wie rvm oder rbenv verwenden

Sie können verschiedene Rubine installieren und einfach zwischen ihnen wechseln.

Vielleicht möchten Sie auch 2.0+ ausprobieren

Beispielausgabe von 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

Holen Sie sich rvm unter http://rvm.io/

Installieren Sie mit seinem berühmten 1 Liner:

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

Michael Durrant
quelle
Vielen Dank. Ich versuche jetzt, was Sie vorschlagen. Übrigens ist ruby1.9.3 ein Symlink, der auf 1.9.1 verweist. Bu warum heißt es selbst ist 1.9.3?
Tim
Warum funktioniert ruby1.9.3, das ich installiert habe, nicht?
Tim
Nach der Installation von Ruby 2.1.0 wird weiterhin der Fehler "nokogiri erfordert Ruby-Version> = 1.9.2" angezeigt. Ich aktualisiere meinen Beitrag am Ende.
Tim
1

Installieren Sie RVM und verwenden Sie Folgendes:

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