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

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

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

Eu não usaria os pacotes debian, daria uma olhada no RVM ou Rbenv .

lucas clemente
fonte
Existe um pacote Debian para Rbenv
antono
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.

thisismydesign
fonte
4

Para mim, bastava simplesmente correr

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