我对以下命令有疑问:
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