Как заставить aptitude распознавать Oracle Java как допустимую зависимость Java

1

У меня есть Oracle Java 7 на моем Debian.

Я хочу установить сервер Tomcat, используя aptitude, но он продолжает пытаться установить icedtea и ненужные пакеты, связанные с Java. Может ли aptitude знать, что у меня уже есть Java?

NB: я использовал make-jpkgкоманду для установки Java из архива.

PeterFour
источник
1
Посмотрите на equivsпакет, это может помочь.
wurtel
make-jpkg должен сделать это, по крайней мере, если вы установили получившиеся .debs. Звучит как ошибка где-то ... какие пакеты вы видите, которые требуют openjdk?
Дероберт
@derobert Да, это было с Java, и это, когда я пытаюсь установитьtomcat7
PeterFour

Ответы:

0

Изменить: более простой метод здесь вверху, но материал о controlфайлах из полного исходного ответа по-прежнему актуален, поэтому я держу его ниже горизонтального правила.

Если вы make-jpkgуже создали файл Oracle Java .deb, вы можете извлечь его, изменить его, controlкак показано ниже, чтобы добавить providesдирективы, перепаковать его и установить измененный deb. ,


Оригинальный ответ:

Используя equivs, можно создать фиктивный пакет, который в основном действует, чтобы заставить dpkg думать, что что-то установлено.

Хороший пример того, как начать использовать «эквиваленты», написан здесь .

Официально вы должны начать с того, equivs-control <:pkgname>что создадите файл pkgnameв текущем каталоге. Внутри находятся различные поля, но вам нужно только восемь и можно просто удалить остальные. Вот примерно то, что вы должны получить для вымышленного пакета pkgname:

Section: misc
Priority: optional
Standards-Version: 3.9.2

Package: pkgname
Version: 1:42
Maintainer: Your Name <your@email.address>
Architecture: all
Description: fake pkgname to block a dumb dependency

Чтобы сделать это для Oracle Java и заставить его выступать в качестве замены openjdk (который, как мне кажется, является зависимостью от icedtea-netxsid, который я использую), я думаю, вам нужно установить provides:запись в конфигурации dpkg. Таким образом, ваш контрольный файл будет выглядеть примерно так:

Section: misc
Priority: optional
Standards-Version: 3.9.2

Package: oracle-java
Version: 7u181-2.6.14-1
Maintainer: Joe Bob <your@email.address>
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

Обратите внимание на добавление последней строки. Если бы я мог сделать цветной текст в уценке, я бы выделил его красным цветом.

Тогда, согласно сообщению в блоге, связанному выше:

Сделав это, все, что вам нужно сделать, это выполнить команду 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.

Wyatt8740
источник