У меня на Debian установлен Oracle Java 7.
Я хочу установить сервер tomcat с помощью aptitude, но он продолжает пытаться установить icedtea и ненужные пакеты, связанные с java. Может ли aptitude узнать, что у меня уже есть Java?
Примечание: Я использовал make-jpkg
команду для установки Java из архива.
решение1
Редактировать: более простой метод находится здесь, вверху, но информация о control
файлах из полного исходного ответа по-прежнему актуальна, поэтому я размещаю ее под горизонтальной линейкой.
Если make-jpkg
вы уже создали файл Oracle Java .deb, вы можетеизвлеките его, измените его control
файл, как показано ниже, чтобы добавить provides
директивы, повторно упакуйте его и установите измененный deb..
Оригинальный ответ:
Используя equivs
, можно создать фиктивный пакет, который по сути заставляет dpkg думать, что что-то установлено.
Хороший пример того, как начать использовать «equivs», написанздесь.
Официально вы должны начать с
equivs-control <:pkgname>
того, что создаст файлpkgname
в текущем каталоге. Внутри есть различные поля, но вам нужно только восемь, и вы можете просто удалить остальные. Вот примерно то, что вы должны получить для вымышленного пакетаpkgname
:
Section: misc
Priority: optional
Standards-Version: 3.9.2
Package: pkgname
Version: 1:42
Maintainer: Your Name <[email protected]>
Architecture: all
Description: fake pkgname to block a dumb dependency
Чтобы сделать это для Oracle Java и заставить его работать как замена openjdk (который, как оказалось, является зависимостью icedtea-netx
в sid, который я использую), я думаю, вам нужно установить provides:
запись в конфигурации dpkg. Таким образом, ваш файл управления будет выглядеть примерно так:
Section: misc
Priority: optional
Standards-Version: 3.9.2
Package: oracle-java
Version: 7u181-2.6.14-1
Maintainer: Joe Bob <[email protected]>
Architecture: all
Description: dummy Java package to let the system know Oracle JDK is OK to use
Provides: openjdk-7-jdk, openjdk-7-jre, openjdk-7-jre-headless
Обратите внимание на добавление последней строки. Если бы я мог сделать цветной текст в markdown, я бы покрасил его в красный цвет для выразительности.
Затем, согласно сообщению в блоге, ссылка на которое приведена выше:
Сделав это, вам нужно будет только выполнить команду
equivs-build path-to-pkgname
(желательно из того же каталога), и вы получите поддельный deb для установкиdpkg -i
. Попрощайтесь с зависимостью.
Подробную информацию о provides
директиве см.:
https://www.debian.org/doc/debian-policy/ch-relationships.html#virtual-packages-provides
Обратите внимание, что я не уверен, какую версию Debian вы используете, поэтому я не знаю, зависит ли OpenJDK 7, 8 или что-то еще от icedtea. Вам, вероятно, следует установить IcedTea как минимум, поскольку я не думаю, что у Oracle JDK есть веб-плагин. Но если вы хотите, и вы уверены, что это ничего не сломает, вы можете добавить icedtea как 'предоставленный'. Имя пакета (я думаю - это зависит от вашего выпуска Debian) icedtea-7-plugin
.