yum installで存在しないパッケージ名をエラーにする方法
ちょっと前の話で、Amazon LinuxベースのDockerfileを書いていて、 yumを使ったインストールがサイレントに失敗していることがあった。
よく見ると、
No package <パッケージ名> available.
というログが出ていて、パッケージ名を間違っていた、ということがわかった。
しかし、コードは0が返されており、 &&でつながれたDockerfileのRUNコマンドは失敗することなく後段まで処理が続いていたので、エラーに気づきづらい状態だった。
存在しないパッケージ名があってもコード0を返却する、というyumの仕様には驚いたが、いちおうこれを回避する方法がある。
--setopt=skip_missing_names_on_install=False
というオプションを付ければ良い。
たとえば、Dockerfile中では下のように使う。
RUN yum install -y --setopt=skip_missing_names_on_install=False \
package-foo \
package-bar && \
another-command
長いオプションだが、しょうもないエラーを早めに捕捉できるので、 Dockerfile内でyumを使う場合は、基本的にこのオプションは付けることにしている。