Java no opensuse

Instalei o jdk 15 no opensuse, mas essa é as configuracoes das pastas


mas nao entendo essa quantidades de pastas e esses links que apontam para essa pasta
/etc/alternatives> l | grep java
lrwxrwxrwx 1 root root 38 fev 20 10:24 jar → /usr/lib64/jvm/java-15-openjdk/bin/jar*
lrwxrwxrwx 1 root root 44 fev 20 10:24 jar.1.gz → /usr/share/man/man1/jar-java-15-openjdk.1.gz
lrwxrwxrwx 1 root root 44 fev 20 10:24 jarsigner → /usr/lib64/jvm/java-15-openjdk/bin/jarsigner*
lrwxrwxrwx 1 root root 50 fev 20 10:24 jarsigner.1.gz → /usr/share/man/man1/jarsigner-java-15-openjdk.1.gz
lrwxrwxrwx 1 root root 38 fev 20 10:23 java → /usr/lib64/jvm/jre-15-openjdk/bin/java*
lrwxrwxrwx 1 root root 45 fev 20 10:23 java.1.gz → /usr/share/man/man1/java-java-15-openjdk.1.gz
lrwxrwxrwx 1 root root 40 fev 20 10:24 javac → /usr/lib64/jvm/java-15-openjdk/bin/javac*
lrwxrwxrwx 1 root root 46 fev 20 10:24 javac.1.gz → /usr/share/man/man1/javac-java-15-openjdk.1.gz
lrwxrwxrwx 1 root root 42 fev 20 10:24 javadoc → /usr/lib64/jvm/java-15-openjdk/bin/javadoc*
lrwxrwxrwx 1 root root 48 fev 20 10:24 javadoc.1.gz → /usr/share/man/man1/javadoc-java-15-openjdk.1.gz
lrwxrwxrwx 1 root root 38 fev 20 10:06 javadocdir → /usr/share/javadoc/java-15-openjdk/api/
lrwxrwxrwx 1 root root 40 fev 20 10:24 javap → /usr/lib64/jvm/java-15-openjdk/bin/javap*
lrwxrwxrwx 1 root root 46 fev 20 10:24 javap.1.gz → /usr/share/man/man1/javap-java-15-openjdk.1.gz
lrwxrwxrwx 1 root root 30 fev 20 10:24 java_sdk → /usr/lib64/jvm/java-15-openjdk/
lrwxrwxrwx 1 root root 30 fev 20 10:24 java_sdk_15 → /usr/lib64/jvm/java-15-openjdk/
lrwxrwxrwx 1 root root 30 fev 20 10:24 java_sdk_openjdk → /usr/lib64/jvm/java-15-openjdk/
lrwxrwxrwx 1 root root 39 fev 20 10:24 jcmd → /usr/lib64/jvm/java-15-openjdk/bin/jcmd*
lrwxrwxrwx 1 root root 45 fev 20 10:24 jcmd.1.gz → /usr/share/man/man1/jcmd-java-15-openjdk.1.gz
lrwxrwxrwx 1 root root 43 fev 20 10:24 jconsole → /usr/lib64/jvm/java-15-openjdk/bin/jconsole*
lrwxrwxrwx 1 root root 49 fev 20 10:24 jconsole.1.gz → /usr/share/man/man1/jconsole-java-15-openjdk.1.gz
lrwxrwxrwx 1 root root 62 fev 20 10:24 jconsole.desktop → /usr/lib64/jvm/java-15-openjdk-15/lib/desktop/jconsole.desktop
lrwxrwxrwx 1 root root 38 fev 20 10:24 jdb → /usr/lib64/jvm/java-15-openjdk/bin/jdb*

alguem poderia me explicar por que é dessa forma?
e qual a pasta verdadeira pra me adicionar o no path o jdk!

1 Curtida

Você nescessariamente precisa do JDK 15? Pois existe o openJDK (várias versões. Só escolher no YaST). É mais condensado, teoricamente

sim pq eu programo em java estou testando essa versao do java e estou utilitando o openjdk que vem no repositorio do opensuse! mas nao entendo pq essa quantidade de pastas que contem os mesmo arquivos!

Isso acontece porque alguns pacotes especiais podem ter vários canditados e diferentes versões instalado ao mesmo tempo no sistema. No entanto, algum deles precisa ser selecionado como principal.

Por exemplo, vc pode ter a versão 8 e também a 11 instalada. Quando instala a 15, geralmente vai ser selecionada como padrão. Se vc quiser rodar algum programa que necessite a versão 8, vc precisa selecionar o padrão para a versão 8, mesmo tendo outras duas versões disponíveis.

Pra fazer essa seleção, o sistema utiliza links simbólicos no local padrão do pacote, que vai levar para uma pasta de uma versão específica . Dessa forma vc terá várias pastas específicas e sempre o link simbólico levando àquela que vc selecionou como padrão.

No debian/ubuntu o comando é update-alternatives
No gentoo é eselect
No opensuse não sei… ehehhee

Também usamos o update-alternatives e temos um módulo para o YaST (pacote “yast2-alternatives”), que pode ser utilizado como frontend.

São nomes alternativos para pacotes que fornecem os mesmos binários/bibliotecas (ou nomes conflitantes)

Você tem 4 binários no seu sistema que servem como compilador Java (javac), existem n cenários onde você precisa manter todos eles (seja pra retrocompatibilidade, testar versões alfa, etc…) então como alternar entre elas sem ter que ficar removendo, reinstalando ou duplicando arquivos do sistema em containers? A resposta é simples, instala todos e depois escolhe qual vai usar, simples assim

basicamente qualquer uma, MAS a ideia é que você deixe o sistema configurar pra você

Você deve ter notado que todos tem o mesmo arquivo certo? Pois bem, pegue cada uma delas:

  • java
  • javac
  • javadoc

Basta rodar no terminal um utilitário chamado update-alternatives pra cada um deles, assim:

sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config ...

Escolha sempre a mesma pra cada um


Mas calma…

Tudo isso acima é só pra explicar o que é, isso é pra use case MUUUUUITO específico, se você fosse precisar fazer isso, muito provavelmente teria um script pra automatizar o processo, no geral o ambiente já deve estar configurado (incluindo o PATH do SDK e JRE) e você não precisa fazer isso, pra testar rode:

java -version
javac -version