TL;DR
Ubuntu16.04でsbt0.13.13以降をインストールする際は、別途Java8を設定する。
sudo apt-get install openjdk-8-jre-headless galternatives
sudo galternatives
経緯
Scalaの公式の手順
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt-get update
sudo apt-get install sbt
するとこんなエラーがでます。
:: problems summary ::
:::: WARNINGS
[FAILED ] org.scala-sbt#main;0.13.13!main.jar: sun.security.validator.ValidatorException: No trusted certificate found (3067ms)
[FAILED ] org.scala-sbt#main;0.13.13!main.jar: (0ms)
==== local: tried
/home/ten/.ivy2/local/org.scala-sbt/main/0.13.13/jars/main.jar
中国広東省深圳での作業中だったので、中国の金盾がいけないのかなと思ってVPN通したり外したりしたのですが、うまく行かない。"No trusted certificate found"でぐぐってもJavaのエラーの情報ばかり。おお、sbtの神様である当時LightBendの中の人ユージーン横田さんのQAがあるじゃないですか
え?jdk6がvirtualパッケージだからjdk8に変えてコミット済み?なるほどなるほどー、で、どうしたらいいの? 質問のリンク先にSolutionが書いてありました。
SBT was running with a default of ‘experimental java 9’. Nuking that package and using update-java-alternatives to setup the also installed openjdk-8-jre-headless sorted it right out.
jdk9を捨てて、8をセットアップしろということ?Nukeしたら8しか残らないんじゃないの?sortはわかるけど'sorted it right out'ってどういうこと?イディオムわからんけど順番を設定しろということだろう。
横田さんの説明と食い違ってるしよくわからないけどまあやってみよう。
やったこと
Ubuntu手に馴染んでないまましばらく触ってなかったので全然思い出せない。まずは'apt-cache search jdk*' してみる。openjdk-8-jre-headlessがそれっぽい。うーんjreじゃなくてjdkが欲しいんだけどまあいいか。
CentOSではalternativesコマンドがあったんだけどUbuntuではgalternativesというGUIツールしかないみたい。なのでこれを入れました。よく見たらQAのところにupdate-java-alternativesを使えと書いてありました。guiのやつは一覧できて便利なのでまあこれでいいや。
ということで冒頭のコマンドになりました。
明日からまたalpine使ってdockerにgitbucketとか構築する