Saya menghadapi beberapa masalah hari ini ketika mencoba menginstal komposer dengan perintah di bawah ini:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Itu memberi saya kesalahan ini:
curl: (7) Failed to connect to getcomposer.org port 443: Network is unreachable
Saya mencari di Google dan menemukan perintah ini :
echo ipv4 >> ~/.curlrc
Saya menjalankan ini dan itu memperbaiki masalah dan komposer diinstal dengan baik.
Tapi saya tidak tahu apa yang dilakukan perintah di atas, adakah yang bisa menjelaskannya?
command-line
ip
curl
Prashant Kumar
sumber
sumber
Jawaban:
Apa yang dilakukan adalah menambahkan "ipv4" ke file "curlrc". Contoh dimulai dengan file kosong:
Pada dasarnya itu memaksa curl untuk menggunakan ipv4.
The pengguna telah mengatakan tentang hal itu:
sumber
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
mengapa sistem saya hanya memberikan kesalahan alih-alih mencoba mengakses ipv4 dengan sendirinya jika tidak menemukan ipv6..curlrc
menggunakan nama opsi tanpa yang memimpin-
atau--
.Konvensi khas UNIX adalah bahwa program (biasanya) membaca konfigurasi startup mereka dari berbagai file yang telah ditentukan. Ini hanyalah sebuah tradisi, bukan apa pun yang didefinisikan oleh POSIX atau standar lainnya. Contoh program UNIX misalnya
foobar
akan membaca, dengan urutan prioritas sebagai berikut:Mungkin ada mundur
/usr/share/
tetapi itu tidak terlalu umum.Jadi, di
curl
sini mengikuti konvensi dan membacanya dari konfigurasi awal~/.curlrc
. Dan dengan melakukanecho ipv4 >>~/.curlrc
, Anda telah menambahkan stringipv4
ke file~/.curlrc
.String
ipv4
memiliki arti khusus untukcurl
-curl
akan menggunakan IPv4 untuk resolusi host. Ini analog dengan menggunakan argumen-4
/ipv4
ascurl
dari baris perintah, tetapi menyimpan untuk~/.curlrc
menjadikan ini permanen.Seperti yang telah Anda atur
ipv4
di sana dan sekarang semuanya berfungsi untuk Anda, mungkin Anda telah mengkonfigurasi IPv6, dancurl
sebelumnya menggunakan IPv6 untuk resolusi host (berhasil), jadi tidak ada cadangan untuk IPv4. Sambungan ke situs gagal karena tidak semua situs memiliki server web yang dikonfigurasikan untuk mendengarkan alamat IPv6, sehinggasocket()
panggilan akan gagal seperti yang dapat kita lihat dalam kasus ini.sumber
/etc/foobar.conf
akan dibaca pertama, kemudian~/.foobarrc
, sehingga yang terakhir bisa menimpa yang pertama. Jadi, jika/etc/foobar.conf
mengandung garis yang mengatakanfrobnitz=0
, dan~/.foobarrc
memilikifrobnitz=1
, nilai yang terakhir berlaku