Openjdk 7'yi Ubuntu 16.04 veya daha üstüne nasıl kurarım?


120

Ana sistemimi 16.04'e yükseltmek istiyorum ancak OpenJDK 7 gerektiren projeler üzerinde çalışıyorum.

Görünüşe göre önemsiz değil apt-get install openjdk-7-jdk. Havuzda sadece 8 ve 9 versiyonları listelenmiştir.

Birisi beni nasıl kuracağınıza dair talimatlara işaret edebilir mi?


Neden hala neden JDK 7'yi istediğinizi merak ediyorsanız, aynı durumdayım çünkü neo4j 2.1.6'nın Ubuntu 16.04 ile iyi oynamadığını düşünüyorum ve bunun yanlış olacağını görebildiğim tek şey JDK.
Sridhar Sarnobat,

Açıkça sistem JVM'niz olarak openjdk 7'ye mi ihtiyacınız var yoksa sadece bir Java 7 çalışma zamanına mı ihtiyacınız var? İkincisini Oracle arşivlerinden indirebilirsiniz.
Thorbjørn Ravn Andersen

Yanıtlar:


146

Güvenlik uyarısı

Aşağıda belirtilen PPA’daki paketler, Java’ya güvenlik ekleriyle güncellenmez. Üretimde kullanmayın; bunun yerine alternatif cevaplara bakınız.

Yazma sırasında, OpenJDK 7 için son yükleme 7u95 sürümüyle '2016-04-22' yapıldı ve hala Ubuntu 14.04'ün 7u181'e güncellendiği halde 'en son' olarak kullanılabilir .


GÜNCELLEME: BU ÇOK BUNLARIN EN ÇOK HİÇBİR OLDUĞUNDAN EN ÇOK HİÇBİR GERÇEKLEŞTİRİLMEMEKTEDİR.

Benim için çalışan aşağıdaki talimatları buldum:

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

Bu, “OpenJDK yüklemeleri için PPA (sınırlı)” ek bir paket deposu olarak tanımlar, bilgilerinizi günceller ve paketi bağımlılıkları ile birlikte yükler (bu havuzdan).


13
Eğer yanlışlıkla önce openjdk-8'i kurduysanız (benim yaptığım gibi), sonra bu cevabı takip ettikten sonra sudo update-java-alternativesopenjdk-7'yi varsayılan yapmak için yapmanız gerekir .
Rian Sanderson

4
FYI: Bu şu anda
10'da

19
-1 çünkü bu PPA tamamen güncel değil ve birçok önemli güvenlik yamasını yok sayıyor. Bu yüklü olması tamamen kabul edilemez, imo.
gertvdijk

3
Ayrıca 17.04 için çalışmıyor.
Colin Harrington,

2
-1 ayrıca, önerilen KKA'nın Sınırlı olduğu ve güncel tutulmadığı gibi.
sınırlayıcı

65

Düzenleme 22-Temmuz-2019 : Bu cevap şu anda çalışmıyor. Aşağıda referans verilen JDK paketleri artık Debian Experimental'de mevcut değildir. Her durumda, daha yeni güvenlik güncellemeleri içeren Ubuntu Trusty paketlerinin gerisinde kaldılar. Bu çözülene kadar diğer cevaplara bakınız (üzgünüm, ETA yok).


Openjdk-r / ppa'nın sağlayıcısı, 7u95-2.6.4-3 sürümünün ötesinde openjdk-7 paketini güncelleyecek gibi görünmüyor. Bu paketin açıklaması "Debian GNU / Linux için Birincil Arşivdeki debian deneyinden kopyalandı", bununla nasıl başa çıkılacağına dair bize bir ipucu veriyor.

Seçenek 1: Manuel Kurulum

  1. Mimarinize uygun paketleri indirin:
    (çoğu kullanıcı için bu 64bit ise amd64 veya 32bit Ubuntu kurulu ise i386 demektir)

  2. (Aşağıdakileri kullanarak paketleri kurmayı deneyin) dpkg:

    Ubuntu 17.10 ve önceki sürümler:

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

    Ubuntu 18.04 ve üstü:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
  3. Çıkışını kontrol et dpkg. Bağımlılık problemleri varsa - ki bu muhtemelen - aşağıdakileri göreceksiniz (mimariniz ile birlikte amd64 ile değiştirilmiş):

    İşleme sırasında hatalarla karşılaşıldı:
    OpenJDK-7-JRE: amd64'tür
    OpenJDK-7-jre-başsız: amd64
    OpenJDK-7-JDK: amd64'tür

    Bağımlılık sorunu olmadıysa, harika, işiniz bitmiştir, # 4'e geçin. Aksi takdirde, bazı bağımlılık sorunlarını çözmeniz gerekirse, bununla ilgilenilir:

    sudo apt install -f

    Dikkat edin, bağımlılıkları dpkgçözdükten sonra tekrar çalıştırmaya gerek yoktur apt. Openjdk paketlerinin kurulumunu otomatik olarak tamamlayacaktır.

  4. Java alternatiflerini güncelleyin. Yüklü tüm java sürümlerini ile görüntüleyebilirsiniz update-java-alternatives --list. OpenJDK Java 1.7'yi etkinleştirmek için aşağıdakileri çalıştırın:

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

    IcedTeaPlugin.soEklentinin kullanılamamasıyla ilgili bir hata görebilirsiniz . Bu JDK ile çalışan geliştiriciler için gerçek bir endişe değil.

  5. Java'nın çalıştığını doğrulayın:

    java -version

    hangi benzer bir şey çıktı gerekir:

    java sürümü "1.7.0_161"
    OpenJDK Çalışma Zamanı Ortamı (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Sunucu VM (yapı 24.161-b01, karışık mod)

Seçenek 2: Otomatik Kurulum (güncellemeler dahil apt)

Sabitleme , openjdk-7-jdk ve bağımlılıklarını Debian depolarından kurmak ve güncellemek için kullanılabilir.

  1. aptYalnızca bizi ilgilendiren paketleri dikkate almasını söyleyen bir sabitleme dosyası oluşturun (kesinlikle tüm Ubuntu dağıtımımızın Debian deneysel paketleriyle "yükseltilmesini" istemiyoruz).

    /etc/apt/preferences.d/debianAşağıdaki içerikle dosya oluşturun . Süper kullanıcı ayrıcalıkları gerekir, bu nedenle birini kullanacağız sudo vim, sudo nano, gksudo geditvb

    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

    Ubuntu 17.10 ve önceki sürümler için, aşağıdakini de ekleyin (ve alttaki nota bakın):

    Package: libfontconfig1
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: fontconfig-config
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
  2. Debian anahtarlığını yükleyin:

    sudo apt install debian-archive-keyring

    Not: Bu debian anahtarlığını eklemenin en basit yöntemi olsa da, güncel olmayabilir. apt update4. adımda çalışırken aşağıdaki gibi çıktı olup olmadığını kontrol edin :

    W: GPG hatası: http://cdn-fastly.deb.debian.org/debian experimental InRelease: Açık anahtar olmadığından aşağıdaki imzalar doğrulanamadı: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E: 'http://httpredir.debian.org/debian deneysel InRelease' deposu imzalanmadı.

    Bu hatayı görürseniz, gerekli tuşları ile manuel olarak ekleyin:

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

    nerede 8B48AD6246925553ve 7638D0442B90D010uyarı mesajında bakın pubkeys eşleşmesi gerekir.

  3. Gerekli depoları ekleyin:

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

    Neden kararlı bir Debian deposu kullanmıyorsunuz? Debian kararlı ile karşılanamaz bağımlılıklarla karşılaşacaksınız. Deneysel (openjdk-7 için) ve sid (libjpeg62-turbo, libfontconfig1 ve fontconfig-config için) havuzları bağımlılık sürümleriyle daha esnekdir.

  4. aptÖnbelleği güncelle (Debian'ın paket listeleri büyük olduğundan bunun biraz zaman alacağını bekleyin):

    sudo apt update
  5. Openjdk-7-jdk'i yükleyin:

    sudo apt install openjdk-7-jdk
  6. Java alternatiflerini güncelleyin. Yüklü tüm java sürümlerini ile görüntüleyebilirsiniz update-java-alternatives --list. OpenJDK Java 1.7'yi etkinleştirmek için aşağıdakileri çalıştırın:

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

    IcedTeaPlugin.soEklentinin kullanılamamasıyla ilgili bir hata görebilirsiniz . Bu JDK ile çalışan geliştiriciler için gerçek bir endişe değil.

  7. Java'nın çalıştığını doğrulayın:

    java -version

    hangi benzer bir şey çıktı gerekir:

    java sürümü "1.7.0_161"
    OpenJDK Çalışma Zamanı Ortamı (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Sunucu VM (yapı 24.161-b01, karışık mod)

fontconfig notları

libfontconfig1ve fontconfig-configUbuntu 17.10 ve önceki sürümlerinde 2.12 veya üzeri bir sürüme yükseltilmelidir. Debian'dan gelen güncelleme paketleri Ubuntu'nun kişiselleştirmelerini içermiyor, bu yüzden bazı uygulamalar kurulu bu paketlerle çirkin yazı tipleri gösteriyor; örneğin, Charles Web Hata Ayıklama Proxy'si. Kullandığınız programlara bağlı olarak, bu sorundan etkilenebilir veya etkilenmeyebilirsiniz.


İlginç bir cevap, lütfen bu paketi otomatik olarak güncel tutmanın bir yolunu bulursanız güncelleyin.
J.Serra

Jdk 7'yi ubuntu 16.04'e yüklemeyi denedim ve çalışmasını sağlamanın tek yolu bu. Teşekkür ederim!
bağlantı

2
@ J.Serra Cevap otomatik güncelleme yöntemiyle yeniden düzenlendi.
MDMower

mükemmel cevaplanan özellikle otomatik yöntem son derece takdir edilir! Anlamaya ve yazmaya zaman ayırdığınız için teşekkürler!
steadfasterX

1
Otomatik yöntem çoğunlukla benim için çalıştı, ama tamamen kalıcı değil. /Etc/apt/preferences.d/debian'a (libjpeg62-turbo'ya ek olarak) iki paket daha eklemeliydim: libfontconfig1 ve fontconfig-config
comodoro


0

Java 7'yi Ubuntu 16.04, Ubuntu 17.04'e yükleyin.

OpenJDK üzerinde performans üstünlüğü sağladığı için Oracle Java'yı kurmanız önerilir . Bu sebeple alternatif göndermek istiyorum. Oracle Java'yı kurmak istiyorsanız, PPA'dan yüklemek için terminalde aşağıdaki komutları çalıştırın.

  1. Gerekli depoları ekleyin:

    sudo add-apt-repository ppa:webupd8team/java
  2. aptÖnbelleği güncelle ve oracle-java7'yi yükle :

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

    Yükleme işlemi sırasında Oracle License sözleşmesini kabul etmeniz gerekir . Kurulduktan sonra JAVA_HOME gibi Java ortam değişkenlerini ayarlamamız gerekir.

  3. Java ortam değişkenlerini düzeltin.

    sudo apt install oracle-java7-set-default
    source /etc/profile
  4. Java'nın çalıştığını doğrulayın:

    java -version

    hangi benzer bir şey çıktı gerekir:

    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
Kahraman yükleyici artık çalışmıyor Bağlanıyor download.oracle.com (download.oracle.com) | HTTP isteği gönderildi, yanıt bekleniyor ... 404 Bulunamadı
özerklik

Oracle JDK için, şirket JDK 7'ye kamu desteği sunmuyor (ücretli destek sunuyorlar). Sanırım apt-getyükleyiciyi var olmayan bir sayfadan almaya çalışıyor. - JDK 7'ye ihtiyacınız varsa, yükleyicileri Arşiv web sitesinden indirebilirsiniz: oracle.com/technetwork/java/javase/downloads/…
Jaime

0

Oracle JDK alternatifi:

Depolarla uğraşmaktan kaçınmak istedim çünkü 7, 8 ve 9 arasında geçiş yapıyorum, bu yüzden OpenJDK yerine Oracle JDK ile bitirdim. Konumundan indirildi resmi sitede . En son 80 sürümünün OpenJDK'nin inşa 161 sürümüyle aynı düzeltmeleri içerip içermediğinden emin değilim. Ancak geliştirme için elimde, bu zaten benim için çok önemli değil.

Öyleyse $JAVA_HOME, çeşitli komut dosyalarının doğru JDK'yı (örn. Maven, JBoss vb.) Alabilmesi için ortama ayarlamanız gerekir .

Tamamlanması için, JDK sürüm 7 EOL''dü, hatta JDK 8 halk desteği Eylül 2017'den bu yana sonlandırılıyor ve Eylül 2018'den sonra hiçbir kamu güncellemesi almayacak.


0

Kapları kullanın

Bu, Ubuntu'da <outdated>kaldırılan yazılımın nasıl çalıştırılacağına dair evrensel olarak geçerli bir cevaptır <current>: uygulamanızı konteynerize edin .

Örneğin, Docker'ı ve aradığınız yazılımın hala kullanılabilir / bakımının yapıldığı daha eski bir Ubuntu temel görüntüsünü kullanın.

Aynı zamanda tam tersi şekilde çalışır; Şu anda çalışmakta olan kararlı Ubuntu'nuzdaki yazılımı daha yeni veya hatta başka bir Linux dağıtımında deneyin.

Ubuntu 14.04 kullanarak Java 7 için örnek

  1. Docker'ı yükleyin - Docker CE ücretsiz sürümü iyi. Örneğin, https://docs.docker.com/install/linux/docker-ce/ubuntu/ adresine bakın veya docker.iogönderilen en son Ubuntu sürümlerinde paketi kullanın .

  2. Boş bir klasörde bir dosya oluşturun 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"]

    Gerekirse bu komuta daha fazla paket ekleyin.

  3. Bu klasörde şunu çalıştırın:

    docker build -t gertvdijk/java7 .
  4. Bu Java 7 görüntüsünü kullanarak tek kullanımlık kabın içinde bir komut çalıştırın:

    Örneğin java -version:

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

    Çıktı:

    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. İsteğe bağlı olarak, kolaylık sağlamak için bir sarıcı oluşturun.

    • /usr/local/bin/java7-in-dockerİçeriği olan bir dosya oluşturun :

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

      Bu, geçerli çalışma dizinini tüm dosya sisteminizde değil, kapta kullanılabilir duruma getirir ve yerel kullanıcı hesabınızı kapsayıcı ad alanında taklit eder.

    • Çalıştırılabilir olarak işaretle:

      sudo chmod +x /usr/local/bin/java7-in-docker
  6. Java 7'nizi şeffaf bir şekilde çalıştırın:

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

Artık (2022'ye kadar) uzun bakım ücreti ödemezseniz, 14.04 artık korunmaz.
Thorbjørn Ravn Andersen

-2

Kolay bir yol:

Bu satırları şuraya ekle /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

Sonra apt güncelleyin ve kurun. Muhtemelen tzdatapaketi düşürmeniz gerekecektir .

Bundan sonra, bu havuzdan paketlerin yüklenmesini veya güncellenmesini önlemek için bu satırları ve apt güncellemelerini tekrar yorumlamanızı öneririm (bu beklenmeyen davranışlara yol açabilir).

Bir sorun, sisteminizi güncellediğinizde (özel tzdatapaket) kaldırılmaması için bu paketleri almanız gerektiğidir .

NOT : Bu yöntemi son çare olarak kullanın, sorunsuz bir şekilde güncelleme yapmanıza izin veren başkalarını tercih edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.