Como instalo o openjdk 7 no Ubuntu 16.04 ou superior?


120

Gostaria de atualizar meu sistema principal para 16.04, mas trabalho em projetos que requerem o OpenJDK 7.

Aparentemente, não está disponível a partir de um trivial apt-get install openjdk-7-jdk. Somente as versões 8 e 9 estão listadas no repositório.

Alguém pode me indicar instruções sobre como instalá-lo?


Caso alguém esteja se perguntando por que você ainda quer o JDK 7, estou na mesma situação, porque acho que o neo4j 2.1.6 não está funcionando bem com o Ubuntu 16.04 e a única coisa que vejo que pode estar errada é o JDK.
Sridhar Sarnobat

Você requer explicitamente o openjdk 7 como JVM do sistema ou precisa apenas de um tempo de execução Java 7. Você pode baixar o último dos arquivos Oracle.
Thorbjørn Ravn Andersen

Respostas:


146

Aviso de segurança

Os pacotes no PPA mencionados abaixo não são atualizados com patches de segurança para Java. Não use na produção; veja respostas alternativas.

No momento da escrita, o último upload para o OpenJDK 7 foi feito '2016-04-22' com a versão 7u95 e ainda disponível como 'mais recente', onde o Ubuntu 14.04 foi atualizado para 7u181 .


ATUALIZAÇÃO: Embora essa seja a resposta mais votada, provavelmente não é a que você deseja usar em 2018 devido à falta de atualizações de segurança por este PPA.

Encontrei as seguintes instruções que funcionaram para mim:

sudo add-apt-repository ppa:openjdk-r/ppa  
sudo apt-get update   
sudo apt-get install openjdk-7-jdk  

Isso define o "PPA para uploads do OpenJDK (restrito)" como um repositório de pacotes adicional, atualiza suas informações e instala o pacote com suas dependências (desse repositório).


13
Se você instalou o openjdk-8 por engano primeiro (como eu fiz), depois de seguir esta resposta, será necessário fazer sudo update-java-alternativesisso para tornar o openjdk-7 o padrão.
precisa

4
FYI: Atualmente, isso não funciona para as 16.10
opticyclic

19
-1 porque esse PPA está totalmente desatualizado e ignorando muitos patches de segurança importantes. Totalmente inaceitável ter isso instalado, imo.
gertvdijk

3
Também não funciona para 17.04.
Colin Harrington

2
-1 também como o PPA sugerido é restrito e não é atualizado.
Delimitador

65

Edit 22-Jul-2019 : Esta resposta atualmente não funciona. Os pacotes JDK mencionados abaixo não estão mais disponíveis no Debian Experimental. De qualquer forma, ficaram para trás dos pacotes do Ubuntu Trusty, que continham atualizações de segurança mais recentes. Consulte as outras respostas até que isso possa ser resolvido (desculpe, sem ETA).


Não parece que o mantenedor do openjdk-r / ppa esteja atualizando o pacote openjdk-7 além da versão 7u95-2.6.4-3. A descrição desse pacote "Copiado da experimental debian no Primary Archive para Debian GNU / Linux" nos dá uma pista sobre como lidar com isso nós mesmos.

Opção 1: Instalação manual

  1. Faça o download dos pacotes destinados à sua arquitetura:
    (para a maioria dos usuários, isso significa amd64 se 64 bits ou i386 se 32 bits Ubuntu estiver instalado)

  2. (Tente) instalar os pacotes usando dpkg:

    Ubuntu 17.10 e versões anteriores:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*

    Ubuntu 18.04 e posterior:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
  3. Verifique a saída de dpkg. Se houver problemas de dependência - o que é provável -, você verá o seguinte (com sua arquitetura substituída por amd64):

    Foram encontrados erros durante o processamento:
    openjdk-7-jre: amd64
    openjdk-7-jre-headless: amd64
    openjdk-7-jdk: amd64

    Se não houver problemas de dependência, ótimo, pronto, pule para a # 4. Caso contrário, se você precisar resolver alguns problemas de dependência, isso será tratado com:

    sudo apt install -f

    Observe que não há necessidade de executar novamente dpkgdepois de deixar aptresolver dependências. Ele terminará automaticamente a instalação dos pacotes openjdk.

  4. Atualize alternativas java. Você pode ver todas as versões java instaladas com update-java-alternatives --list. Para ativar o OpenJDK Java 1.7, execute:

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

    Você pode perceber um erro sobre o IcedTeaPlugin.soplugin não estar disponível. Esta não é uma preocupação real para desenvolvedores que trabalham com o JDK.

  5. Verifique se o java está funcionando:

    java -version

    que deve gerar algo semelhante a:

    versão java "1.7.0_161"
    OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
    VM do servidor OpenJDK de 64 bits (compilação 24.161-b01, modo misto)

Opção 2: Instalação automática (incluindo atualizações com apt)

A pinagem pode ser utilizada para instalar e atualizar o openjdk-7-jdk e suas dependências dos repositórios Debian.

  1. Crie um arquivo de pinagem que diga aptpara considerar apenas os pacotes que nos interessam (certamente não queremos que toda a nossa distribuição do Ubuntu seja "atualizada" com os pacotes experimentais da Debian).

    Crie um arquivo /etc/apt/preferences.d/debiancom o conteúdo abaixo. Você vai precisar de privilégios de superusuário, então use um dos sudo vim, sudo nano, gksudo gedit, etc.

    Package: *
    Pin: release o=Debian,n=experimental
    Pin-Priority: -1
    
    Package: *
    Pin: release o=Debian,n=sid
    Pin-Priority: -1
    
    Package: openjdk-7-jdk
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre-headless
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: libjpeg62-turbo
    Pin: release o=Debian,n=sid
    Pin-Priority: 500

    Para o Ubuntu 17.10 e versões anteriores, anexe também o seguinte (e veja a nota na parte inferior):

    Package: libfontconfig1
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: fontconfig-config
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
  2. Instale o chaveiro Debian:

    sudo apt install debian-archive-keyring

    Nota: embora este seja o método mais simples de adicionar o chaveiro debian, ele pode não estar atualizado. Verifique se há saída como a seguir ao executar apt updatena etapa 4:

    Erro W: GPG: http://cdn-fastly.deb.debian.org/debian experimental InRelease: Não foi possível verificar as seguintes assinaturas porque a chave pública não está disponível: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E: O repositório 'http://httpredir.debian.org/debian InRelease experimental' não está assinado.

    Se você vir esse erro, adicione manualmente as chaves necessárias com:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010

    onde 8B48AD6246925553e 7638D0442B90D010deve corresponder às teclas de pub que você vê na mensagem de aviso.

  3. Adicione os repositórios necessários:

    sudo add-apt-repository 'deb http://httpredir.debian.org/debian experimental main'
    sudo add-apt-repository 'deb http://httpredir.debian.org/debian sid main'

    Por que não usar um repositório Debian estável? Você encontrará dependências insatisfatórias com o Debian stable. Os repositórios experimentais (para openjdk-7) e sid (para libjpeg62-turbo, libfontconfig1 e fontconfig-config) são mais tolerantes com as versões de dependência.

  4. aptCache de atualização (espere que isso demore um pouco, pois as listas de pacotes do Debian são grandes):

    sudo apt update
  5. Instale o openjdk-7-jdk:

    sudo apt install openjdk-7-jdk
  6. Atualize alternativas java. Você pode ver todas as versões java instaladas com update-java-alternatives --list. Para ativar o OpenJDK Java 1.7, execute:

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

    Você pode perceber um erro sobre o IcedTeaPlugin.soplugin não estar disponível. Esta não é uma preocupação real para desenvolvedores que trabalham com o JDK.

  7. Verifique se o java está funcionando:

    java -version

    que deve gerar algo semelhante a:

    versão java "1.7.0_161"
    OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
    VM do servidor OpenJDK de 64 bits (compilação 24.161-b01, modo misto)

notas do fontconfig

libfontconfig1e fontconfig-configdeve ser atualizado para 2.12 ou posterior no Ubuntu 17.10 e versões anteriores. Os pacotes de atualização do Debian não contêm personalizações do Ubuntu, então alguns aplicativos exibem fontes feias com esses pacotes instalados; por exemplo, Charles Web Debugging Proxy. Dependendo dos programas que você usa, você pode ou não ser afetado por esse problema.


Resposta interessante, atualize-a se encontrar uma maneira de manter este pacote atualizado automaticamente.
J.Serra

Eu apenas tentei instalar o jdk 7 no ubuntu 16.04 e esta é a única maneira que consegui fazê-lo funcionar. Obrigado!
link

2
@ Resposta do J.Serra revisada com o método de atualização automática.
MDMower

resposta perfeita, especialmente o método automático é muito apreciado! obrigado por tomar o tempo para descobrir e escrever!
steadfasterX

1
O método automático funcionou principalmente para mim, mas também não é totalmente permanente. Eu tive que adicionar mais dois pacotes para /etc/apt/preferences.d/debian (além libjpeg62-turbo): libfontconfig1 e fontconfig-config
comodoro


0

Instale o Java 7 no Ubuntu 16.04, Ubuntu 17.04

É recomendável instalar o Oracle Java , porque ele tem uma vantagem de desempenho sobre o OpenJDK . Por esse motivo, quero postar uma alternativa. Se você deseja instalar o Oracle Java, execute os seguintes comandos no terminal para instalá-lo a partir do PPA.

  1. Adicione os repositórios necessários:

    sudo add-apt-repository ppa:webupd8team/java
  2. Atualize o aptcache e instale oracle-java7 :

    sudo apt update
    sudo apt install java-common oracle-java7-installer

    Durante o processo de instalação, você precisará aceitar o contrato de licença da Oracle . Uma vez instalado, precisamos definir variáveis ​​de ambiente Java como JAVA_HOME

  3. Corrija as variáveis ​​de ambiente Java.

    sudo apt install oracle-java7-set-default
    source /etc/profile
  4. Verifique se o java está funcionando:

    java -version

    que deve gerar algo semelhante a:

    java version "1.7.0_80"
    Java(TM) SE Runtime Environment (build 1.7.0_80-u80)
    Java HotSpot(TM) 64-Bit Server VM (build 25.131-u80, mixed mode)

3
O instalador do oracle não funciona mais Conectando-se a download.oracle.com (download.oracle.com) | 184.51.150.144 |: 80 ... conectado. Solicitação HTTP enviada, aguardando resposta ... 404 Não encontrado
autonomia

Para o Oracle JDK, a empresa não oferece suporte público ao JDK 7 (eles oferecem suporte pago). Eu acho que o apt-getestá tentando obter o instalador de uma página inexistente. - Se você precisar do JDK 7, poderá fazer o download dos instaladores no site Archive: oracle.com/technetwork/java/javase/downloads/…
Jaime

0

Alternativa Oracle JDK:

Eu queria evitar o esforço com repositórios porque alternava entre 7, 8 e 9, então acabei com o Oracle JDK em vez do OpenJDK. Baixado do site oficial . Não tenho certeza se a versão 80 mais recente contém as mesmas correções que a versão 161 do OpenJDK. Mas eu a tenho para desenvolvimento, de modo que isso não significa muito para mim.

Então você precisa definir $JAVA_HOMEno ambiente para que vários scripts selecionem o JDK correto (por exemplo, Maven, JBoss etc.).

Para ser completo, o JDK versão 7 foi EOL'ed, mesmo o suporte público do JDK 8 está sendo encerrado desde setembro de 2017 e não receberá atualizações públicas após setembro de 2018.


0

Use recipientes

Esta é uma resposta universalmente válida sobre como executar o <outdated>software removido no <current>Ubuntu: conteinerize seu aplicativo .

Por exemplo, use o Docker e uma imagem base do Ubuntu mais antiga, na qual o software que você está procurando ainda está disponível / mantido.

Também funciona ao contrário; experimente o software em uma distribuição Linux mais recente ou outra em seu Ubuntu estável em execução no momento.

Exemplo para Java 7 usando o Ubuntu 14.04

  1. Instale o Docker - a versão gratuita do Docker CE está correta. Veja, por exemplo, https://docs.docker.com/install/linux/docker-ce/ubuntu/ ou use o docker.iopacote nas versões recentes do Ubuntu fornecidas.

  2. Em uma pasta vazia, crie um arquivo Dockerfile:

    FROM ubuntu:trusty
    RUN apt-get update \
        && apt-get install -y \
            openjdk-7-jdk \
        && rm -rf /var/lib/apt/lists/*
    
    ENTRYPOINT ["/usr/bin/java"]

    Adicione mais pacotes nesse comando, se precisar.

  3. Nessa pasta, execute:

    docker build -t gertvdijk/java7 .
  4. Execute um comando dentro de um contêiner de uso único usando essa imagem do Java 7:

    Ex . java -version:

    docker run --rm -it gertvdijk/java7 -version

    Resultado:

    java version "1.7.0_181"
    OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-0ubuntu0.1)
    OpenJDK 64-Bit Server VM (build 24.181-b01, mixed mode)
  5. Opcionalmente, crie um invólucro por conveniência.

    • Crie um arquivo /usr/local/bin/java7-in-dockercom o conteúdo:

      #!/usr/bin/env sh -e
      
      DOCKER_IMAGE=gertvdijk/java7
      PWD="$(pwd)"
      
      exec docker run \
        --rm -it \
        -v ${PWD}:${PWD} \
        -v "/etc/passwd:/etc/passwd:ro" \
        -v "/etc/group:/etc/group:ro" \
        --user "$(id -u):$(id -g)" \
        --workdir "${PWD}" \
        "${DOCKER_IMAGE}" \
        $@

      Isso disponibilizará o diretório de trabalho atual dentro do contêiner - não todo o sistema de arquivos e representará sua conta de usuário local no espaço de nome do contêiner.

    • Marque-o como executável:

      sudo chmod +x /usr/local/bin/java7-in-docker
  6. Execute seu Java 7 de forma transparente, assim:

    java7-in-docker -jar relative/path/to/some.jar

14.04 não é mais mantido, a menos que você pague por manutenção prolongada (até 2022).
Thorbjørn Ravn Andersen

-2

Uma maneira fácil é:

Adicione estas linhas a /etc/apt/sources.list::

deb http://security.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

Atualize o apt e instale. Você provavelmente precisará fazer o downgrade do tzdatapacote.

Depois disso, eu recomendaria comentar essas linhas e atualizar o apt novamente para impedir a instalação ou atualização de pacotes desse repositório (o que poderia levar a um comportamento inesperado).

Um problema é que você precisa reter esses pacotes para que eles não sejam removidos quando você atualiza seu sistema (especialmente o tzdatapacote).

NOTA : Use esse método como último recurso; prefira qualquer outro que permita a atualização sem problemas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.