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:~$

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.


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


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`

# 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'

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

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ć.


4

Dla mnie wystarczyło po prostu uciec

gem update

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

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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.