Jak zaktualizować rubygemy

206

Muszę zaktualizować klejnoty do 1.8. Próbowałem zainstalować odpowiednie pakiety Debiana, ale wygląda na to, że się nie aktualizuje

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
źródło
2
Aby wyjaśnić, twoje pytanie dotyczy sposobu aktualizacji samego Rubygemsa - a nie żadnego konkretnego klejnotu zarządzanego przez Rubygemy.
Michael

Odpowiedzi:

471

Zainstaluj aktualizację rubygems

gem install rubygems-update
update_rubygems
gem update --system

uruchom te polecenia jako root lub użyj sudo.

Sacx
źródło
1
dostaję ten wyjątek, gdy podążam za sugestią aktualizacji klejnotów - system jest wyłączony w Debianie. RubyGems można aktualizować za pomocą oficjalnych repozytoriów Debiana przez aptitude lub apt-get.
Anuj
3
Tutaj z powodu problemów z klejnotem Unicode ( github.com/blackwinter/unicode/issues/5 ): po uruchomieniu rozwiązania odpowiedzi musiałem uruchomić, gem pristine unicodektóry ponownie zbudował klejnot i sprawił, że był użyteczny.
naprawdęnice
1
Dzięki, pomogło mi to zainstalować minitestna partycji NFS, por. github.com/rubygems/rubygems/issues/1161
Oncle Tom
12
rubygems-updatejest instalowany domyślnie. Chodzi o to, żeby po prostu biegać gem update --system.
dskecse
2
Zwykle nigdy nie będziesz chciał uruchamiać tego polecenia jako sudo. To zaktualizuje system ruby. Rozważ użycie rvmlubrbenv
Hendrik,
54

Możesz zaktualizować wszystkie klejnoty, wykonując:

sudo gem update

Szczery
źródło
44
To jest odpowiedź na pytanie.
Michael
1
bez, sudojeśli zainstalowałeś klejnoty jako zwykły użytkownik (instalowanie klejnotów jako root nie jest zbyt przyjemne).
akostadinov
4
Pytanie nie brzmi „Jak zaktualizować wszystkie klejnoty?” ale raczej „Jak zaktualizować RubyGems na moim komputerze?”
aceofbassgreg,
19

Lub:

gem update `gem outdated | cut -d ' ' -f 1`
jvc26
źródło
# genialne Dzięki za ten. Dodałem tylko, --forceaby powstrzymać automatyzację przed zatrzymaniem w celu potwierdzenia nadpisania
SaxDaddy,
nie odpowiada na pytanie
agbodike
Odpowiednio z błędami shellcheck stałe: gem update "$(gem outdated | cut -d ' ' -f 1)";.
BernhardWebstudio
11

Możesz zaktualizować klejnot do dowolnej konkretnej wersji, takiej jak ta,

gem update --system 'version'

gem update --system '2.3.0'
Aravin
źródło
1
twoje polecenie nie działa w dystrybucji opartej na aktualizacji klejnotów Debiana - system "2.1.0" BŁĄD: Podczas wykonywania aktualizacji klejnotów gem ... (RuntimeError) - system jest wyłączony w Debianie, ponieważ spowoduje to zastąpienie zawartości Rubygems pakiet Debian i może uszkodzić system Debian na subtelne sposoby. Obsługiwanym przez Debian sposobem aktualizacji rubygemów jest apt-get, przy użyciu oficjalnych repozytoriów Debiana. Jeśli naprawdę wiesz, co robisz, nadal możesz aktualizować rubygemy, ustawiając zmienną środowiskową REALLY_GEM_UPDATE_SYSTEM, ale pamiętaj, że jest to całkowicie nieobsługiwane przez Debiana.
Jeff
5

Nie używałbym pakietów Debiana, rzuciłbym okiem na RVM lub Rbenv .

Lucas Clemente
źródło
Pakiet Debian istnieje dla Rbenv
antono
5

Znalazłem inne odpowiedzi, które są niedokładne / nieaktualne. Najlepiej jest odnieść się do faktycznej dokumentacji .

Wersja krótka: w większości przypadków gem update --system wystarczy.

Nie powinieneś używać na ślepo sudo. W rzeczywistości, jeśli nie jest to wymagane, najprawdopodobniej nie należy go używać.

to mój projekt
źródło
4

Dla mnie wystarczyło po prostu uciec

gem update
Klas Mellbourn
źródło
5
Służy to do aktualizacji twoich klejnotów, a nie samego oprogramowania rubygems.
Peter H. Boling
1
To prawda, ale jest to pierwszy wynik Google dla wyszukiwań takich jak „aktualizacja wersji klejnotów”, więc cieszę się, że ta odpowiedź była tutaj.
ncrypticus,
-1

Aby zaktualizować tylko jeden klejnot (i jego zależności):

    bundle update gem-name

Ale aby zaktualizować sam klejnot (bez aktualizacji jego zależności), wykonaj

    bundle update --source gem-name
Ruto Collins
źródło
1
Służy to do aktualizacji określonych klejnotów, a nie samego oprogramowania rubygems.
thisismydesign
1
@thisismydesign Myślę, że określiłem, że spowoduje to aktualizację tylko określonego klejnotu?
Ruto Collins,
Tak, ale nie o to chodzi w tym pytaniu.
thisismydesign
1
Widzę. Ale wiem, że to pomoże komuś takiemu jak ja, który wylądował tutaj pierwszy :)
Ruto Collins,