我想知道在Ubuntu14.04(服务器)上安装了什么软件包,可以访问javac命令。RHEL系列发行版有yum provides,但是对于Debian家族似乎没有类似的地方。
这个AskUbuntu问题建议使用dpkg -S和apt-file,但这两项工作都没有:
$ sudo dpkg -S `which javac`
dpkg-query: no path found matching pattern /usr/bin/javacapt-file search似乎一开始就起作用:
$ apt-file search javac
javacc: /usr/bin/javacc除了apt-cache policy显示这个包甚至没有安装,所以它显然不是提供javac的包。
$ apt-cache policy javacc
javacc:
Installed: (none)
Candidate: 5.0-5如何才能找到提供javac命令的包?
发布于 2019-02-07 19:39:29
在某些情况下,还需要进行额外的调查。特别地,
$ ls -l $(which javac)
lrwxrwxrwx 1 root root 23 May 24 2017 /usr/bin/javac -> /etc/alternatives/javac显示/usr/bin/javac是一个符号链接,因此我们可以使用readlink向下钻取:
$ dpkg -S "$(readlink -f $(which javac))"
openjdk-8-jdk-headless:amd64: /usr/lib/jvm/java-8-openjdk-amd64/bin/javac或者(因为它是一个update-alternatives链接)
$ update-alternatives --query javac
Name: javac
Link: /usr/bin/javac
Slaves:
javac.1.gz /usr/share/man/man1/javac.1.gz
Status: auto
Best: /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
Value: /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
Alternative: /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
Priority: 1081
Slaves:
javac.1.gz /usr/lib/jvm/java-8-openjdk-amd64/man/man1/javac.1.gz我们可以从中选择当前值:
$ dpkg -S /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
openjdk-8-jdk-headless:amd64: /usr/lib/jvm/java-8-openjdk-amd64/bin/javac发布于 2019-02-07 19:36:15
看起来/usr/bin/javac是一个由update-alternatives管理的符号链接。如果你readlink -f /usr/bin/javac,你会看到什么?如果它指向其他地方,也许可以用dpkg -S检查这个位置?或者update-alternatives本身可以告诉您对于特定链接有哪些选项,例如:
$ update-alternatives --config javac
There is only one alternative in link group javac (providing /usr/bin/javac): /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
Nothing to configure.因此:
$ dpkg -S /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
openjdk-8-jdk-headless:amd64: /usr/lib/jvm/java-8-openjdk-amd64/bin/javac该包中的所有文件:https://packages.ubuntu.com/xenial/openjdk-8-jdk-headless/filelist
https://askubuntu.com/questions/1116486
复制相似问题