手動でダウンロードしたsbtをsbtenvで管理する

もともとはhomebrewでsbtをインストールして使っていましたが、sbtの複数のバージョンを使って色々検証したくなりsbtenvを使ってみることにしました。

sbtenvでsbtをインストールしようとすると僕の環境ではgpg周りでsignatureの検証が失敗してしまい、すぐに解決できそうになかったので、手動でsbtをダウンロードしてsbtenvで管理する方法を取りました。

手順

前提として、xxxenv系のツールはanyenvで管理しているため、直接sbtenvをインストールして使う場合と少しパス等が違う可能性があるのでご注意ください。

1. anyenvでsbtenvをインストールする

$ anyenv install sbtenv

以下のコマンドを実行して、sbtenvのバージョンが返ってこればOK!

$  sbtenv -v

sbtenv 0.0.24

2. sbtの公式ページからsbtをダウンロードする

公式ページから sbt 1.5.5.tgz をダウンロードします。

www.scala-sbt.org

f:id:ryskit:20210923165209p:plain

3. sbtenvのversionsにディレクトリを作成する

~/.anyenv/envs/sbtenv/versions 配下にsbtのバージョン番号と同じディレクトリを作成します。

$ mkdir -p  ~/.anyenv/envs/sbtenv/versions/1.5.5

4. ダウンロードしたsbtをファイルを解凍する

tar xf ~/Downloads/sbt-1.5.5.tgz -C ~/.anyenv/envs/sbtenv/versions/1.5.5/

5. sbtenvで管理されているか確認する

以下のように、sbtenv versions を実行して、1.5.5の横に*が付いていたらOKです。

$ sbtenv versions

  1.2.8
  1.3.9
* 1.5.5 (set by /Users/[username]/.anyenv/envs/sbtenv/version)

付いていなければ、以下を実行してください。

$ sbtenv global 1.5.5

6. sbtの情報を表示してみる

welcome to sbt 1.5.5 と表示されていればOKです。

$ cd ~ && sbt about

warning: ignoring extraneous `sbt-` prefix in version `sbt-1.5.5`
         (set by /Users/[username]/project/build.properties)
[info] welcome to sbt 1.5.5 (Amazon.com Inc. Java 11.0.3)
[info] loading global plugins from /Users/[username]/.sbt/1.0/plugins
[info] loading project definition from /Users/[username]/project
[info] set current project to ryskit (in build file:/Users/[username]/)
[info] This is sbt 1.5.5
[info] The current project is ProjectRef(uri("file:/Users/[username]/"), "username") 0.1.0-SNAPSHOT
[info] The current project is built against Scala 2.12.14
[info] Available Plugins
[info]  - sbt.ScriptedPlugin
[info]  - sbt.plugins.CorePlugin
[info]  - sbt.plugins.Giter8TemplatePlugin
[info]  - sbt.plugins.IvyPlugin
[info]  - sbt.plugins.JUnitXmlReportPlugin
[info]  - sbt.plugins.JvmPlugin
[info]  - sbt.plugins.MiniDependencyTreePlugin
[info]  - sbt.plugins.SbtPlugin
[info]  - sbt.plugins.SemanticdbPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.12.14

参照

github.com

www.scala-sbt.org