搜索 64 位安装的 Java、JRE 或 OpenJDK 的命令是什么?

n00*_*00b 2 command-line

我对以下命令有疑问:

apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common'
Run Code Online (Sandbox Code Playgroud)

由于我的 IT 知识有限,我可以说上面命令中的 (ia32-) 是指 32 位软件吗?如果是,那么我假设上述命令适用于 32 位安装的操作系统。

但是我安装了 64 位操作系统。

64 位软件的正确参数是什么?是 (amd64-) 还是 (ia-64) 或 (x86_64-)?

非常感谢任何专家的帮助。

ter*_*don 6

首先,apt-cache search不搜索已安装的软件包,而是查找可用的软件包,包括已安装的和未安装的。此外,您看到的各种搜索模式并不相互排斥,因此将打印与其中任何一个匹配的行。最后,?after^(ia32-)方法ia32-是可选的,表达式将匹配有它的行没有它的行。因此,您的命令确实适用于 64 位和 32 位系统。

仅查找已安装软件包的等效命令是:

dpkg -l *java* | awk '{print($2)}' | 
    grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' \
      -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common'
Run Code Online (Sandbox Code Playgroud)

但是不要用那个。在 Debian 衍生系统(如 Ubuntu)中,有一个特殊的工具update-java-alternatives,当使用该-l选项运行时,将列出已安装的 Java 环境:

 update-java-alternatives -l
Run Code Online (Sandbox Code Playgroud)

例如,在我的系统上,这会打印:

java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
jdk-7-oracle-x64 317 /usr/lib/jvm/jdk-7-oracle-x64
Run Code Online (Sandbox Code Playgroud)