Como atualizo Ruby Gems por trás de um proxy (ISA-NTLM)
Pergunta
O firewall que estou executando está executando o servidor Microsoft ISA no modo somente NTLM.Alguém conseguiu instalar/atualizar suas gemas Ruby por meio da gema Ruby SSPI ou outro método?
...ou estou apenas sendo preguiçoso?
Observação:rubysspi-1.2.4 não funciona.
Isso também funciona para "igem", parte do projeto IronRuby
Solução
Não consegui fazer o meu funcionar a partir da opção de linha de comando, mas consegui fazer isso apenas definindo meu HTTP_PROXY
variável de ambiente.(Observe que esse caso parece ser importante).Eu tenho um arquivo em lote que contém uma linha como esta:
SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT%
Eu configurei as quatro variáveis referenciadas antes de chegar a esta linha, obviamente.Por exemplo, se meu nome de usuário for "wolfbyte", minha senha for "secreta" e meu proxy se chamar "pigsy" e operar na porta 8080:
SET HTTP_PROXY=http://wolfbyte:secret@pigsy:8080
Você pode querer ter cuidado ao gerenciar isso, porque ele armazena sua senha em texto simples na sessão da máquina, mas não acho que isso deva ser um grande problema.
Outras dicas
Para o sistema operacional Windows, usei o Fiddler para solucionar o problema.
- Instale/execute o Fiddler em www.fiddler2.com
Execute gema:
$ gem install --http-proxy http://localhost:8888 $gem_name
Isso funcionou totalmente:
gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name
Tenho usado cntlm (http://cntlm.sourceforge.net/) No trabalho.A configuração é muito semelhante ao ntlmaps.
- instalação gem --http-proxy http://localhost:3128 _nome_da_gem_
Funciona muito bem e também permite conectar minha caixa Ubuntu ao proxy ISA.
Confira http://cntlm.wiki.sourceforge.net/ Para maiores informações
Tentei algumas dessas soluções e nenhuma delas funcionou.Finalmente encontrei uma solução que funciona para mim:
gem install -p http://proxy_ip:proxy_port rails
usando o -p
parâmetro para passar o proxy.Estou usando o Gem versão 1.9.1.
Isso resolveu meu problema perfeitamente:
gem install -p http://proxy_ip:proxy_port compass
Pode ser necessário adicionar seu nome de usuário e senha:
gem install -p http://[username]:[password]@proxy_ip:proxy_port compass
Crie um arquivo .gemrc (em /etc/gemrc ou ~/.gemrc ou, por exemplo, com chef gem em /opt/chef/embedded/etc/gemrc) contendo:
http_proxy: http://proxy:3128
Então você pode gem install
como sempre.
Se você estiver tendo problemas para se autenticar por meio de seu proxy, certifique-se de definir as variáveis de ambiente exatamente no formato abaixo:
set HTTP_PROXY=some.proxy.com
set HTTP_PROXY_USER=user
set HTTP_PROXY_PASS=password
O user:password@
a sintaxe parece não funcionar e também existem algumas variáveis de ambiente mal nomeadas flutuando no Stack Overflow e em várias postagens do fórum.
Esteja ciente também de que pode demorar um pouco para que o download de suas joias comece.No começo pensei que não estava funcionando, mas com um pouco de paciência eles começaram a baixar conforme o esperado.
Tentei todas as soluções acima, mas nenhuma delas funcionou.Se você estiver no Linux/macOS, sugiro usar tsocks em um túnel ssh.O que você precisa para fazer esta configuração funcionar é uma máquina onde você possa fazer login via ssh e, além disso, um programa chamado tsocks instalado.
A ideia aqui é criar um túnel dinâmico via SSH (um proxy Socks5).Em seguida, configuramos o tsocks para usar este túnel e iniciar nossas aplicações, neste caso:
tsocks gem install ...
ou para contabilizar o Rails 3.0:
tsocks bundle install
Um guia mais detalhado pode ser encontrado em:
http://blog.byscripts.info/2011/04/bypass-a-proxy-with-ssh-tunnel-and-tsocks-under-ubuntu/
Apesar de ter sido escrito para Ubuntu, o procedimento deve ser aplicável a todas as máquinas baseadas em Unix.Uma alternativa aos tsocks para Windows é o FreeCap (http://www.freecap.ru/eng/).Um cliente SSH viável no Windows é chamado de putty.
Há muitas postagens sobre esse assunto e, para ajudar outras pessoas a economizar horas tentando soluções diferentes, aqui está o resultado final de minhas horas de ajustes.
As três soluções existentes na Internet no momento são:rubyspi apserver cntlm
rubysspi só funciona em uma máquina Windows, AFAIK, pois depende da biblioteca Win32Api.Portanto, se você estiver em uma caixa do Windows tentando executar um proxy, esta é a solução para você.Se você estiver em uma distribuição Linux, você está sem sorte.
apserver parece ser um projeto morto.O link listado nas postagens que vi leva à página 404 no sourceforge.Eu procuro por "apserver" no sourceforge e não retorna nada.
O link do sourceforge para cntlm para o qual vi redirecionamentos http://cntlm.awk.cz/, mas isso expira.Uma pesquisa no sourceforge mostra este link, que funciona: http://sourceforge.net/projects/cntlm/
Depois de baixar e configurar o cntlm consegui instalar uma gem através do proxy, então esta parece ser a melhor solução para distros Linux.
Uma solução alternativa é instalar http://apserver.sourceforge.net em sua máquina local, configure-a e execute gems por meio deste proxy.
- Instalar:Basta baixar o apserver 097 (e não o experimental 098!) e descompactar.
- Configurar:Edite o arquivo server.cfg e coloque os valores do seu proxy MS em
PARENT_PROXY
ePARENT_PROXY_PORT
.Insira os valores para DOMAIN e USER.Deixe SENHA em branco (nada após os dois pontos) – você será avisado ao iniciá-la. - Execute um servidor:
cd aps097; python main.py
- Execute joias:
gem install—http-proxy http://localhost:5865/ library
Estou trabalhando atrás de um proxy e acabei de instalar o SASS baixando diretamente de http://rubygems.org.
Eu então corri sudo gem install [path/to/downloaded/gem/file]
.Não posso dizer que isso funcionará para todas as joias, mas pode ajudar algumas pessoas.
Isso funcionou para mim em uma caixa do Windows:
set HTTP_PROXY=http://server:port
set HTTP_PROXY_USER=username
set HTTP_PROXY_PASS=userparssword
set HTTPS_PROXY=http://server:port
set HTTPS_PROXY_USER=username
set HTTPS_PROXY_PASS=userpassword
Eu tenho um arquivo em lote com essas linhas que uso para definir valores de ambiente quando preciso.
O truque, no meu caso, foi HTTPS_PROXY
conjuntos.Sem eles, sempre recebia um erro de autenticação de proxy 407.
Se você estiver em um sistema *nix, use isto:
export http_proxy=http://${proxy.host}:${port}
export https_proxy=http://${proxy.host}:${port}
e então tente:
gem install ${gem_name}
rubysspi-1.3.1 funcionou para mim no Windows 7, usando as instruções desta página:
Se você quiser usar o proxy SOCKS5, você pode tentar rubygems-socksproxy https://github.com/gussan/rubygems-socksproxy.
Funciona para mim no OSX 10.9.3.
Se estiver atrás de um proxy, você pode navegar para Downloads de rubi, clique em Download, que fará o download da atualização especificada (ou Gem) para o local desejado.
Em seguida, através da linha de comando Ruby, navegue até o local baixado usando: pushd [directory]
por exemplo : pushd D:\Setups
em seguida, execute o seguinte comando: gem install [update name] --local
por exemplo: gem install rubygems-update --local
.
Testado no Windows 7 com atualização Ruby versão 2.4.1.
Para verificar use o seguinte comando: ruby -v
Em vez de editar arquivos em lote (o que pode ser necessário para outras gemas Ruby, por exemplo,Bundler), provavelmente é melhor fazer isso uma vez e corretamente.
No Windows, por trás do meu proxy corporativo, tudo que precisei fazer foi adicionar o HTTP_PROXY
variável de ambiente para o meu sistema.
- Iniciar -> clique com o botão direito em Computador -> Propriedades
- Escolha "Configurações avançadas do sistema"
- Clique em Avançado -> Variáveis de Ambiente
- Crie uma nova variável de sistema chamada "
HTTP_PROXY
"e defina o valor para o seu servidor proxy - Reinicie ou saia e faça login novamente
Dependendo dos seus requisitos de autenticação, o HTTP_PROXY
o valor pode ser tão simples quanto:
http://proxy-server-name
Ou mais complexo como outros apontaram
http://username:password@proxy-server-name:port-number