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:~$
Anuj
quelle
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.

Sacx
quelle
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

Frank
quelle
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`
jvc26
quelle
#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'
Aravin
quelle
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
5

Ich würde die Debian-Pakete nicht verwenden, sondern mir RVM oder Rbenv ansehen .

lucas clemente
quelle
Debian-Paket existiert für Rbenv
Antono
5

Ich fand andere Antworten ungenau / veraltet. Am besten beziehen Sie sich auf die eigentliche Dokumentation .

Kurzfassung: In den meisten Fällen gem update --system wird ausreichen.

Sie sollten nicht blind verwenden sudo. In der Tat, wenn Sie nicht dazu verpflichtet sind, sollten Sie es höchstwahrscheinlich nicht verwenden.

Das ist mein Design
quelle
4

Für mich genügte es einfach zu rennen

gem update
Klas Mellbourn
quelle
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
Ruto Collins
quelle
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