Bagaimana cara saya menginstal openjdk 7 pada Ubuntu 16.04 atau lebih tinggi?

120

Saya ingin memutakhirkan sistem utama saya ke 16,04, tetapi saya mengerjakan proyek yang membutuhkan OpenJDK 7.

Ternyata itu tidak tersedia dari yang sepele apt-get install openjdk-7-jdk. Hanya versi 8 dan 9 yang terdaftar dalam repositori.

Adakah yang bisa mengarahkan saya ke petunjuk tentang cara menginstalnya?

onairda
sumber
Jika ada yang bertanya-tanya mengapa Anda masih menginginkan JDK 7, saya berada dalam situasi yang sama karena saya pikir neo4j 2.1.6 tidak bermain dengan baik dengan Ubuntu 16.04 dan satu-satunya hal yang bisa saya lihat salah adalah JDK.
Sridhar Sarnobat
Apakah Anda secara eksplisit memerlukan openjdk 7 sebagai sistem JVM Anda atau apakah Anda hanya memerlukan Java 7 runtime. Anda dapat mengunduh yang terakhir dari arsip Oracle.
Thorbjørn Ravn Andersen

Jawaban:

146

Peringatan keamanan

Paket dalam PPA yang disebutkan di bawah ini tidak diperbarui dengan patch keamanan ke Jawa. Jangan gunakan dalam produksi; lihat jawaban alternatif sebagai gantinya.

Pada saat penulisan, unggahan terakhir untuk OpenJDK 7 dilakukan '2016-04-22' dengan versi 7u95 dan masih tersedia sebagai 'terbaru', di mana Ubuntu 14.04 telah diperbarui ke 7u181 .


UPDATE: SELALU INI ADALAH JAWABAN YANG PALING VOTEDNYA YANG MUNGKIN BUKAN YANG ANDA INGINKAN PADA 2018 KARENA KURANGNYA KURANGNYA PEMBARUAN KEAMANAN OLEH PPA.

Saya menemukan instruksi berikut yang bekerja untuk saya:

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

Ini mendefinisikan "PPA untuk unggahan OpenJDK (dibatasi)" sebagai repositori paket tambahan, memperbarui informasi Anda, dan menginstal paket dengan dependensinya (dari repositori itu).

onairda
sumber
13
Jika Anda keliru menginstal openjdk-8 terlebih dahulu (seperti yang saya lakukan) maka setelah mengikuti jawaban ini Anda harus melakukan sudo update-java-alternativessehingga Anda dapat menjadikan openjdk-7 sebagai default.
Rian Sanderson
4
FYI: Saat ini tidak berfungsi untuk 16.10
opticyclic
19
-1 karena PPA ini benar-benar ketinggalan zaman dan mengabaikan banyak tambalan keamanan penting. Sama sekali tidak dapat diterima untuk menginstal ini, imo.
gertvdijk
3
Juga tidak berfungsi untuk 17,04.
Colin Harrington
2
-1 juga karena PPA yang disarankan adalah Terbatas dan tidak diperbarui.
pembatas
65

Sunting 22-Jul-2019 : Jawaban ini saat ini tidak berfungsi. Paket JDK yang direferensikan di bawah ini tidak lagi tersedia di Debian Experimental. Bagaimanapun, mereka tertinggal di belakang paket Ubuntu Trusty yang berisi pembaruan keamanan lebih baru. Silakan merujuk ke jawaban lain sampai ini dapat diselesaikan (maaf, tidak ada ETA).


Ini tidak terlihat seperti pengelola openjdk-r / ppa akan memperbarui paket openjdk-7 di luar versi 7u95-2.6.4-3. Deskripsi paket itu "Disalin dari eksperimental debian di Arsip Utama untuk Debian GNU / Linux" memberi kita petunjuk tentang bagaimana menangani ini sendiri.

Opsi 1: Instalasi Manual

  1. Unduh paket yang ditujukan untuk arsitektur Anda:
    (untuk sebagian besar pengguna, ini berarti amd64 jika 64bit, atau i386 jika 32bit Ubuntu diinstal)

  2. (Mencoba untuk) menginstal paket menggunakan dpkg:

    Ubuntu 17.10 dan sebelumnya:

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

    Ubuntu 18.04 dan yang lebih baru:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
  3. Periksa output dari dpkg. Jika ada masalah ketergantungan - yang kemungkinan - Anda akan melihat yang berikut (dengan arsitektur Anda diganti dengan amd64):

    Terjadi kesalahan saat memproses:
    openjdk-7-jre: amd64
    openjdk-7-jre-headless: amd64
    openjdk-7-jdk: amd64

    Jika tidak ada masalah ketergantungan, bagus, Anda sudah selesai, lewati ke # 4. Jika tidak, jika Anda perlu menyelesaikan beberapa masalah ketergantungan, ini ditangani dengan:

    sudo apt install -f

    Perhatikan, tidak perlu dijalankan kembali dpkgsetelah membiarkan aptmenyelesaikan dependensi. Ini akan secara otomatis menyelesaikan instalasi paket openjdk.

  4. Perbarui alternatif java. Anda dapat melihat semua versi java yang diinstal dengan update-java-alternatives --list. Untuk mengaktifkan OpenJDK Java 1.7, jalankan:

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

    Anda mungkin melihat kesalahan tentang IcedTeaPlugin.soplugin yang tidak tersedia. Ini bukan masalah nyata bagi pengembang yang bekerja dengan JDK.

  5. Verifikasi java berfungsi:

    java -version

    yang akan menghasilkan sesuatu yang mirip dengan:

    versi java "1.7.0_161"
    OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Server VM (build 24.161-b01, mode campuran)

Opsi 2: Instalasi Otomatis (termasuk pembaruan dengan apt)

Pinning dapat digunakan untuk menginstal dan memperbarui openjdk-7-jdk dan dependensinya dari repositori Debian.

  1. Buat file pinning yang apthanya memberitahukan paket yang menarik bagi kami (kami tentu tidak ingin seluruh distribusi Ubuntu kami "ditingkatkan" dengan paket eksperimental Debian).

    Buat file /etc/apt/preferences.d/debiandengan konten di bawah ini. Anda akan membutuhkan hak superuser, jadi gunakan salah satu dari sudo vim, sudo nano, gksudo gedit, dll

    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
    

    Untuk Ubuntu 17.10 dan sebelumnya, tambahkan juga yang berikut (dan lihat catatan di bawah):

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

    sudo apt install debian-archive-keyring

    Catatan: sementara ini adalah metode paling sederhana untuk menambahkan kunci debian, itu mungkin tidak up to date. Periksa output seperti berikut saat berjalan apt updatedi langkah 4:

    W: Kesalahan GPG: http://cdn-fastly.deb.debian.org/debian eksperimental InRelease: Tanda tangan berikut tidak dapat diverifikasi karena kunci publik tidak tersedia: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E: Repositori 'http://httpredir.debian.org/debian eksperimental InRelease' tidak ditandatangani.

    Jika Anda melihat kesalahan ini, maka secara manual tambahkan kunci yang diperlukan dengan:

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

    di mana 8B48AD6246925553dan 7638D0442B90D010harus cocok dengan pubkey yang Anda lihat di pesan peringatan.

  3. Tambahkan repositori yang dibutuhkan:

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

    Mengapa tidak menggunakan repositori Debian yang stabil? Anda akan mengalami dependensi yang tidak memuaskan dengan stabil Debian. Repositori eksperimental (untuk openjdk-7) dan sid (untuk libjpeg62-turbo, libfontconfig1, dan fontconfig-config) lebih lunak dengan versi dependensi.

  4. Perbarui aptcache (harap ini membutuhkan waktu lama karena daftar paket Debian besar):

    sudo apt update
  5. Instal openjdk-7-jdk:

    sudo apt install openjdk-7-jdk
  6. Perbarui alternatif java. Anda dapat melihat semua versi java yang diinstal dengan update-java-alternatives --list. Untuk mengaktifkan OpenJDK Java 1.7, jalankan:

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

    Anda mungkin melihat kesalahan tentang IcedTeaPlugin.soplugin yang tidak tersedia. Ini bukan masalah nyata bagi pengembang yang bekerja dengan JDK.

  7. Verifikasi java berfungsi:

    java -version

    yang akan menghasilkan sesuatu yang mirip dengan:

    versi java "1.7.0_161"
    OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Server VM (build 24.161-b01, mode campuran)

catatan fontconfig

libfontconfig1dan fontconfig-configharus ditingkatkan ke 2.12 atau lebih baru di Ubuntu 17.10 dan sebelumnya. Paket pembaruan dari Debian tidak mengandung penyesuaian Ubuntu, sehingga beberapa aplikasi menampilkan font yang jelek dengan paket ini diinstal; mis. Proxy Debugging Charles Web. Bergantung pada program yang Anda gunakan, Anda mungkin atau mungkin tidak terpengaruh oleh masalah ini.

MDMower
sumber
Jawaban yang menarik, harap perbarui jika Anda menemukan cara untuk menjaga paket ini diperbarui secara otomatis.
J.Serra
Saya baru saja mencoba menginstal jdk 7 di ubuntu 16.04 dan ini adalah satu-satunya cara saya berhasil membuatnya bekerja. Terima kasih!
tautan
2
@ J.Serra Jawaban direvisi dengan metode pembaruan otomatis.
MDMower
jawaban sempurna terutama metode otomatis sangat dihargai! terima kasih telah meluangkan waktu untuk mencari tahu dan menulis!
steadfasterX
1
Metode otomatis kebanyakan bekerja untuk saya, tetapi tidak sepenuhnya permanen juga. Saya harus menambahkan dua paket lagi ke /etc/apt/preferences.d/debian (di samping libjpeg62-turbo): libfontconfig1 dan fontconfig-config
comodoro
11

Anda dapat mengunduh OpenJDK 7 dari Azul yang mungkin sesuai dengan kebutuhan Anda. Keduanya memiliki DEB (untuk sistem paket) dan distribusi ZIP. Saya hanya bekerja dengan distribusi ZIP.

http://www.azul.com/downloads/zulu/zulu-linux/

Thorbjørn Ravn Andersen
sumber
Inilah yang berhasil bagi saya dengan versi terbaru Ubuntu.
razvanone
0

Instal Java 7 pada Ubuntu 16.04, Ubuntu 17.04

Dianjurkan untuk menginstal Oracle Java , karena memiliki keunggulan kinerja di atas OpenJDK . Untuk alasan itu saya ingin memposting alternatif. Jika Anda ingin menginstal Oracle Java, jalankan perintah berikut di terminal untuk menginstalnya dari PPA.

  1. Tambahkan repositori yang dibutuhkan:

    sudo add-apt-repository ppa:webupd8team/java
  2. Perbarui aptcache dan instal oracle-java7 :

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

    Selama proses instalasi Anda harus menerima perjanjian Lisensi Oracle . Setelah terinstal, kita perlu mengatur variabel lingkungan Java seperti JAVA_HOME

  3. Variabel lingkungan Java yang benar.

    sudo apt install oracle-java7-set-default
    source /etc/profile
    
  4. Verifikasi java berfungsi:

    java -version

    yang akan menghasilkan sesuatu yang mirip dengan:

    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)
    
Teocci
sumber
3
Penginstal oracle tidak lagi berfungsi Menghubungkan ke download.oracle.com (download.oracle.com) | 184.51.150.144 |: 80 ... terhubung. Permintaan HTTP dikirim, menunggu tanggapan ... 404 Tidak Ditemukan
otonomi
Untuk Oracle JDK, perusahaan tidak menawarkan dukungan publik untuk JDK 7 (mereka menawarkan dukungan berbayar). Saya pikir apt-getsedang mencoba untuk mendapatkan installer dari halaman yang tidak ada. - Jika Anda membutuhkan JDK 7, Anda dapat mengunduh installer dari situs web Archive: oracle.com/technetwork/java/javase/downloads/…
Jaime
0

Alternatif Oracle JDK:

Saya ingin menghindari upaya dengan repositori karena saya beralih antara 7, 8, dan 9, jadi saya berakhir dengan Oracle JDK daripada OpenJDK. Diunduh dari situs resmi . Saya tidak yakin apakah build terbaru 80 berisi perbaikan yang sama dengan build OpenJDK 161. Tetapi saya memilikinya untuk pengembangan sehingga itu tidak berarti banyak bagi saya.

Maka Anda perlu mengatur $JAVA_HOMEdi lingkungan sehingga berbagai skrip mengambil JDK yang tepat (misalnya Maven, JBoss dll).

Untuk kelengkapan, JDK versi 7 telah DILAKUKAN, bahkan dukungan publik JDK 8 dihentikan sejak September 2017 dan tidak akan mendapatkan pembaruan publik setelah September 2018.

Ondra Žižka
sumber
0

Gunakan wadah

Ini adalah jawaban yang berlaku secara universal tentang cara menjalankan <outdated>perangkat lunak yang dihapus pada <current>Ubuntu: kemas aplikasi Anda .

Misalnya, gunakan Docker dan gambar dasar Ubuntu yang lebih lama di mana perangkat lunak yang Anda cari masih tersedia / dikelola.

Ini juga bekerja sebaliknya; coba perangkat lunak pada distribusi Linux yang lebih baru atau bahkan lainnya di Ubuntu Anda yang saat ini berjalan.

Contoh untuk Java 7 menggunakan Ubuntu 14.04

  1. Instal Docker - versi gratis Docker CE baik-baik saja. Lihat misalnya https://docs.docker.com/install/linux/docker-ce/ubuntu/ atau gunakan docker.iopaket dalam versi Ubuntu terbaru yang dikirimkan.

  2. Di folder kosong, buat file 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"]
    

    Tambahkan lebih banyak paket dalam perintah itu jika Anda membutuhkannya.

  3. Di folder itu, jalankan:

    docker build -t gertvdijk/java7 .
  4. Jalankan perintah di dalam wadah sekali pakai menggunakan gambar Java 7 itu:

    Misalnya java -version:

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

    Keluaran:

    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. Secara opsional, buat pembungkus untuk kenyamanan.

    • Buat file /usr/local/bin/java7-in-dockerdengan konten:

      #!/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}" \
        $@
      

      Ini akan membuat direktori kerja saat ini tersedia di dalam wadah - bukan seluruh sistem file Anda, dan itu akan menyamar sebagai akun pengguna lokal Anda di namespace wadah.

    • Tandai sebagai executable:

      sudo chmod +x /usr/local/bin/java7-in-docker
  6. Jalankan Java 7 Anda secara transparan, seperti ini:

    java7-in-docker -jar relative/path/to/some.jar
gertvdijk
sumber
14,04 tidak dipertahankan lagi kecuali Anda membayar perawatan yang diperpanjang (hingga 2022).
Thorbjørn Ravn Andersen
-2

Cara mudah adalah:

Tambahkan baris ini ke /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

Kemudian perbarui apt dan instal. Anda mungkin perlu menurunkan versi tzdatapaket.

Setelah itu, saya akan merekomendasikan untuk mengomentari baris-baris itu dan memperbarui lagi untuk mencegah menginstal atau memperbarui paket-paket dari repositori itu (yang dapat menyebabkan perilaku yang tidak terduga).

Satu masalah adalah bahwa Anda perlu memegang paket-paket itu sehingga mereka tidak bisa dihapus ketika Anda memperbarui sistem Anda (khususnya tzdatapaket).

CATATAN : Gunakan metode ini sebagai pilihan terakhir, lebih suka yang lain yang memungkinkan Anda untuk memperbarui tanpa masalah.

lepe
sumber