J'étais confronté à un problème aujourd'hui lorsque j'essayais d'installer Composer avec la commande ci-dessous:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Cela me donnait cette erreur:
curl: (7) Failed to connect to getcomposer.org port 443: Network is unreachable
J'ai googlé et trouvé cette commande :
echo ipv4 >> ~/.curlrc
J'ai couru cela et cela a résolu le problème et le compositeur s'est bien installé.
Mais je ne sais pas ce que fait la commande ci-dessus, quelqu'un pourrait-il l'expliquer?
command-line
ip
curl
Prashant Kumar
la source
la source
Réponses:
Il s'agit d'ajouter "ipv4" au fichier "curlrc". Exemple commençant avec un fichier vide:
Fondamentalement, il oblige curl à utiliser ipv4.
Le manuel a ceci à dire à ce sujet:
la source
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
pourquoi mon système vient de donner une erreur au lieu d'essayer d'accéder à ipv4 par lui-même s'il n'a pas trouvé l'ipv6..curlrc
utilise des noms d'option sans le début-
ou--
.Une convention typique sous UNIX est que les programmes lisent (généralement) leur configuration de démarrage à partir de divers fichiers prédéfinis. Il s'agit simplement d'une tradition, rien de défini par POSIX ou toute autre norme. Un programme UNIX typique, par exemple,
foobar
se lirait, dans l'ordre de priorité suivant:Il pourrait y avoir un repli
/usr/share/
mais ce n'est pas très courant.Donc,
curl
voici la convention et lisez sa configuration initiale~/.curlrc
. Et ce faisantecho ipv4 >>~/.curlrc
, vous avez ajouté la chaîneipv4
au fichier~/.curlrc
.La chaîne
ipv4
a une signification particulière pourcurl
-curl
utilisera alors IPv4 pour la résolution de l'hôte. Ceci est analogue à l'utilisation de l'argument-4
/ipv4
as àcurl
partir de la ligne de commande, mais l'enregistrement dans le~/.curlrc
rend permanent.Comme vous l'avez configuré
ipv4
et que tout fonctionne maintenant pour vous, vous avez probablement configuré IPv6 etcurl
utilisiez auparavant IPv6 pour une résolution d'hôte (réussie), donc pas de repli sur IPv4. La connexion au site a échoué car tous les sites n'ont pas leurs serveurs Web configurés pour écouter les adresses IPv6, donc l'socket()
appel échouerait comme nous pouvons le voir dans ce cas.la source
/etc/foobar.conf
la lecture se ferait en premier lieu~/.foobarrc
, afin que cette dernière puisse l'emporter sur la première. Ainsi, si/etc/foobar.conf
contient une ligne qui ditfrobnitz=0
et~/.foobarrc
afrobnitz=1
, cette dernière valeur prévaut