Posso indicar que um pacote .deb depende de Java, mas não especifica qual implementação (por exemplo, OpenJDK, IcedTea, Oracle)?

2

Eu tenho um pacote .deb que contém um aplicativo, que requer que o Java funcione. No entanto, eu não me importo com qual implementação eles instalaram (por exemplo, OpenJDK, IcedTea, Oracle), e não quero forçar um usuário a baixar outra implementação se ela tiver uma instalada. Eu também quero lidar com a situação de um usuário não ter nenhuma implementação instalada.

Existe uma maneira de indicar que o pacote .deb requer alguma implementação Java? E se sim, como posso lidar com eles sem ter nenhuma implementação instalada?

    
por Thunderforge 24.06.2016 / 08:21

1 resposta

3

A maneira padrão de indicar que um pacote .deb requer um ambiente de tempo de execução Java (a JVM, não o JDK) é especificar uma dependência em default-jre ou default-jre-headless (a primeira para programas com GUIs, a última se nenhuma GUI for necessária), com dependências alternativas nas versões apropriadas de java-runtime ( java6-runtime se seu aplicativo usar Java 6 ou posterior, java7-runtime para Java 7 ou posterior, etc.):

Depends: default-jre | java6-runtime

ou

Depends: default-jre-headless | java6-runtime-headless

etc.

Isso lida com todos os JREs fornecidos pelo Debian (ou derivados do Debian), e os JREs do Oracle se foram processados usando java-package . default-jre depende do JRE padrão ( OpenJDK 7 para o Debian 8 , OpenJDK 8 for Debian 9 ), portanto, se nenhum outro JRE estiver instalado, isso garante que um JRE seja instalado. Os vários pacotes do JRE fornecem java-runtime variants dependendo do nível de suporte, portanto, dependendo do que significa que qualquer JRE compatível existente, adequadamente empacotado, será usado em vez de forçar o usuário a instalar outro JRE.

Se você realmente quiser dar suporte a qualquer JRE instalado, incluindo Oracle JREs descompactados e instalados manualmente, só poderá usar o acima na sub-rotina "Recomendados" do pacote e tentar executar java no seu script de inicialização. Idealmente, você deve verificar a presença de um JRE no momento da instalação (em postinst , mas certificando-se de não falhar na instalação se nenhum JRE for encontrado) e sempre que precisar executar java - que pode ser complicado se o seu pacote contiver uma unidade de script ou systemd ou algo parecido (complicado no sentido de que não é óbvio como notificar o administrador de que algo está errado, de uma maneira que você pode ter certeza de que será percebido e compreendido).

    
por 24.06.2016 / 09:07

Tags