Como atualizar rubygems


206

Preciso atualizar o gems para 1.8. Tentei instalar os respectivos pacotes debian, mas parece que ele não está sendo atualizado.

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
Apenas para esclarecer, sua pergunta é sobre como atualizar o próprio Rubygems - e não qualquer gema específica gerenciada por rubygems.
Michael

Respostas:


471

Instale rubygems-update

gem install rubygems-update
update_rubygems
gem update --system

execute estes comandos como root ou use sudo.


1
Estou recebendo essa exceção quando sigo a atualização de sugestões de sugestões - o sistema está desabilitado no Debian. O RubyGems pode ser atualizado usando os repositórios oficiais do Debian pelo aptitude ou apt-get.
Anuj

3
Aqui, devido a problemas com a gem unicode ( github.com/blackwinter/unicode/issues/5 ): depois de executar a solução da answer, tive que executar o gem pristine unicodeque reconstruiu a gem e a tornou utilizável.
reallynice

1
Obrigado, me ajudou a instalar minitestem uma partição NFS cf. github.com/rubygems/rubygems/issues/1161
Oncle Tom

12
rubygems-updateestá instalado por padrão. Então, é apenas uma questão de correr gem update --system.
dskecse

2
Geralmente você nunca desejará executar este comando como sudo. Isso atualizará o ruby ​​do sistema. Considere usar rvmourbenv
Hendrik

54

Você pode atualizar todas as gemas apenas executando:

sudo gem update


44
Esta é uma resposta que procura uma pergunta.
Michael

1
sem sudose você instalou o gems como um usuário comum (instalar o gems como root não é muito bom de qualquer maneira).
akostadinov 6/09/16

4
A pergunta não é "Como atualizo todas as gemas?" mas sim "Como atualizo o RubyGems na minha máquina?"
aceofbassgreg

19

Ou:

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

#brilliant Obrigado por este. Eu só adicionado --forcepara manter a automação de parar para confirmação de substituição
SaxDaddy

não responde à pergunta #
agbodike

Respectivamente com erros shellcheck fixo: gem update "$(gem outdated | cut -d ' ' -f 1)";.
BernhardWebstudio

11

Você pode atualizar o gem para qualquer versão específica como esta,

gem update --system 'version'

gem update --system '2.3.0'

1
você comando não funciona na distribuição baseada na atualização gem do debian --system "2.1.0" ERRO: Ao executar a atualização gem ... (RuntimeError) - o sistema está desativado no Debian, porque substituirá o conteúdo do pacote Debian rubygems, e pode quebrar seu sistema Debian de maneiras sutis. A maneira suportada pelo Debian de atualizar rubygems é através do apt-get, usando repositórios oficiais do Debian. Se você realmente sabe o que está fazendo, ainda pode atualizar rubygems configurando a variável de ambiente REALLY_GEM_UPDATE_SYSTEM, mas lembre-se de que isso não é suportado pelo Debian.
jeff


5

Encontrei outras respostas imprecisas / desatualizadas. O melhor é consultar a documentação real .

Versão curta: na maioria dos casos, gem update --system será suficiente.

Você não deve usar cegamente sudo. De fato, se você não é obrigado a fazê-lo, provavelmente não deve usá-lo.


4

Para mim, bastava simplesmente correr

gem update

5
Isto é para atualizar suas gemas, não o próprio software rubygems.
Peter H. Boling 26/03

1
É verdade, mas este é o primeiro resultado do Google para pesquisas como "atualizar versão da gema", por isso estou feliz que esta resposta tenha chegado aqui.
Ncrypticus 17/10/19

-1

Para atualizar apenas uma gema (e suas dependências), faça:

    bundle update gem-name

Mas para atualizar apenas a gema sozinha (sem atualizar suas dependências), faça

    bundle update --source gem-name

1
Isso serve para atualizar gemas específicas, não o próprio software rubygems.
Thisismydesign

1
@thisismydesign Acho que especifiquei que isso atualizará apenas uma jóia específica?
Ruto Collins

Sim, mas não é disso que se trata.
Thisismydesign

1
Entendo. Mas eu sei que isso vai ajudar alguém como eu, que desembarcou aqui em primeiro lugar :)
Ruto Collins
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.