为了试用 jdk11 的新功能,我将其安装到 /opt/ 并希望使用更新替代品来使用它,如下所示:
sudo update-alternatives --install /etc/alternatives/java OpenJDK-11 /opt/jdk-11/bin/java 1102
Run Code Online (Sandbox Code Playgroud)
返回:
update-alternatives: using /opt/jdk-11/bin/javac to provide /etc/alternatives/java (OpenJDK-11) in auto mode
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时
$ sudo update-alternatives --config java
Run Code Online (Sandbox Code Playgroud)
我没有看到我刚刚安装的jdk。相反,我收到警告和已经存在的选择:
update-alternatives: warning: /etc/alternatives/java has been changed (manually or by a script); switching to manual updates only
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
Run Code Online (Sandbox Code Playgroud)
警告是什么意思,为什么它实际上同时显示自动和手动模式条目?为什么我的 jdk11 不在那里?
我正在尝试从 Bionic 中的 Java 开发工具包 (JDK) 8 切换到 JDK 11。安装很顺利:
$ sudo apt-get install openjdk-11-jdk
$ sudo update-java-alternatives -l
java-1.11.0-openjdk-amd64 1101 /usr/lib/jvm/java-1.11.0- openjdk-amd64
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)
所以我想我可以通过以下方式切换:
$ sudo update-java-alternatives -s java-1.11.0-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)
然而,这会返回:
update-alternatives: error: no alternatives for mozilla-javaplugin.so
update-java-alternatives: plugin alternative does not exist: /usr/lib/jvm/java-11-openjdk-amd64/lib/IcedTeaPlugin.so
Run Code Online (Sandbox Code Playgroud)
该文件确实不存在,但 /usr/lib/jvm/java-1.8.0-openjdk-amd64 中也不存在。mozilla-javaplugin.so 也是如此。那么为什么 update-alternatives 会抱怨它不可用,我怎样才能让它停止关心呢?
在此之后,在我的 Ubuntu 19 安装上启动 MariaDB 失败:
nov 02 16:40:51 farnsworth systemd[1]: Starting MariaDB 10.3.17 database server...
nov 02 16:40:51 farnsworth mysqld[5328]: 2019-11-02 16:40:51 0 [Note] /usr/sbin/mysqld (mysqld 10.3.17-MariaDB-1) starting as process 5328 ...
nov 02 16:40:52 farnsworth audit[5328]: AVC apparmor="ALLOWED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld" name="run/systemd/notify" pid=5328 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=123 ouid=0
nov 02 16:40:52 farnsworth audit[5328]: AVC apparmor="ALLOWED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld" name="run/systemd/notify" pid=5328 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=123 ouid=0
nov …Run Code Online (Sandbox Code Playgroud)