在Ubuntu上安装sbt

65

我已在Ubuntu上安装了sbt。

:~/bin/sbt/bin$ ls
classes    sbt      sbt-launch.jar       target
jansi.jar  sbt.bat  sbt-launch-lib.bash  win-sbt

然而,每当我尝试启动sbt(在与sbt位于同一目录下)时,它都无法工作:

No command 'sbt' found, did you mean:
 Command 'skt' from package 'latex-sanskrit' (universe)
 Command 'sb2' from package 'scratchbox2' (universe)
 Command 'sbd' from package 'cluster-glue' (main)
 Command 'mbt' from package 'mbt' (universe)
 Command 'sbmt' from package 'atfs' (universe)
 Command 'lbt' from package 'lbt' (universe)
 Command 'st' from package 'suckless-tools' (universe)
 Command 'sb' from package 'lrzsz' (universe)

我是 Linux 的新手,对于如何解决这个问题毫无头绪。


1
要在当前目录中执行文件,您必须在名称前面写入“./”,否则它将尝试在类路径内搜索可执行文件。因此,要执行特定的操作,您应该键入“./sbt”。这就是出错的原因,但显然最好按照下面的其他答案进行安装。 - leinaD_natipaC
13
我认为没有关闭这个问题的理由。sbt是Scala编程中非常有用的工具,也许符合StackOverflow的规定。 - Daniel Cukier
7
谁决定关闭这个问题?为什么不先考虑一下还有哪些替代方案可供选择。Superuser不是合适的地方。sbt不属于那里。这里是正确的地方,我也是对这个问题/答案感兴趣的人之一。作为服务器端程序员,难道这不足够“主题相关”吗? - WestCoastProjects
6
这个问题被关闭是荒谬的。SBT 是一个编程工具。 - Ivan -Oats- Storck
2
官方的Linux安装指南在这里:https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Linux.html - MichaelChirico
5个回答

162

在Ubuntu上安装SBT的最简单方法是使用Typesafe提供的deb包。

执行以下shell命令:

  1. wget http://apt.typesafe.com/repo-deb-build-0002.deb
  2. sudo dpkg -i repo-deb-build-0002.deb
  3. sudo apt-get update
  4. sudo apt-get install sbt

这样就完成了!


6
运行良好!但是我遇到了这个问题: "检测到sbt版本0.12.2 找不到sbt launcher 0.12.2 请下载: 从 http://typesafe.artifactoryonline.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.12.2/sbt-launch.jar 到 /home/leo/.sbt/.lib/0.12.2/sbt-launch.jar" 已经写明了要做什么。但以下是供您参考的命令:" mkdir -p /home/leo/.sbt/.lib/0.12.2/ wget -O /home/leo/.sbt/.lib/0.12.2/sbt-launch.jar http://typesafe.artifactoryonline.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.12.2/sbt-launch.jar" - leo
1
@MariusKavansky 它只安装了一个脚本,使得可以运行每个版本的sbt。你必须在文件project/build.properties中指定要使用哪个版本。然后运行sbt,脚本将启动启动器。按照出现的指示进行操作即可。 - paradigmatic
2
@RémiM 如我在上面的评论中所回答的,一旦您使用我描述的方法安装了sbt启动器,您可以在project/build.properties文件中选择实际的SBT版本。 我目前正在使用SBT 13.6,并且没有任何问题。 - paradigmatic
2
刚刚安装了一个非常老的sbt 0.11.3。有什么办法可以安装最新版本吗? - Ivan Balashov
1
我按照 https://www.scala-sbt.org/1.0/docs/Installing-sbt-on-Linux.html 进行工作。 - liam xu
显示剩余6条评论

46

是的,问题是因为我安装了一个压缩版本,安装文件某种程度上已经“损坏”了。 - NoIdeaHowToFixThis
1
FYI:链接已损坏。应该是这个:http://dl.bintray.com/sbt/debian/。 - Yuchen
1
如果常规的apt-get无法工作,您也可以通过编写以下命令来安装sbt: wget https://dl.bintray.com/sbt/debian/sbt-0.13.15.deb sudo dpkg -i path/to/sbt.deb sudo apt-get install -f - Tom Piaggio

13

未找到命令sbt

这是因为你的路径上没有sbt。尝试从~/bin/sbt/bin或其他可执行文件所在目录中运行./sbt,以验证它是否能正确运行。还要检查你是否对sbt可执行文件有执行权限。如果这样可以运行,则将~/bin/sbt/bin添加到你的路径中,就可以从任何地方运行sbt了。

关于如何将目录添加到你的路径中,请参见此问题

在LINUX上,使用which命令确认路径设置是否正确。其输出将类似于:

$ which sbt
/usr/bin/sbt

最后,为了验证sbt是否正常工作,请尝试运行sbt -help或类似命令。-help输出的结果应该类似于以下内容:

最后,要验证sbt是否正常工作,请尝试运行sbt -help或类似命令。-help输出的结果将类似于以下内容:

$ sbt -help
Usage: sbt [options]

  -h | -help         print this message
  ...

4
作为另一种方法,您可以将SBT Extras脚本保存到名为sbt.sh的文件中,并设置权限为可执行。然后将此文件添加到您的路径中,或者将其放在您的~/bin目录下。
这里的额外好处是,它将根据您的项目属性下载并使用正确的SBT版本。如果您倾向于编译来自GitHub和其他来源的开源项目,这是一个不错的便利。

4
我的猜测是目录~/bin/sbt/bin不在你的PATH环境变量中。
要执行当前目录下的程序或脚本,你需要在命令前加上"./",例如:
./sbt

这是Linux中的一项安全功能,目的是防止恶意方通过将文件放入您的主目录(例如)来覆盖系统命令(和其他程序)。 想象一个名为“ls”的脚本,在执行“ls”命令之前将您的/ etc / passwd文件发送给第三方... 或者执行“rm -rf”。
话虽如此,除非您需要从最新的源代码获取特定内容,最好按照paradigmatic在他的帖子中所说的那样,从Typesafe存储库安装。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接