rcmdnk's blog

実例で学ぶGCCの本格的活用法―高機能コンパイラのオプション・コマンドを一つ一つていねいに解説 (TECHI―Embedded Software)

Macで色々なパッケージのアップデートとかを cronジョブで定期的に行う様にしているのですが、 このジョブが1時間のタイムアウトを出すようになって調べてみた所 Homebrewのupgradeで止まってました。

さらに見てみるとHomebrewでのgccのアップグレードで止まってる様に見えました。

Sponsored Links

gccのinstall/upgradeにはすごく時間がかかる

手動でbrew upgradeしてみた所、gccの

$ brew upgrade
==> Upgrading 8 outdated packages, with result:
vapoursynth 42.1, xvid 1.3.5, gcc 7.2.0_1, unixodbc 2.3.5_1, htop 2.0.2_1, mercurial 4.4.2_1, youtube-dl 2018.01.14, fftw 3.3.7_1
==> Upgrading fftw
==> Installing dependencies for fftw: gcc
==> Installing fftw dependency: gcc
...
==> ../configure --build=x86_64-apple-darwin17.3.0 --prefix=/usr/local/Cellar/gcc/7.2.0_1 --libdir=/usr/local/Cellar/gcc/7.2.0_1/lib/gcc/7 --enable-languages
==> make

な感じで、gccのmakeの所で止まっているようになってしまいました。

ただ、プロセスとかをチェックして見るとmakeに関するプロセスっぽいのが走っていて 何かやってる感じでした。

とりあえず走らせたままちょっと探してみると同じような話が。

macOS Sierraでbrewを使ってgccをインストールする際makeで止まる…ように見えるという話。 - Qiita

1~2時間かかるということなので、設定してるcronジョブでは1時間でタイムアウトするようになってるので その制限で毎回落ちていた様です。

仕方ないのでこれを走らせたまま待っていると、正確に計ってないですが多分2時間位経ったあとに makeが終了して他のアップグレードも終わりました。

ちなみにHomebrewで入れるgccはデフォルトでは/usr/local/bin/gcc-7としてインストールされるので、 普通にgccと呼ぶとMacデフォルト(Xcode Toolsを入れた時に入るもの)の/usr/bin/gccが呼ばれます。

Homebrewでgccを直接入れた覚えがなくても上にもあるように他のパッケージから依存されて入ってることが多いと思います。

そんななかでたまにbrew upgradeした時に異常に時間がかかっておかしいな、と思うこともあるかもしれませんが (もしくは初めてgccに依存するパッケージを入れるときとか)、 gccのinstall/upgradeは数時間かかる可能性があるので覚えておくと良いかと。

cronジョブは以前スクリプトの途中でスタックした状態が毎回そのまま溜まって行ってしまうような事があったので タイムアウトを入れたのですが、 1hだとこれがひっかかるのでとりあえず5h位にしておきました。

Sponsored Links
Sponsored Links

« iPhone Xをしばらく使ってみて良かった点とか気になる点とか iPhone Xに入れたアプリ »