Travis-CIでapt-get installに失敗する時の対処法
最近はTravisCIでの不可解なエラーのためgem update bundler
を追記する対応が必要になり話題となりましたね。
なんと今度は、今まで動いていたapt-get installが、次のメッセージで失敗するようになりました。
E: Unable to locate package libgeoip-dev
さて、困りました。
早速対処法を探ります。
解決方法
結論としては、.travis.ymlのbefore_install
のセクションで、
sudo apt-get update
と記述してリポジトリファイルの更新を行うとエラーが解消します。
エラー内容
リポジトリファイルの読み込みは成功しているが、そこにlibgeoip-dev
が存在しないようです。
$ sudo apt-get install libgeoip-dev Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package libgeoip-dev The command "sudo apt-get install libgeoip-dev" failed and exited with 100 during . Your build has been stopped.
全文はこちらです。 https://travis-ci.org/y-ken/fluent-plugin-geoip/jobs/104577451
調査事項
- libgeoip-devのパッケージがリポジトリから消えたのか?
次の通り消えていません。 https://packages.debian.org/search?keywords=libgeoip-dev
- 公式ドキュメントを探ると?
なんと、記載がありました。
古いパッケージ情報により、たびたび起こるそうです。
This is often caused by old package database and can be fixed by adding the following to .travis.yml: before_install: - sudo apt-get update
参照元: https://docs.travis-ci.com/user/common-build-problems/#Linux%3A-apt-fails-to-install-package-with-404-error
.travis.yml を更新します
ドキュメントに従い、sudo apt-get update
を追記します。
今回は同時に、NoMethodError: undefined method 'spec' for nil:NilClass
を解消するためのgem updateも追加しました。
エラー全文: https://travis-ci.org/y-ken/fluent-plugin-geoip/jobs/104785639
変更前
before_install: - sudo apt-get install libgeoip-dev
変更後
before_install: - sudo apt-get update - sudo apt-get install libgeoip-dev - gem update bundler
これにて次のPullRequestの通り、エラーは解消です。
めでたしめでたし。