Me enfrentaba a un problema hoy cuando intentaba instalar Composer con el siguiente comando:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Me estaba dando este error:
curl: (7) Failed to connect to getcomposer.org port 443: Network is unreachable
Busqué en Google y encontré este comando :
echo ipv4 >> ~/.curlrc
Ejecuté esto y solucionó el problema y el compositor se instaló muy bien.
Pero no sé qué hace el comando anterior, ¿alguien podría explicarlo?
command-line
ip
curl
Prashant Kumar
fuente
fuente
Respuestas:
Lo que hace es agregar "ipv4" al archivo "curlrc". Ejemplo que comienza con un archivo vacío:
Básicamente obliga a curl a usar ipv4.
El manual tiene esto que decir al respecto:
fuente
curl will connect to a server with IPv6 when a host lookup returns an IPv6 address and fall back to IPv4 if the connection fails
, ¿por qué mi sistema acaba de dar un error en lugar de intentar acceder a ipv4 por sí mismo si no encontró el ipv6?.curlrc
utiliza nombres de las opciones sin anteponer-
o--
.Una convención típica en UNIX es que los programas (generalmente) leen su configuración de inicio desde varios archivos predefinidos. Esto es simplemente una tradición, no algo definido por POSIX o cualquier otro estándar. Un programa típico de UNIX, por ejemplo
foobar
, leería, en el siguiente orden de precedencia:Puede haber un retroceso,
/usr/share/
pero eso no es muy común.Entonces,
curl
aquí siguiendo la convención y leyendo su configuración inicial desde~/.curlrc
. Y al hacerloecho ipv4 >>~/.curlrc
, ha agregado la cadenaipv4
al archivo~/.curlrc
.La cadena
ipv4
tiene un significado especial paracurl
:curl
utilizará IPv4 para la resolución del host. Esto es análogo al uso del argumento-4
/ipv4
ascurl
desde la línea de comandos, pero guardarlo~/.curlrc
hace que sea permanente.Como ha configurado
ipv4
allí y ahora todo funciona para usted, presumiblemente tiene IPv6 configurado ycurl
anteriormente estaba usando IPv6 para una resolución de host (exitosa), por lo que no hay respaldo para IPv4. La conexión al sitio estaba fallando porque no todos los sitios tienen sus servidores web configurados para escuchar en direcciones IPv6, por lo que lasocket()
llamada fallará como podemos ver en este caso.fuente
/etc/foobar.conf
se leería primero, luego~/.foobarrc
, para que este último pudiera anular al primero. Por lo tanto, si/etc/foobar.conf
contiene una línea que dicefrobnitz=0
, y~/.foobarrc
tienefrobnitz=1
, el último valor prevalece