今天,当我尝试使用以下命令安装 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()
正如我们在本例中看到的那样,调用会失败。