openjdk-7-jdk 是否依赖于 systemd?

x-y*_*uri 4 aptitude apt jdk openjdk systemd

我正在尝试openjdk-7-jdk在 Ubuntu Trusty上安装(使用aptaptitude),但它似乎依赖于systemd,我想避免这种情况。而且,我systemddebtreeor的输出中也看不到apt-rdepends。为什么呢?不openjdk-7-jdk依赖于systemd或不?

为了给你更大的图景,我正在配置一个服务器。这一切都发生在安装elasticsearch. 它想要java,并且java想要systemd。但是安装后systemd无法启用elasticsearch,因为它带有init脚本,而不是systemd单元文件。它看到systemctl并假设要使用它,而不是service.

UPD它不需要systemd,直到我做apt update。之前apt update

# apt-cache policy openjdk-7-jdk
openjdk-7-jdk:
  Installed: (none)
  Candidate: 7u101-2.6.6-0ubuntu0.14.04.1
  Version table:
     7u101-2.6.6-0ubuntu0.14.04.1 0
        500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
     7u51-2.4.6-1ubuntu4 0
        500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages

# apt-cache policy systemd
systemd:
  Installed: (none)
  Candidate: (none)
  Version table:
Run Code Online (Sandbox Code Playgroud)

之后apt update

# apt-cache policy openjdk-7-jdk
openjdk-7-jdk:
  Installed: (none)
  Candidate: 7u121-2.6.8-1ubuntu0.14.04.1
  Version table:
     7u121-2.6.8-1ubuntu0.14.04.1 0
        500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
     7u51-2.4.6-1ubuntu4 0
        500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages

# apt-cache policy systemd
systemd:
  Installed: (none)
  Candidate: 204-5ubuntu20.20
  Version table:
     204-5ubuntu20.20 0
        500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
Run Code Online (Sandbox Code Playgroud)

他们不是将 Ubuntu Trusty 切换到systemd吗?

此外,操作系统在 lxc 容器中运行,但我怀疑这与此有关。这是一个全新的安装,可以这么说。我创建容器,登录,apt updateapt install openjdk-7-jdk,然后它想要systemd.

/etc/apt/sources.list

deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
Run Code Online (Sandbox Code Playgroud)

中没有任何内容/etc/apt/sources.list.d

Mar*_*erg 6

有一个可用于 Ubuntu 14.04 (Trusty) 的 openjdk-7-jdk 包。14.04 基于 Upstart,不可信。因此,该包必须在没有 systemd init 系统的情况下运行 14.04。

您所指的 systemd 软件包是来自 trusty-updates 的 systemd。从该页面,您可以下载并查看 Debian 添加的软件包以制作软件包。

在压缩档案中,您会在 README 文件中找到它:

systemd 可以与 sysvinit 一起安装,并且不会立即改变系统的行为。这是故意的。要测试 systemd,请添加:

init=/bin/systemd
Run Code Online (Sandbox Code Playgroud)

到内核​​命令行然后重新启动,或安装 systemd-sysv 包。

systemd 提供了许多包,OpenJDK 必须依赖其中的一个。您可以确认该systemd-sysv包不是依赖项。

我知道在 Ubuntu 14.04 上安装标准软件包不会导致在用户未明确选择的情况下将系统切换为使用 systemd 作为初始化系统的情况。

如果您的 14.04 系统以某种方式最终安装了 Upstart 和 systemd,您可以中断引导过程,进入 grub 菜单并修改内核命令行以添加init=/sbin/upstart以使用 Upstart 引导它,然后卸载或更改您需要的内容。


要解决elasticsearch 无法启动的问题,请使用http://packages.ubuntu.com查找一个trusty或更早版本的elasticsearch ,然后从那里复制“init.d”脚本。此修复将通过您可能执行的 elasticsearch 升级持续存在。

我认为您陷入了一个奇怪的状态,因为即使您使用的是 14.04,一些软件包维护者也开始期待systemd. 我不认为你会找到比这样的解决方法更好的解决方法。