2009-12-14 11 views
7

Sospecho que el firewall corporativo impide que las gemas se instalen. He definido HTTP_PROXY y soy capaz de ver las gemas a distancia a través del siguiente comando:Instalación de gemas detrás de un firewall corporativo

jruby -S gem list -r 

Pero cuando voy a instalar una joya, me sale un error 404:

jruby -S gem install rails 

¿Hay un buen solución alternativa para resolver este problema que no sea el mantenimiento de un repositorio de gemas interno?

+0

acaba de encontrar más información específica a mi problema y documentarlo aquí en caso de que alguien tenga este problema. El firewall en cuestión bloquea cualquier cosa de Amazon S3 que usa gemcutter para almacenar gemas. – digitalsanctum

+0

Esa es francamente una política de firewall insana. ¿Ni siquiera puedes navegar esos archivos usando IE o Firefox? – MattMcKnight

+0

Estoy de acuerdo. Es una política de firewall insana. Bienvenido a mi mundo :) – digitalsanctum

Respuesta

0

He vuelto a probar esto porque la gente de gemcutter.org hizo el modo de Cloudfront de Amazon y puedo descargar gemas nuevamente a través del firewall de mi empleador.

2

No soy un experto con Ruby. No obstante, que podría dar los siguientes consejos "genéricas" (útil para muchas situaciones con instaladores):

  1. Compruebe qué protocolo es la instalación corriendo. Algunos instaladores descargan el paquete desde el espejo en lugar del sitio principal, y algunos espejos pueden estar usando FTP u otra cosa en lugar de HTTP. Por lo tanto, es posible que deba actualizar su configuración en consecuencia y verificar con su administrador que el proxy corporativo es capaz de recuperar datos de sitios FTP.

  2. Compruebe qué usuario está ejecutando el instalador (algunos de los instaladores tienen que escalar los privilegios a "raíz". Y, por lo tanto, heredar un entorno diferente con otro HTTP_PROXY definido).

  3. Compruebe qué programa de instalador está utilizando para descargar los paquetes (muchos gestores de paquetes de distribución confían en curl/libcurl que almacena sus parámetros de proxy en un archivo rc). La misma advertencia que 2 con respecto a los usuarios cuyo homedir debe contener el archivo rc.

  4. Transmisión transparente: es posible transferir solicitudes sobre la marcha HTTP/FTP inicialmente dirigidas a la web a un proxy. Ya sea el proxy corporativo (si puede funcionar con una instalación de este tipo) o algún mini proxy local que luego se conectará en cascada con el servidor corporativo.

  5. Configure una VPN rápida (ya sea Tunnel other PPP) sobre SSH (consulte la página man de SSH) entre su máquina y una máquina especial dentro de la corporación que permite ver la web, luego actualice sus tablas de enrutamiento para enrutar el tráfico la VPN.

  6. También puede usar corkscrew para conectarse a través de SSH (y así poder instalar una VPN sobre SSH como 5) con una máquina afuera, al otro lado del firewall corporativo, como la suya en casa. (esto utiliza el modo "CONEXIÓN" HTTPS del proxy para acceder a un SSH externo). Solo asegúrate de que los administradores estén, o que al menos una persona a cargo esté, informados y no te preocupes.

  7. Medida desesperada: crea un túnel entre dos máquinas que ejecutan cada http tunnel, sobre un proxy que solo permite solicitudes HTTP. Luego use el túnel para establecer la VPN SSH.

Estas soluciones no son específicas de Ruby, pero pueden ayudarle a través de cualquier solución desesperada detrás de un firewall demasiado restrictivo.

1 a 4 debería funcionar en la mayoría de las situaciones. Tendrás que recurrir a 5 a 7 si te enfrentas a algunos firewalls extraños y/o paranoicos. 7 es bastante extremo, pero siempre funciona, aunque a veces con un rendimiento catastrófico.

+0

Proxying y/o un túnel realmente no es una opción aquí. El firewall corporativo está ahí por una razón y no quiero arriesgar mi trabajo eludiéndolo. – digitalsanctum

+0

Aún puede proxy * TO * el proxy corporativo en una implementación de 2 etapas, en caso de que el proxy corporativo resulte ser incompatible con el software. (El proxy intermedio se usa para retransmitir la solicitud entre las dos piezas de software incompatibles). Además, un túnel basado en SSH (ya sea SSH-VPN o SSH-PPP) puede hacerse realmente seguro mediante el uso de un esquema de autenticación correcto y una máquina remota. Además, el túnel solo está activo mientras se está ejecutando SSH. Por lo tanto, podría activarse y desactivarse como parte de un script de actualización. "arriesgando su trabajo": ¿no mencioné mantener informados a los administradores o a la persona en chage? – DrYak

2

Lo primero es simple: ¿está en la misma sesión de shell cuando intentó tanto la lista como la instalación? ¿Quizás olvidaste configurar el env por segunda vez?

Pruebe la configuración http_proxy en lugar de HTTP_PROXY.

Asegúrese de que la configuración del proxy es una URL válida (véase más adelante)

¿Tiene múltiples opciones de proxy? Abra IE y escriba wpad en la barra de direcciones. Es posible que vea otras posibilidades.

¿Está su proxy autenticado? Si es así, ¿tienes tus credenciales en la URL? El mío es así (en Windows):

set http_proxy=http://myuserid:[email protected]:3128 

¿Tiene su contraseña algún signo de puntuación? Pruébelo solo con números y letras, ya que : y @ (y posiblemente otros) son importantes en la cadena URL misma.

+0

He intentado todas estas sugerencias y el proxy no está autenticado. – digitalsanctum

+0

¿Quiso decir "% 3A" en "myuserid% 3Amypassword", o debería ser un punto ":"? –

+0

Sí, es dos puntos, Stack Overflow lo está codificando por algún motivo. – Rob

0

Otra pregunta estúpida, pero ¿cuál es el software proxy corporativo? Algunos softwares basados ​​en Windows tienden a usar estándares de autenticación extraños (hashes NTLM, etc.) que no son compatibles con todos los clientes (wget no lo admite, por ejemplo), pero son compatibles con muchos navegadores.

Por lo tanto, incluso si intentó escribir el nombre de usuario y la contraseña en la URL proxy, no funcionará cuando intente descargar e instalar un paquete, aunque funciona bastante bien cuando intenta mostrar una página en FireFox. He tenido problemas similares con alguna red corporativa y el administrador de paquetes de mi distribución.

En estas situaciones, puede usar algo como ntlmaps. Lo usa como un proxy local que luego colocará en cascada las solicitudes al proxy corporativo. Lo bueno es que ntlmaps podrá autenticar la extraña contraseña de NTLM con el proxy corporativo, y todas sus aplicaciones podrán conectarse a ntlmaps, incluso aquellos que no son compatibles con NTLM.

1

Puede utilizar esta herramienta: http://ntlmaps.sourceforge.net/

gemas no son compatibles con la autenticación de proxy, así que ir a través de un proxy secundaria (como, por ejemplo, su máquina) que realiza la autenticación para usted y le permite gemas creo que haya ninguna autenticación que ocurra debería hacer su vida más fácil.

4
  1. Busque en la configuración del proxy de Internet Explorer para encontrar el nombre de su servidor proxy.
  2. Use el nombre de su servidor proxy en la opción -p del comando gem.

    carriles de actualización joya -p http://mylocalproxy.mycompany.com

Si esto no funciona, siempre se puede fijar su propio servidor proxy en el Internet en alguna parte.

9

de las gemas de rubí, colocando esto en mi gem.bat esto funciona para mí

@"%~dp0ruby.exe" "%~dpn0" %* --http-proxy http://domainname.ccc.com:8080 

para las gemas JRuby esto funciona

@"%~dp0jruby.exe" "%~dpn0" %* -p http://domainname.ccc.com:8080 

también la variable de entorno funciona como

set http-proxy=http://domainname.ccc.com:8080 

o si su servidor proxy necesita autenticación

set http-proxy=http://user:[email protected]:port) 

EDITAR: para las personas que tienen un firewall muy restrictivo o sin acceso a Internet (por ejemplo, en un servidor) puede hacer lo siguiente: instalar las gemas en una PC que tiene acceso gratuito a Internet, luego verifique la carpeta C: \ Ruby193 \ lib \ ruby ​​\ gems \ 1.9.1 \ cache y copia todas las gemas con una fecha modificada por última vez en el momento en que hiciste la instalación. En el PC destino los copia en la misma carpeta o si limpiar después en la carpeta bin iniciar la instalación allí con

c:\ruby193\bin\gem.bat install --local gemname-x.x.x.gem 

gemname-xxxgem ser el nombre de archivo de la gema de la gema de base que desea instalar . La gema con todas sus dependencias debería instalarse. Esto es para Windows, pero otros sistemas operativos pueden usar la misma técnica, solo adapta algunas cosas. Éxito

+0

¿dónde lo tipea o lo agrega? –

+0

en su archivo gem.bat, vea también mi actualización – peter

+0

¿Cuál es la ubicación de gem.bat –

0

1.GO a la unidad en la que instaló Ruby. 2. encontrará una carpeta llamada "ruby200-x64" o algo similar según la versión que instaló. 3.En la carpeta abierta ... bin/ 4. encuentra gem.bat, ábrelo con cualquier editor de texto encontrarás un montón de configuraciones. 5. after @ "% ~ dp0ruby.exe" "% ~ dpn0"% * coloca la dirección y el puerto del servidor proxy. **

@ "% ~ dp0ruby.exe" "% ~ dpn0" % * --http-proxy http://domainname.ccc.com:8080

**

Cuestiones relacionadas