PetaLinux2023.1 Fetch failed do_fetch Proxy

petalinux-config -c kernelをすると最初145個のTask(ダウンロードするライブラリ等)があり、会社のProxy経由だと108個とかがダウンロード出来ずにエラーとなりました。

解決方法

~.bashrcに大文字のHTTP_PROXY設定に追加して小文字のhttp_proxyなども設定する。

export HTTP_PROXY=http://proxy.example.co.jp:8080
export HTTPS_PROXY=http://proxy.example.co.jp:8080
export FTP_PROXY=http://proxy.example.co.jp:8080
export http_proxy=http://proxy.example.co.jp:8080
export https_proxy=http://proxy.example.co.jp:8080
export ftp_proxy=http://proxy.example.co.jp:8080

原因

PetaLinuxはdo_fetchが呼ばれたら、wgetでfetchしているみたいで、そのwgetは/プロキシ変数は小文字のhttp_proxyとhttps_proxyとno_proxyを見ています。 /etc/wgetrcには小文字でhttp_proxy等を設定していたのですが、PetaLinuxは/etc/wgetrcを使いませんでした。 

~/.bashrcには大文字でProxy設定して、/etc/wgetrcには小文字でProxy設定して、/etc/apt/apt.confも設定して、~/.gitconfigも設定していて、個別でコンソールからwget、apt、git clone、pipなどがconnectedとなりファイルを取得してきているので、何が問題か分かりませんでした。

すると、ユーザーホームディレクトリ/PetaLinuxプロジェクトディレクトリ/build/tmp/hosttools/wgetがあり、シンボリックリンクで/tools/Xilinx/PetaLinux/components/yocto/buildtools/sysroots/x86_64-petalinux-linux/usr/bin/wgetを参照していました。 多分これが呼びだされ/etc/wgetrcを参照していないかもしれません。  何れにせよ、petalinux-config -c kernelをするとwgetを使うので、ログインユーザーレベルで小文字のhttps_proxy等の環境変数を用意しておく必要がありました。

わかれば簡単な解決方法ですがまる2日かかりました。

多分、/etc/wgetrcを~/wgetrcにコピー(やシンボリックリンク)しても良いのかもしれませんが上記で解決したので未検証です。

コメント

タイトルとURLをコピーしました