Изменить: более простой метод здесь вверху, но материал о 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-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 <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
.
equivs
пакет, это может помочь.