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

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

我对以下命令有疑问:

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'

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

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

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

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

答案1

首先,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'

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

 update-java-alternatives -l

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

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

相关内容