ruby proxy rubygems ironruby

¿Cómo actualizo Ruby Gems detrás de un Proxy(ISA-NTLM)?



rubygems ironruby (19)

Abundan las publicaciones sobre este tema, y ​​para ayudar a otros a ahorrar horas de probar diferentes soluciones, aquí está el resultado final de mis horas de retoques.

Las tres soluciones en Internet en este momento son: rubysspi apserver cntlm

rubysspi solo funciona desde una máquina con Windows, AFAIK, ya que se basa en la biblioteca Win32Api. Entonces, si está en un cuadro de Windows intentando ejecutar un proxy, esta es la solución para usted. Si estás en una distribución de Linux, estás de suerte.

Apserver parece ser un proyecto muerto. El enlace que aparece en las publicaciones que he visto lleva a la página 404 en sourceforge. Busco "apserver" en sourceforge no devuelve nada.

El enlace de sourceforge para cntlm que he visto redirige a http://cntlm.awk.cz/ , pero se agota. Una búsqueda en sourceforge muestra este enlace, que funciona: http://sourceforge.net/projects/cntlm/

Después de descargar y configurar cntlm, he logrado instalar una gema a través del proxy, por lo que esta parece ser la mejor solución para las distribuciones de Linux.

El servidor de seguridad que estoy detrás está ejecutando el servidor Microsoft ISA en modo solo NTLM. ¿Alguien ha logrado que sus gemas de Ruby se instalen / actualicen a través de la gema SSPI de Ruby u otro método?

... o solo estoy siendo perezoso?

Nota: rubysspi-1.2.4 no funciona.

Esto también funciona para "igem", parte del proyecto IronRuby


Cree un archivo .gemrc (ya sea en / etc / gemrc o ~ / .gemrc o por ejemplo con chef gem en / opt / chef / embedded / etc / gemrc) que contenga:

http_proxy: http://proxy:3128

Entonces puedes gem install como siempre.


En lugar de editar archivos por lotes (que es posible que deba hacer para otras gemas de Ruby, por ejemplo, Bundler), probablemente sea mejor hacerlo una vez y hacerlo correctamente.

En Windows, detrás de mi proxy corporativo, todo lo que tenía que hacer era agregar la variable de entorno HTTP_PROXY a mi sistema.

  1. Inicio -> clic derecho en Equipo -> Propiedades
  2. Elija "Configuración avanzada del sistema"
  3. Haga clic en Avanzado -> Variables de entorno
  4. Cree una nueva variable del sistema llamada " HTTP_PROXY " y configure el valor en su servidor proxy
  5. Reinicie o cierre la sesión y vuelva a iniciarla

Dependiendo de sus requisitos de autenticación, el valor HTTP_PROXY puede ser tan simple como:

http://proxy-server-name

O más complejo como otros han señalado.

http://username:password@proxy-server-name:port-number


Esto funcionó para mí en una caja de 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

Tengo un archivo por lotes con estas líneas que utilizo para establecer valores de entorno cuando lo necesito.

El truco, en mi caso, fueron los conjuntos HTTPS_PROXY . Sin ellos, siempre recibí un error de autenticación 407 proxy.


Esto funcionó totalmente:

gem install --http-proxy http://COMPANY.PROXY.ADDRESS $gem_name


Esto solucionó mi problema perfectamente:

gem install -p http://proxy_ip:proxy_port compass

Es posible que deba agregar su nombre de usuario y contraseña:

gem install -p http://[username]:[password]@proxy_ip:proxy_port compass


Estoy trabajando detrás de un proxy y acabo de instalar SASS descargando directamente desde http://rubygems.org .

Luego ejecuté sudo gem install [path/to/downloaded/gem/file] . No puedo decir que esto funcione para todas las gemas, pero puede ayudar a algunas personas.



No pude hacer funcionar el mío desde el interruptor de la línea de comandos, pero sí pude hacerlo simplemente configurando mi variable de entorno HTTP_PROXY . (Tenga en cuenta que el caso parece ser importante). Tengo un archivo por lotes que tiene una línea como esta:

SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT%

Establecí las cuatro variables referenciadas antes de llegar a esta línea, obviamente. Como ejemplo, si mi nombre de usuario es "wolfbyte", mi contraseña es "secreta" y mi proxy se llama "pigsy" y opera en el puerto 8080:

SET HTTP_PROXY=http://wolfbyte:secret@pigsy:8080

Es posible que desee tener cuidado con la forma en que lo administra, ya que almacena su contraseña en texto sin formato en la sesión de la máquina, pero no creo que deba ser un gran problema.


Para el sistema operativo Windows, usé Fiddler para solucionar el problema.

  1. Instalar / Ejecutar Fiddler desde www.fiddler2.com
  2. Ejecutar gema:

    $ gem install --http-proxy http://localhost:8888 $gem_name


Probé algunas de estas soluciones, y ninguna de ellas funcionó. Finalmente encontré una solución que funciona para mí:

gem install -p http://proxy_ip:proxy_port rails

usando el parámetro -p para pasar el proxy. Estoy usando la versión de Gem 1.9.1.


Probé todas las soluciones anteriores, pero ninguna de ellas funcionó. Si estás en linux / macOS, te recomiendo que uses tsocks sobre un túnel ssh. Lo que necesita para que esta configuración funcione es una máquina donde puede iniciar sesión a través de ssh, y además, se ha instalado un programa llamado tsocks.

La idea aquí es crear un túnel dinámico a través de SSH (un proxy socks5). Luego configuramos tsocks para usar este túnel e iniciar nuestras aplicaciones, en este caso:

tsocks gem install ...

o para tener en cuenta los rieles 3.0:

tsocks bundle install

Una guía más detallada se puede encontrar en:

http://blog.byscripts.info/2011/04/bypass-a-proxy-with-ssh-tunnel-and-tsocks-under-ubuntu/

A pesar de estar escrito para Ubuntu, el procedimiento debe ser aplicable para todas las máquinas basadas en Unix. Una alternativa a tsocks para Windows es FreeCap ( http://www.freecap.ru/eng/ ). Un cliente SSH viable en Windows se llama masilla.


Respuesta rápida: agregue la configuración del proxy con el parámetro para la instalación / actualización

gem install --http-proxy http://host:port/ package_name gem update --http-proxy http://host:port/ package_name



Si está detrás de un proxy, puede navegar a las descargas de Ruby , haga clic en Descargar, que descargará la actualización especificada (o Gem) a la ubicación deseada.

A continuación, a través de la línea de comandos de Ruby, navegue a la ubicación descargada utilizando: pushd [directory]

por ejemplo: pushd D:/Setups

luego ejecute el siguiente comando: gem install [update name] --local

Por ejemplo: gem install rubygems-update --local .

Probado en Windows 7 con la actualización de Ruby versión 2.4.1.

Para comprobar el uso siguiente comando: ruby -v


Si estás en un sistema * nix, usa esto:

export http_proxy=http://${proxy.host}:${port} export https_proxy=http://${proxy.host}:${port}

y luego intente:

gem install ${gem_name}


Si tiene problemas para autenticarse a través de su proxy, asegúrese de configurar las variables de entorno exactamente en el siguiente formato:

set HTTP_PROXY=some.proxy.com set HTTP_PROXY_USER=user set HTTP_PROXY_PASS=password

El user:password@ sintaxis no parece funcionar y también hay algunas variables de entorno mal nombradas flotando alrededor de y varias publicaciones del foro.

También ten en cuenta que las gemas pueden tardar un tiempo en comenzar a descargarse. Al principio pensé que no funcionaba, pero con un poco de paciencia comenzaron a descargarse como se esperaba.


Una solución es instalar http://apserver.sourceforge.net en su máquina local, configurarlo y ejecutar gemas a través de este proxy.

  • Instalación: simplemente descargue el apserver 097 (y no el experimental 098!) Y desempaquete.
  • Configurar: edite el archivo server.cfg y coloque los valores para su proxy de MS en PARENT_PROXY y PARENT_PROXY_PORT . Introduzca los valores para DOMINIO y USUARIO. Deje la CONTRASEÑA en blanco (nada después de los dos puntos): se le solicitará que la inicie.
  • Ejecuta apserver: cd aps097; python main.py cd aps097; python main.py
  • Ejecute Gems: gem install—http-proxy http://localhost:5865/ library