Quando eu respondi isso em 2017, eu estava cético quanto à solução do @SeanHammond, porque a rake gem já parecia estar instalada. Isso acaba por ter sido através do pacote rake do Debian e seu sistema de integração de rubis. Instalar a rake gem novamente, por Mr Hammond, funcionou para mim hoje, já que ela anulou a versão do Debian, evitando assim o bug subjacente. Bem, primeiro disse:
martind@balance:~$ sudo gem2.1 install --no-ri --no-rdoc rake
Fetching: rake-12.3.1.gem (100%)
ERROR: While executing gem ... (TypeError)
no implicit conversion of nil into String
martind@balance:~$
Depois de aplicar uma correção de upstream para o relatório de erros, dito:
rake's executable "rake" conflicts with an unknown executable
Overwrite the executable? [yN] n
ERROR: Error installing rake:
"rake" from rake conflicts with installed executable from
martind@balance:~$
... o que me levou a ter sucesso com:
martind@balance:~$ sudo gem2.1 install --no-ri --no-rdoc --format-executable rake
Successfully installed rake-12.3.1
1 gem installed
martind@balance:~$
Isso é suficiente para os rubygems encontrarem o binário atualizado:
martind@balance:~$ ruby2.1 -we 'puts(Gem.bin_path("rake", "rake"))'
/var/lib/gems/2.1.0/gems/rake-12.3.1/exe/rake
martind@balance:~$ ls -l /var/lib/gems/2.1.0/gems/rake-12.3.1/exe/rake
-rwxr-xr-x 1 root root 1182 Apr 17 15:03 /var/lib/gems/2.1.0/gems/rake-12.3.1/exe/rake
martind@balance:~$
@ A solução de ShaunJackman também funcionou para mim. Essa pode muito bem ser a maneira que o Debian deveria consertar, embora eu prefira não deixar arquivos em um diretório na minha máquina que o Debian possa querer mudar depois.
Uma solução menos dolorosa foi definir rake=/usr/bin/rake
no ambiente a partir do qual instalei a gema que queria:
martind@balance:~$ rake=/usr/bin/rake sudo gem2.1 install --no-ri --no-rdoc mediawiki_api
Fetching: unf-0.2.0.beta2.gem (100%)
Building native extensions. This could take a while...
Successfully installed unf-0.2.0.beta2
Fetching: mediawiki_api-0.7.1.gem (100%)
Successfully installed mediawiki_api-0.7.1
2 gems installed
martind@balance:~$
... como agora observado em meu relatório de erros do Debian . Seu sudo pode precisar de - preserve-env para passar por essa configuração.
(Em uma versão anterior desta resposta, eu afirmei que "o equivalente a sudo gem install rainbow
resolveu" mas o problema não era equivalente. Meu problema não era com gem, rainbow e rubocop mas sim com gem2.1, mediawiki-gateway (ou seu sucessor, mediawiki_api) e unf O motivo pelo qual instalar a dependência manualmente funcionou primeiro para o meu caso foi que gem2.1 tem um bug pelo qual ele prefere instalar versões de pré-lançamento como dependências. do código, em vez da prosa, que o bug é este , Quando solicitado a instalar unf-se, em vez disso e, com razão, escolhe uma versão de lançamento, que usa o caminho de código ExtConfBuilder do rubygem em vez do RakeBuilder, o que não ajudaria o pôster original com o problema de arco-íris, já que eles não receberam uma versão de pré-lançamento. pela longa digressão, mas talvez ajude alguém a enfrentar um problema semelhante.)