8

我想通过他们的 Deb repo 将 Typesafe Stack 安装到 Ubuntu Server,但不下载所有 OpenJDK 包。我通过update-alternatives在我的 PATH 中安装了 Oracle JDK 6 ,安装 OpenJDK 会破坏一些东西。

最好的方法是什么?看来我不能为此使用 apt-get --no-install-recommends 标志:

$> sudo apt-get install --no-install-recommends typesafe-stack sbt
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  ca-certificates-java default-jre default-jre-headless g8 java-common libaccess-bridge-java libaccess-bridge-java-jni openjdk-6-jre
  openjdk-6-jre-headless openjdk-6-jre-lib
Suggested packages:
  equivs icedtea-plugin sun-java6-fonts ttf-sazanami-gothic ttf-kochi-gothic ttf-sazanami-mincho ttf-kochi-mincho ttf-telugu-fonts ttf-oriya-fonts
  ttf-kannada-fonts ttf-bengali-fonts
Recommended packages:
  icedtea-netx icedtea-6-jre-cacao icedtea-6-jre-jamvm
The following NEW packages will be installed:
  ca-certificates-java default-jre default-jre-headless g8 java-common libaccess-bridge-java libaccess-bridge-java-jni openjdk-6-jre
  openjdk-6-jre-headless openjdk-6-jre-lib sbt typesafe-stack
0 upgraded, 12 newly installed, 0 to remove and 7 not upgraded.
Need to get 33.0 MB of archives.
After this operation, 86.9 MB of additional disk space will be used.
Do you want to continue [Y/n]? n
Abort.

PS - 我知道 Typesafe Stack 组件适用于我当前的设置,因为我已经安装了它并且使用他们之前的安装程序运行良好。

4

2 回答 2

0

我目前正在 Ubuntu 自己的“universe”存储库中查看“scala”和“scala-library”包,而不是 Typesafe 存储库。这些包依赖于“java6-runtime”(我运行 Ubuntu 12.10,“Quantal”)。在 Typesafe 存储库中找到的包可能不是这种情况,但原理应该是相同的。

equivs包可用于创建虚假的包存根(例如),它错误地声称提供了不需要的 JRE(例如:)Package: local-java-runtimeProvides: java6-runtime

这样,您可以手动安装所需的任何支持 Scala 的 JRE,然后安装您创建的存根包,并且apt-get install scala不再抱怨(存根包将满足依赖关系,而 APT 不必拉入 JRE)。

看看这里阅读 equivs 并了解它是如何完成的。

顺便说一句,至少对于我正在运行的 Linux 发行版,我看到“openjdk-7-jre”已经提供了“java6-runtime”,所以“java6-runtime”依赖关系可能会比过去带来更少的不便。

于 2013-04-16T18:37:27.653 回答
0

老问题,在我的 OP 下的评论中已经回答了很长时间,现在才正式发布。在基于 Debian 的系统上,只需使用Debian Alternatives,请参阅我上面评论中的设置脚本。它很棒,可以正常工作,并提供以下好处:

  1. 使用您想要的 Java/Scala/Haskell/etc 的确切版本,而不是 Debian/Ubuntu/etc 存储库中的版本。当 repo 版本落后于当前版本时很有用,或者您的应用程序需要与 repo 不同的特定平台版本。
  2. 哈斯克尔平台。并排安装多个 GHC 和 Haskell 平台版本,例如在 /opt/haskell/ghc/[version] 和 /opt/haskell/platform/[version] 中,并使用update-alternatives --config. 与 Java、Scala 或任何其他 sdk/平台相同。
  3. 升级到 GHC 和 Haskell 平台(或 Java、Scala 等)的新版本,而不覆盖或删除以前的版本。如果这导致您的应用程序出现回归,请使用简单的update-alternatives --config.
  4. 将 GHC 和 Haskell 平台的所有文件放在一个位置,例如 /opt/haskell/ghc/[version] 和 /opt/haskell/platform/[version],而不是分散在 /usr/bin、/usr/lib 上, 和 /usr/share 与 apt-get 或 dpkg -i 安装一样。这些文件保存在 /opt/haskell/ 中,并且 update-alternatives 将它们软链接到它们的系统目录。
  5. 使用update-alternatives --remove-all(包括脚本)和rm -rf /opt/haskell.
  6. 通过系统 PATH 而不是用户 PATH 运行 haskell(例如,无需将 /opt/haskell/ghc/bin 添加到 .profile 中的 PATH)
  7. 习惯使用 update-alternatives,它是一个很棒的工具,可以轻松管理手动安装的多版本软件。Java、Scala 和任何其他二进制或编译平台都可以很好地使用它。
于 2014-03-04T02:38:17.017 回答