wget がエラーになる。
wget が名前解決エラーになる場合、ipv6 アドレスへ接続に行き、接続失敗することがある。
wgetrc
を設定ファイルに書いてもユーザーごとになってしまうので、システムグローバルに適用する wgetrcファイル に設定を掛けば、自動実行のプロセスやフォークした先でも大丈夫。
openwrt で wget を使っているので opkg update が失敗する。v6アドレス怖い。
wgetrc で v4 へ固定する。
解決策は2つ
wget 引数
wget -4 https://example.com ## または alias wget='wget -4 '
ただし、スクリプトから/bin/wget
が呼ばれる場合は対応できない。
/etc/wgetrc
inet4_only = on
これで解決する。ipv6 の名前解決をとめてもいいし、alias でもいいし、wgetrcでもいい。wgetrc が個人的には影響範囲が少なくてファイルを指定するのが楽な手法だと思う。
ほんと、フレッツのv6ってやつは面倒を引き起こす。
ただし wget パッケージ依存
wget が busybox 提供のミニマム版だとwegetrc を読み込んでくれないので フルパッケージをインストールする必要があった。
opkg install wget echo inet4_only = on > /etc/wgetrc
それでも解決しない場合。
外部スクリプトから直接呼ばれる場合など、wget を移動させて強引に解決する。
/usr/bin/wget
が /usr/bin/wget.back -4
を呼ぶように改造
mv /usr/bin/wget /usr/bin/wget.bak touch /usr/bin/wget chmod +x /usr/bin/wget cat <<EOF > /usr/bin/wget #!/bin/sh ## 2021-12-02 ntt v6 /usr/bin/wget.bak -4 "\$@" EOF
2021-12-02
強引に解決する方法を追記。
参考資料
https://www.gnu.org/software/wget/manual/html_node/Wgetrc-Location.html