Я хотел бы найти, какой пакет установлен на 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
команда?
В некоторых случаях дополнительное выслеживание требуется. В частности,
$ 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
Похож /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