Как я нахожу то, что пакет обеспечивает 'javac'?

Я хотел бы найти, какой пакет установлен на Ubuntu 14.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/javac

apt-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 команда?

0
задан 7 February 2019 в 12:27

2 ответа

В некоторых случаях дополнительное выслеживание требуется. В частности,

$ 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
1
ответ дан 26 October 2019 в 08:32

Похож /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

0
ответ дан 26 October 2019 в 08:32

Другие вопросы по тегам:

Похожие вопросы: