Я сталкивался с некоторой проблемой сегодня при попытке установить компоновщик с ниже команды:
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
Я выполнил это, и это решило проблему и компоновщик, установленный очень хорошо.
Но я не знаю то, что делает вышеупомянутая команда, кто-либо мог объяснить это?
То, что, делает, добавляют "ipv4" к файлу "curlrc". Пример, запускающийся с пустого файла:
$ touch 1
$ more 1
$ echo ipv4 >> 1
$ more 1
ipv4
В основном это вынуждает завихрение использовать ipv4.
<час>руководство говорит следующее об этом:
завихрение IPv6
соединится с сервером с 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
имеет особое значение к curl
-- curl
будет использовать IPv4 для разрешения хоста затем. Это походит на использование -4
/ipv4
как curl
аргумент от командной строки, но сохраняющий к ~/.curlrc
делает это постоянным.
Поскольку Вы установили ipv4
там и теперь все работает на Вас, по-видимому, Вам настроили IPv6, и curl
ранее использовали IPv6 для (успешного) разрешения хоста, таким образом, никакая нейтрализация к IPv4. Связь с сайтом прерывалась, потому что не всем сайтам настроили их веб-серверы для слушания на адресах IPv6, таким образом, socket()
вызов перестал бы работать, как мы видим в этом случае.