首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到提供` `javac`‘的包?

如何找到提供` `javac`‘的包?
EN

Ask Ubuntu用户
提问于 2019-02-07 19:27:26
回答 2查看 2.1K关注 0票数 1

我想知道在Ubuntu14.04(服务器)上安装了什么软件包,可以访问javac命令。RHEL系列发行版有yum provides,但是对于Debian家族似乎没有类似的地方。

这个AskUbuntu问题建议使用dpkg -Sapt-file,但这两项工作都没有:

代码语言:javascript
复制
$ sudo dpkg -S `which javac`
dpkg-query: no path found matching pattern /usr/bin/javac

apt-file search似乎一开始就起作用:

代码语言:javascript
复制
$ apt-file search javac
javacc: /usr/bin/javacc

除了apt-cache policy显示这个包甚至没有安装,所以它显然不是提供javac的包。

代码语言:javascript
复制
$ apt-cache policy javacc
javacc:
  Installed: (none)
  Candidate: 5.0-5

如何才能找到提供javac命令的包?

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2019-02-07 19:39:29

在某些情况下,还需要进行额外的调查。特别地,

代码语言:javascript
复制
$ ls -l $(which javac)
lrwxrwxrwx 1 root root 23 May 24  2017 /usr/bin/javac -> /etc/alternatives/javac

显示/usr/bin/javac是一个符号链接,因此我们可以使用readlink向下钻取:

代码语言:javascript
复制
$ dpkg -S "$(readlink -f $(which javac))"
openjdk-8-jdk-headless:amd64: /usr/lib/jvm/java-8-openjdk-amd64/bin/javac

或者(因为它是一个update-alternatives链接)

代码语言:javascript
复制
$ 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

我们可以从中选择当前值:

代码语言:javascript
复制
$ 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
票数 2
EN

Ask Ubuntu用户

发布于 2019-02-07 19:36:15

看起来/usr/bin/javac是一个由update-alternatives管理的符号链接。如果你readlink -f /usr/bin/javac,你会看到什么?如果它指向其他地方,也许可以用dpkg -S检查这个位置?或者update-alternatives本身可以告诉您对于特定链接有哪些选项,例如:

代码语言:javascript
复制
$ 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.

因此:

代码语言:javascript
复制
$ 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

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1116486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档