“echo ipv4 >> ~/.curlrc” 有什么作用?

“echo ipv4 >> ~/.curlrc” 有什么作用?

今天,当我尝试使用以下命令安装 Composer 时遇到了一些问题:

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

我谷歌了一下找到这个命令

echo ipv4 >> ~/.curlrc

我运行了这个并且解决了这个问题并且作曲家安装得很好。

但我不知道上述命令的作用,有人可以解释一下吗?

答案1

它的作用是将“ipv4”添加到文件“curlrc”。示例从一个空文件开始:

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

基本上它强制 curl 使用 ipv4。


手动的对此有这样的看法:

IPv6

当主机查找返回 IPv6 地址时,curl 将连接到具有 IPv6 的服务器,如果连接失败,则返回到 IPv4。--ipv4--ipv6选项可以指定当两个地址都可用时使用哪个地址。 也可以使用语法在 URL 中直接指定 IPv6 地址

答案2

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/ipv4作为curl的参数,但保存后~/.curlrc可使其永久生效。

正如您在那里设置的那样ipv4,现在一切都正常了,大概您已经配置了 IPv6,并且curl之前使用 IPv6 进行(成功的)主机解析,因此无法回退到 IPv4。与网站的连接失败是因为并非所有网站的网络服务器都配置为侦听 IPv6 地址,因此socket()正如我们在本例中看到的那样,调用会失败。

相关内容