====== FreeBSDのportmasterで失敗ログが自動保存されるようになってた ======
家のFreeBSDサーバのportsたちをportmasterで更新していたところ失敗するやつがあった。失敗自体は取り立てて珍しいことでもないが、今回は''This command has been saved to /tmp/portmasterfail.txt''という見慣れない行が現れた。メッセージの通り、失敗した時の結果が保存されるらしい。中身はというと…
portmaster lang/php71-extensions graphics/php71-gd x11/libXpm x11-toolkits/libXt x11/libICE x11/xorgproto x11/libSM x11/libX11 x11/libXau x11/libxcb devel/check x11/libXdmcp x11/xcb-proto x11/libXext math/php71-gmp security/php71-filter security/php71-mcrypt security/libmcrypt security/php71-openssl sysutils/php71-fileinfo sysutils/php71-posix textproc/php71-ctype textproc/php71-dom textproc/php71-simplexml textproc/php71-xml textproc/php71-xmlreader textproc/php71-xmlwriter www/php71-opcache www/php71-session
あ、うん、はい(白目
失敗部分のログが保存されてるかと思いきや、portmasterコマンドのログだけだった…。この機能は2017/2/3のportmaster 3.17.10で実装されたっぽい。まぁ、何も無いよりはマシか。
ちなみに今回の直接の失敗原因はxorgprotoとglprotoの競合だった。
===> Installing for xorgproto-2018.4
===> Checking if xorgproto already installed
===> Registering installation for xorgproto-2018.4 as automatic
Installing xorgproto-2018.4...
pkg-static: xorgproto-2018.4 conflicts with glproto-1.4.17 (installs files into the same place). Problematic file: /usr/local/include/GL/glxint.h
*** Error code 70
Stop.
make: stopped in /usr/ports/x11/xorgproto
こういう時はまず/usr/ports/UPDATINGを見てみる。特にportsの競合の場合は大抵解決策が書いてある。今回も見事に書いてあった。
20180731:
AFFECTS: users of x11/xorg and all ports with USE_XORG=*proto
AUTHOR: zeising@FreeBSD.org
The xorg *proto packages have all been merged into one package,
x11/xorgproto. This might cause issues with upgrading. If you
get conflicts between xorgproto and old *proto packages, please
remove the old package and install xorgproto again.
In order to remove all orphaned ports, including all *proto port,
the following can be used after the ports tree has been updated:
pkg version -l \? | cut -f 1 -w | grep -v compat | xargs pkg delete -fy
X.orgのproto系パッケージがx11/xorgprotoに統合されたために、glprotoと衝突した事がわかる。最終行のコマンドを実行して解決。失敗したportmasterコマンドを再実行してインストール完了。あ、この時にportmasterfail.txtが役立つのか!