Como fazer o aptitude reconhecer o Oracle Java como uma dependência java válida

Como fazer o aptitude reconhecer o Oracle Java como uma dependência java válida

Eu tenho o Oracle Java 7 no meu Debian.

Quero instalar o servidor Tomcat usando o aptitude, mas ele continua tentando instalar o icedtea e pacotes desnecessários relacionados ao Java. É possível que o aptitude saiba que já possuo Java?

NB: usei make-jpkgo comando para instalar o Java do arquivo.

Responder1

Editar: um método mais fácil está aqui no topo, mas o material sobre controlos arquivos da resposta original completa ainda é relevante, por isso estou mantendo-o abaixo da regra horizontal.

Se make-jpkgjá tiver feito um arquivo Oracle Java .deb, você poderiaextraia-o, modifique seu controlarquivo como abaixo para adicionar providesdiretivas, empacote-o novamente e instale o deb modificado..


Resposta original:

Usando equivs, pode-se criar um pacote fictício que basicamente atua para fazer o dpkg pensar que algo está instalado.

Um bom exemplo de como começar a usar 'equivs' está escritoaqui.

Oficialmente você deve começar com equivs-control <:pkgname>o qual criará um arquivo pkgnameno diretório atual. Dentro há vários campos, mas você só precisa de oito e pode simplesmente excluir o restante. Aqui está aproximadamente o que você deve obter para um pacote fictício 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

Para fazer isso no Oracle Java e fazê-lo funcionar como um substituto para o openjdk (que parece ser uma dependência do icedtea-netxsid, que eu uso), acho que você precisa definir a provides:entrada na configuração do dpkg. Portanto, seu arquivo de controle seria algo como:

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

Observe a adição da última linha. Se eu pudesse fazer um texto colorido na redução, eu o coloriria de vermelho para dar ênfase.

Então, de acordo com a postagem do blog com link acima:

Feito isso, tudo que você precisa fazer é emitir o comando equivs-build path-to-pkgname(de preferência do mesmo diretório) e você obterá um deb falso para instalar com o dpkg -i. Diga adeus à dependência.

Para obter detalhes sobre a providesdiretiva, consulte: https://www.debian.org/doc/debian-policy/ch-relationships.html#virtual-packages-provides

Observe que não tenho certeza de qual versão do debian você está usando, então não sei se o OpenJDK 7, 8 ou qualquer outra coisa depende do icedtea. Você provavelmente deveria instalar pelo menos o IcedTea, já que não acho que o JDK da Oracle tenha um plugin web. Mas se você quisesse e tivesse certeza de que não quebraria nada, também poderia adicionar chá gelado como "fornecido". O nome do pacote é (eu acho - depende da sua versão Debian) icedtea-7-plugin.

informação relacionada