Eu estava enfrentando algum problema hoje ao tentar instalar o compositor com o comando abaixo:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Ele estava me dando este erro:
curl: (7) Failed to connect to getcomposer.org port 443: Network is unreachable
Eu pesquisei e encontrei este comando :
echo ipv4 >> ~/.curlrc
Eu corri isso e ele corrigiu o problema e o compositor foi instalado corretamente.
Mas eu não sei o que o comando acima faz, alguém poderia explicar isso?
command-line
ip
curl
Prashant Kumar
fonte
fonte
Respostas:
O que faz é adicionar "ipv4" ao arquivo "curlrc". Exemplo começando com um arquivo vazio:
Basicamente, força o curl a usar o ipv4.
O manual tem a dizer sobre isso:
fonte
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 que meu sistema apenas deu erro ao tentar acessar o ipv4 sozinho, se não encontrou o ipv6..curlrc
usa nomes de opções sem o primeiro-
ou--
.Uma convenção típica no UNIX é que os programas (geralmente) leem sua configuração de inicialização de vários arquivos predefinidos. Isso é apenas uma tradição, não nada definido pelo POSIX ou qualquer outro padrão. Um programa UNIX típico, por exemplo,
foobar
seria lido, na seguinte ordem de precedência:Pode haver um retorno,
/usr/share/
mas isso não é muito comum.Então,
curl
aqui , seguindo a convenção e lendo sua configuração inicial~/.curlrc
. E, ao fazer issoecho ipv4 >>~/.curlrc
, você anexou a stringipv4
ao arquivo~/.curlrc
.A string
ipv4
tem um significado especial paracurl
-curl
usará o IPv4 para a resolução do host. Isto é análogo a usar-4
/ipv4
comocurl
argumento de linha de comando, mas salvando a~/.curlrc
torna este permanentes.Como você definiu
ipv4
lá e agora tudo funciona para você, presumivelmente você tem o IPv6 configurado ecurl
estava usando o IPv6 anteriormente para a resolução (bem-sucedida) do host, portanto, não há substituto para o IPv4. A conexão com o site estava falhando porque nem todos os sites têm seus servidores da Web configurados para escutar nos endereços IPv6; portanto, asocket()
chamada falharia como podemos ver neste caso.fonte
/etc/foobar.conf
seria lido primeiro, então~/.foobarrc
, para que o último pudesse substituir o anterior. Assim, se/etc/foobar.conf
contém uma linha que dizfrobnitz=0
, e~/.foobarrc
temfrobnitz=1
, prevalece o valor últimos