“echo ipv4 >> ~ / .curlrc”의 기능은 무엇입니까? 오류가 발생했습니다. curl: (7)

아래 명령으로 작곡가를 설치하려고 할 때 오늘 몇 가지 문제가 발생했습니다.

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

이 오류가 발생했습니다.

curl: (7) Failed to connect to getcomposer.org port 443: Network is unreachable

나는 googled 하고이 명령을 찾았다 .

echo ipv4 >> ~/.curlrc

나는 이것을 실행했고 문제를 해결했고 작곡가가 제대로 설치되었습니다.

그러나 위의 명령이 무엇인지 모르겠습니다. 누가 설명 할 수 있습니까?



답변

“ipv4″를 “curlrc”파일에 추가하면됩니다. 빈 파일로 시작하는 예 :

$ touch 1
$ more 1
$ echo ipv4 >> 1
$ more 1
ipv4

기본적으로 curl은 ipv4를 사용합니다.


매뉴얼은 그것에 대해 말을이있다 :

IPv6

curl은 호스트 조회가 IPv6 주소를 반환 할 때 IPv6을 사용하여 서버에 연결하고 연결이 실패하면 IPv4로 폴백합니다. --ipv4--ipv6옵션은 모두 사용할 수있을 때 사용할 주소를 지정할 수 있습니다. IPv6 주소는 구문을 사용하여 URL에 직접 지정할 수도 있습니다


답변

UNIX의 일반적인 규칙은 프로그램이 대개 사전 정의 된 다양한 파일에서 시작 구성을 읽는 것입니다. 이것은 POSIX 또는 다른 표준에 의해 정의 된 것이 아니라 전통 일뿐입니다. 예를 들어 일반적인 UNIX 프로그램 foobar은 다음과 같은 우선 순위로 읽습니다.

~/.foobarrc  ## User specific configuration parameters
/etc/foobarrc  ## Global parameters, depending on taste
               ## `/etc/foobar/*(.conf)' might be chosen too

폴 백이있을 수 /usr/share/있지만 일반적이지 않습니다.

따라서 curl여기에 규칙을 따르고의 초기 구성을 읽으십시오 ~/.curlrc. 그리고 수행함으로써 echo ipv4 >>~/.curlrc, 당신은 ipv4파일에 문자열 을 추가했습니다 ~/.curlrc.

문자열은 ipv4특별한 의미가있다 curlcurl다음 호스트 해상도의 IPv4를 사용합니다. 이것은 명령 줄에서 -4/ ipv4as curl의 인수 를 사용하는 것과 유사 하지만 저장하여 ~/.curlrc이것을 영구적으로 만듭니다.

ipv4거기에 설정 하고 지금은 모든 것이 작동합니다. 아마도 IPv6을 구성했으며 curl이전에 (성공한) 호스트 확인을 위해 IPv6을 사용했기 때문에 IPv4로 대체되지 않습니다. 모든 사이트에 IPv6 주소를 수신하도록 구성된 웹 서버가있는 것은 아니기 때문에 사이트 연결에 실패했습니다. 따라서이 socket()경우에 볼 수 있듯이 호출이 실패합니다.