“echo ipv4 >> ~ / .curlrc”의 기능은 무엇입니까?


8

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

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

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

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


@Melebius 추가 링크 :)
Prashant Kumar

답변:


9

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

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

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


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

IPv6

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


나는 그 명령 만 실행했는데 제대로 작동했다고 생각합니다. 단 하나의 질문, 내 작곡가가 처음부터 작동하지 않은 이유와이 명령 후에 왜 작동했는지. 내 생각에, 이전 컬은 실제로 구성되지 않은 ipv6 네트워크를 사용하려고했습니다. 아니면 다른 것입니까?
Prashant Kumar

나는 그것이 그렇다고 가정 할 것입니다 : 예상 ipv6에서 그것을 얻었을 때 연결이 beciause를 거부했습니다. 이 파일 편집은 ipv4를 강제 실행합니다.
Rinzwind

그러나 당신이 말한 것처럼 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왜 내 시스템이 ipv6을 찾지 못하면 ipv4에 직접 액세스하려고 시도하는 대신 오류가 발생했습니다.
Prashant Kumar

1
.curlrc앞에 -또는 없이 옵션 이름을 사용합니다 --.
chepner

5

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

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


1
그러나 실제로 /etc/foobar.conf는 먼저 읽은 후 ~/.foobarrc후자 를 읽을 수 있습니다. 따라서 경우는 /etc/foobar.conf말한다 라인을 포함 frobnitz=0하고 ~/.foobarrc있다 frobnitz=1, 후자의 가치 우선을
몬티을 열심히

@MontyHarder 정확히 내가 우선 순위따라 의미 한 것 입니다 ...
heemayl

예, 읽기 순서가 아닌 우선 순위.
Monty Harder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.