So aktualisieren Sie Rubygems


206

Ich muss Gems auf 1.8 aktualisieren. Ich habe versucht, die entsprechenden Debian-Pakete zu installieren, aber es scheint, dass es nicht aktualisiert wird

anujm@test:~$ dpkg -l |grep -i rubygem
ii  rubygems                               1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
ii  rubygems-lwes                          0.8.2-1323277262                                LWES rubygems
ii  rubygems1.8                            1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
ii  rubygems1.9                            1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
anujm@test:~$ 


anujm@test:~$ gem
gem     gem1.8  gem1.9  
anujm@test:~$ sudo gem1.8 install serve
ERROR:  Error installing serve:
        multi_json requires RubyGems version >= 1.3.6
anujm@test:~$

2
Zur Verdeutlichung lautet Ihre Frage, wie Rubygems selbst aktualisiert werden kann - kein bestimmtes Juwel, das von Rubygems verwaltet wird.
Michael

Antworten:


471

Installieren Sie rubygems-update

gem install rubygems-update
update_rubygems
gem update --system

Führen Sie diese Befehle als root aus oder verwenden Sie sudo.


1
Ich bekomme diese Ausnahme, wenn ich dem Vorschlag folge gem update - System ist auf Debian deaktiviert. RubyGems können mithilfe der offiziellen Debian-Repositories nach aptitude oder apt-get aktualisiert werden.
Anuj

3
Hier wegen Problemen mit Unicode-Edelsteinen ( github.com/blackwinter/unicode/issues/5 ): Nachdem ich die Lösung von answer ausgeführt hatte, musste ich ausführen gem pristine unicode, um den Edelstein neu zu erstellen und nutzbar zu machen.
wirklich schön

1
Danke, es hat mir geholfen, minitestauf einer NFS-Partition zu installieren, vgl. github.com/rubygems/rubygems/issues/1161
Oncle Tom

12
rubygems-updateist standardmäßig installiert. Es geht also nur darum, einfach zu laufen gem update --system.
dskecse

2
Normalerweise möchten Sie diesen Befehl niemals als ausführen sudo. Dadurch wird das System Ruby aktualisiert. Erwägen Sie die Verwendung von rvmoderrbenv
Hendrik

54

Sie können alle Edelsteine ​​aktualisieren, indem Sie einfach Folgendes ausführen:

sudo gem update


44
Dies ist eine Antwort, die nach einer Frage sucht.
Michael

1
ohne sudowenn du gems als normaler Benutzer installiert hast (die Installation von gems als root ist sowieso nicht sehr schön).
Akostadinov

4
Die Frage ist nicht "Wie aktualisiere ich alle Edelsteine?" sondern "Wie aktualisiere ich RubyGems auf meinem Computer?"
Aceofbassgreg

19

Oder:

gem update `gem outdated | cut -d ' ' -f 1`

#brilliant Danke für diesen einen. Ich habe nur hinzugefügt --force, um zu verhindern, dass die Automatisierung zum Überschreiben
angehalten wird

beantwortet die Frage nicht
agbodike

Jeweils mit Shellcheck-Fehlern behoben : gem update "$(gem outdated | cut -d ' ' -f 1)";.
BernhardWebstudio

11

Sie können gem auf eine bestimmte Version wie diese aktualisieren.

gem update --system 'version'

gem update --system '2.3.0'

1
Ihr Befehl funktioniert nicht bei Distributionen, die auf dem Debian-Gem-Update basieren - System "2.1.0" FEHLER: Während der Ausführung von Gem ... (RuntimeError) Gem-Update - System ist unter Debian deaktiviert, da es den Inhalt des überschreibt rubygems Debian-Paket, und könnte Ihr Debian-System auf subtile Weise brechen. Die von Debian unterstützte Methode zum Aktualisieren von Rubygems ist apt-get unter Verwendung der offiziellen Debian-Repositorys. Wenn Sie wirklich wissen, was Sie tun, können Sie Rubygems dennoch aktualisieren, indem Sie die Umgebungsvariable REALLY_GEM_UPDATE_SYSTEM festlegen. Beachten Sie jedoch, dass dies von Debian nicht unterstützt wird.
Jeff



4

Für mich genügte es einfach zu rennen

gem update

5
Dies dient zum Aktualisieren Ihrer Edelsteine, nicht der Rubygems-Software selbst.
Peter H. Boling

1
Stimmt, aber dies ist das erste Google-Ergebnis für Suchanfragen wie "Update Gem Version". Ich bin froh, dass diese Antwort hier war.
Ncrypticus

-1

Um nur einen Edelstein (und seine Abhängigkeiten) zu aktualisieren, gehen Sie wie folgt vor:

    bundle update gem-name

Aber um nur den Edelstein alleine zu aktualisieren (ohne seine Abhängigkeiten zu aktualisieren), tun Sie dies

    bundle update --source gem-name

1
Dies dient zum Aktualisieren bestimmter Edelsteine, nicht der Rubygems-Software selbst.
Thisismydesign

1
@thisismydesign Ich glaube, ich habe angegeben, dass dies nur ein bestimmtes Juwel aktualisiert?
Ruto Collins

Ja, aber darum geht es nicht.
thisismydesign

1
Aha. Aber ich weiß, dass dies jemandem wie mir helfen wird, der zuerst hier gelandet ist :)
Ruto Collins
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.