Dzisiaj miałem problem z instalacją kompozytora za pomocą poniższego polecenia:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Dał mi ten błąd:
curl: (7) Failed to connect to getcomposer.org port 443: Network is unreachable
Poszukałem google i znalazłem to polecenie :
echo ipv4 >> ~/.curlrc
Uruchomiłem to i naprawiłem problem, a kompozytor został zainstalowany poprawnie.
Ale nie wiem, co robi powyższe polecenie, czy ktoś mógłby to wyjaśnić?
command-line
ip
curl
Prashant Kumar
źródło
źródło
Odpowiedzi:
W tym celu dodaje się „ipv4” do pliku „curlrc”. Przykład zaczynający się od pustego pliku:
Zasadniczo zmusza curl do korzystania z ipv4.
Instrukcja ma do powiedzenia na ten temat:
źródło
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
dlaczego mój system po prostu popełnił błąd, zamiast tego próbował uzyskać dostęp do ipv4 sam, jeśli nie znalazł ipv6..curlrc
używa nazw opcji bez wiodącego-
lub--
.Typową konwencją w systemie UNIX jest to, że programy (zwykle) odczytują konfigurację uruchamiania z różnych predefiniowanych plików. To tylko tradycja, a nie nic zdefiniowanego przez POSIX lub inny standard. Typowy program UNIX np.
foobar
Czytałby w następującej kolejności:Może wystąpić awaria,
/usr/share/
ale nie jest to zbyt częste.A więc
curl
tutaj, postępując zgodnie z konwencją i czytając jej początkową konfigurację~/.curlrc
. W tenecho ipv4 >>~/.curlrc
sposób dodałeś ciągipv4
do pliku~/.curlrc
.Ciąg
ipv4
ma specjalne znaczenie dlacurl
-curl
użyje wtedy IPv4 do rozpoznania hosta. Jest to analogiczne do używania argumentu-4
/ipv4
ascurl
z wiersza poleceń, ale zapisanie go~/.curlrc
powoduje, że jest to stałe.Jak już
ipv4
tam ustawiłeś, a teraz wszystko działa dla ciebie, prawdopodobnie masz skonfigurowany IPv6 icurl
wcześniej używałeś IPv6 do (udanego) rozpoznawania hosta, więc nie powrócisz do IPv4. Połączenie z witryną nie powiodło się, ponieważ nie wszystkie witryny mają skonfigurowane serwery WWW do nasłuchiwania na adresach IPv6, więcsocket()
połączenie zakończy się niepowodzeniem, jak widzimy w tym przypadku.źródło
/etc/foobar.conf
najpierw czytano~/.foobarrc
by, aby ten drugi mógł zastąpić ten pierwszy. Tak więc, jeśli/etc/foobar.conf
zawiera wiersz, który mówifrobnitz=0
i~/.foobarrc
mafrobnitz=1
, ta ostatnia wartość ma pierwszeństwo