Làm cách nào để cài đặt openjdk 7 trên Ubuntu 16.04 trở lên?


120

Tôi muốn nâng cấp hệ thống chính của mình lên 16.04, nhưng tôi làm việc trên các dự án yêu cầu OpenJDK 7.

Rõ ràng nó không có sẵn từ một tầm thường apt-get install openjdk-7-jdk. Chỉ có phiên bản 8 và 9 được liệt kê trong kho lưu trữ.

Bất cứ ai có thể chỉ cho tôi hướng dẫn về cách cài đặt nó?


Trong trường hợp bất kỳ ai thắc mắc tại sao bạn vẫn muốn JDK 7, tôi cũng gặp tình huống tương tự vì tôi nghĩ neo4j 2.1.6 không chơi tốt với Ubuntu 16.04 và điều duy nhất tôi có thể thấy có thể sai là JDK.
Sridhar Sarnobat

Bạn có yêu cầu rõ ràng openjdk 7 như JVM hệ thống của bạn không hoặc bạn chỉ cần một thời gian chạy Java 7. Bạn có thể tải xuống cái sau từ kho lưu trữ của Oracle.
Thorbjørn Ravn Andersen

Câu trả lời:


146

Cảnh báo an ninh

Các gói trong PPA được đề cập dưới đây không được cập nhật với các bản vá bảo mật cho Java. Không sử dụng trong sản xuất; xem câu trả lời thay thế.

Tại thời điểm viết bài, lần tải lên cuối cùng cho OpenJDK 7 đã được thực hiện '2016-04-22' với phiên bản 7u95 và vẫn có sẵn là 'mới nhất', trong đó Ubuntu 14.04 đã được cập nhật lên 7u181 .


CẬP NHẬT: ALTHOUGH ĐÂY LÀ BẤT CỨ ĐÁP ÁN TRẢ LỜI NÀO CÓ VẤN ĐỀ NHẤT KHÔNG PHẢI LÀ NGƯỜI BẠN MUỐN SỬ DỤNG NĂM 2018 ĐỂ KIẾM ĐƯỢC CẬP NHẬT BẢO MẬT B PPNG PPA NÀY.

Tôi tìm thấy các hướng dẫn sau đây làm việc cho tôi:

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

Điều này xác định Nhóm PPA dành cho tải lên OpenJDK (bị hạn chế) là một gói bổ sung, cập nhật thông tin của bạn và cài đặt gói với các phụ thuộc của nó (từ kho lưu trữ đó).


13
Nếu bạn đã cài đặt nhầm openjdk-8 trước tiên (như tôi đã làm) thì sau khi làm theo câu trả lời này, bạn sẽ cần phải làm sudo update-java-alternativesnhư vậy để bạn có thể đặt openjdk-7 thành mặc định.
Rian Sanderson

4
FYI: Điều này hiện không hoạt động cho 16.10
quang vòng

19
-1 vì PPA này hoàn toàn lỗi thời và bỏ qua nhiều bản vá bảo mật quan trọng. Hoàn toàn không thể chấp nhận để cài đặt này, imo.
gertvdijk

3
Cũng không hoạt động cho 17.04.
Colin Harrington

2
-1 cũng như PPA đề xuất bị hạn chế và không được cập nhật.
dấu phân cách

65

Chỉnh sửa 22-tháng 7 năm 2019 : Câu trả lời này hiện không hoạt động. Các gói JDK được tham chiếu bên dưới không còn khả dụng trên Debian Experimental. Trong mọi trường hợp, họ bị tụt lại phía sau các gói của Ubuntu Trusty có chứa các bản cập nhật bảo mật gần đây hơn. Vui lòng tham khảo các câu trả lời khác cho đến khi điều này có thể được giải quyết (xin lỗi, không có ETA).


Có vẻ như người duy trì openjdk-r / ppa sẽ cập nhật gói openjdk-7 ngoài phiên bản 7u95-2.6.4-3. Mô tả của gói đó "Được sao chép từ thử nghiệm debian trong Lưu trữ chính cho Debian GNU / Linux" cho chúng ta một gợi ý về cách tự xử lý việc này.

Tùy chọn 1: Cài đặt thủ công

  1. Tải xuống các gói dành cho kiến ​​trúc của bạn:
    (đối với hầu hết người dùng, điều này có nghĩa là amd64 nếu 64 bit hoặc i386 nếu cài đặt Ubuntu 32 bit)

  2. (Cố gắng) cài đặt các gói bằng cách sử dụng dpkg:

    Ubuntu 17.10 trở về trước:

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

    Ubuntu 18.04 trở lên:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
  3. Kiểm tra đầu ra từ dpkg. Nếu có vấn đề phụ thuộc - có khả năng - bạn sẽ thấy những điều sau đây (với kiến ​​trúc của bạn được thay thế cho amd64):

    Đã bắt gặp các lỗi trong quá trình xử lí thông tin:
    openjdk-7-jre: amd64
    openjdk-7-jre-không đầu: amd64
    openjdk-7-jdk: amd64

    Nếu không có vấn đề phụ thuộc, thật tuyệt, bạn đã hoàn thành, bỏ qua # 4. Mặt khác, nếu bạn cần giải quyết một số vấn đề phụ thuộc, việc này được xử lý với:

    sudo apt install -f

    Lưu ý, không cần phải chạy lại dpkgsau khi để aptgiải quyết phụ thuộc. Nó sẽ tự động hoàn tất cài đặt các gói openjdk.

  4. Cập nhật các lựa chọn thay thế java. Bạn có thể xem tất cả các phiên bản java được cài đặt với update-java-alternatives --list. Để kích hoạt OpenJDK Java 1.7, hãy chạy:

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

    Bạn có thể nhận thấy một lỗi về IcedTeaPlugin.soplugin không có sẵn. Đây không phải là mối quan tâm thực sự đối với các nhà phát triển làm việc với JDK.

  5. Xác minh java đang hoạt động:

    java -version

    mà sẽ xuất ra một cái gì đó tương tự như:

    phiên bản java "1.7.0_161"
    Môi trường thời gian chạy OpenJDK (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Server VM (bản dựng 24.161-b01, chế độ hỗn hợp)

Tùy chọn 2: Cài đặt tự động (bao gồm các bản cập nhật với apt)

Ghim có thể được sử dụng để cài đặt và cập nhật openjdk-7-jdk và các phụ thuộc của nó từ kho Debian.

  1. Tạo một tệp ghim yêu aptcầu chỉ xem xét các gói mà chúng tôi quan tâm (chắc chắn chúng tôi không muốn toàn bộ bản phân phối Ubuntu của mình được "nâng cấp" với các gói thử nghiệm Debian).

    Tạo tập tin /etc/apt/preferences.d/debianvới nội dung dưới đây. Bạn sẽ cần phải đặc quyền superuser, vì vậy sử dụng một trong sudo vim, sudo nano, gksudo geditvv

    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

    Đối với Ubuntu 17.10 trở về trước, hãy thêm phần sau (và xem ghi chú ở phía dưới):

    Package: libfontconfig1
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: fontconfig-config
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
  2. Cài đặt khóa Debian:

    sudo apt install debian-archive-keyring

    Lưu ý: mặc dù đây là phương pháp đơn giản nhất để thêm khóa debian, nhưng nó có thể không cập nhật. Kiểm tra đầu ra như sau khi chạy apt updateở bước 4:

    Lỗi W: GPG: http://cdn-fastly.deb.debian.org/debian InRelease: Các chữ ký sau đây không thể được xác minh vì khóa công khai không khả dụng: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E: Kho lưu trữ 'http://httpredir.debian.org/debian thử nghiệm InRelease' không được ký.

    Nếu bạn thấy lỗi này, sau đó thêm thủ công các phím cần thiết với:

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

    nơi 8B48AD62469255537638D0442B90D010nên phù hợp với các pubkey bạn nhìn thấy trong thông báo cảnh báo.

  3. Thêm các kho cần thiết:

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

    Tại sao không sử dụng kho lưu trữ Debian ổn định? Bạn sẽ gặp phải sự phụ thuộc không thỏa đáng với Debian ổn định. Các kho lưu trữ thử nghiệm (cho openjdk-7) và sid (đối với libjpeg62-turbo, libfontconfig1 và fontconfig-config) dễ sử dụng hơn với các phiên bản phụ thuộc.

  4. Cập nhật aptbộ đệm (hy vọng sẽ mất một chút thời gian vì danh sách gói của Debian rất lớn):

    sudo apt update
  5. Cài đặt openjdk-7-jdk:

    sudo apt install openjdk-7-jdk
  6. Cập nhật các lựa chọn thay thế java. Bạn có thể xem tất cả các phiên bản java được cài đặt với update-java-alternatives --list. Để kích hoạt OpenJDK Java 1.7, hãy chạy:

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

    Bạn có thể nhận thấy một lỗi về IcedTeaPlugin.soplugin không có sẵn. Đây không phải là mối quan tâm thực sự đối với các nhà phát triển làm việc với JDK.

  7. Xác minh java đang hoạt động:

    java -version

    mà sẽ xuất ra một cái gì đó tương tự như:

    phiên bản java "1.7.0_161"
    Môi trường thời gian chạy OpenJDK (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Server VM (bản dựng 24.161-b01, chế độ hỗn hợp)

ghi chú fontconfig

libfontconfig1fontconfig-configphải được nâng cấp lên 2.12 trở lên trên Ubuntu 17.10 trở về trước. Các gói cập nhật từ Debian không chứa các tùy chỉnh của Ubuntu, vì vậy một số ứng dụng hiển thị phông chữ xấu với các gói này được cài đặt; ví dụ: Proxy gỡ lỗi Charles Web. Tùy thuộc vào các chương trình bạn sử dụng, bạn có thể hoặc không bị ảnh hưởng bởi vấn đề này.


Câu trả lời thú vị, vui lòng cập nhật nó nếu bạn tìm cách giữ cho gói này được cập nhật tự động.
J.Serra

Tôi mới thử cài đặt jdk 7 trên Ubuntu 16.04 và đây là cách duy nhất tôi quản lý để nó hoạt động. Cảm ơn bạn!
liên kết

2
@ J.Serra Trả lời sửa đổi với phương pháp cập nhật tự động.
MDMower

hoàn hảo trả lời đặc biệt là phương pháp tự động được đánh giá cao! cảm ơn vì đã dành thời gian để tìm hiểu và viết ra!
kiên định

1
Phương pháp tự động chủ yếu làm việc cho tôi, nhưng cũng không hoàn toàn vĩnh viễn. Tôi đã phải thêm hai gói nữa vào /etc/apt/preferences.d/debian (ngoài libjpeg62-turbo): libfontconfig1 và fontconfig-config
comodoro


0

Cài đặt Java 7 trên Ubuntu 16.04, Ubuntu 17.04

Bạn nên cài đặt Oracle Java , vì nó có lợi thế hơn so với OpenJDK . Vì lý do đó tôi muốn đăng một sự thay thế. Nếu bạn muốn cài đặt Oracle Java, hãy chạy các lệnh sau trong terminal để cài đặt nó từ PPA.

  1. Thêm các kho cần thiết:

    sudo add-apt-repository ppa:webupd8team/java
  2. Cập nhật aptbộ đệm và cài đặt oracle-java7 :

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

    Trong quá trình cài đặt, bạn sẽ cần chấp nhận thỏa thuận Cấp phép Oracle . Sau khi cài đặt, chúng ta cần đặt các biến môi trường Java như JAVA_HOME

  3. Các biến môi trường Java chính xác.

    sudo apt install oracle-java7-set-default
    source /etc/profile
  4. Xác minh java đang hoạt động:

    java -version

    mà sẽ xuất ra một cái gì đó tương tự như:

    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
Trình cài đặt oracle không còn hoạt động Kết nối với download.oracle.com (download.oracle.com) | 184.51.150.144 |: 80 ... được kết nối. Yêu cầu HTTP được gửi, đang chờ phản hồi ... 404 Không tìm thấy
tự chủ

Đối với Oracle JDK, công ty không cung cấp hỗ trợ công khai cho JDK 7 (họ cung cấp hỗ trợ có trả tiền). Tôi nghĩ rằng họ apt-getđang cố gắng để có được trình cài đặt từ một trang không tồn tại. - Nếu bạn cần JDK 7, bạn có thể tải xuống các trình cài đặt từ trang web Lưu trữ: oracle.com/technetwork/java/javase/doads/ Kẻ
Jaime

0

Thay thế JDK của Oracle:

Tôi muốn tránh những nỗ lực với các kho lưu trữ vì tôi chuyển đổi giữa 7, 8 và 9, vì vậy tôi đã kết thúc với Oracle JDK chứ không phải OpenJDK. Tải về từ trang web chính thức . Tôi không chắc chắn về việc bản dựng 80 mới nhất có chứa các bản sửa lỗi tương tự như bản dựng 161 của OpenJDK hay không. Nhưng tôi có nó để phát triển nên điều đó không có ý nghĩa gì với tôi.

Sau đó, bạn cần thiết lập $JAVA_HOMEtrong môi trường để các tập lệnh khác nhau nhận được JDK phù hợp (ví dụ: Maven, JBoss, v.v.).

Để hoàn chỉnh, JDK phiên bản 7 được EOL'ed, thậm chí JDK 8 hỗ trợ cộng đồng đã được chấm dứt kể từ tháng chín năm 2017 và sẽ không nhận được bản cập nhật nào sau tháng 9 năm 2018.


0

Sử dụng container

Đây là câu trả lời hợp lệ trên toàn cầu về cách chạy <outdated>phần mềm đã gỡ bỏ trên <current>Ubuntu: chứa ứng dụng của bạn .

Ví dụ: sử dụng Docker và hình ảnh cơ sở Ubuntu cũ hơn trong đó phần mềm bạn đang tìm kiếm vẫn có sẵn / được duy trì.

Nó cũng hoạt động theo cách khác; dùng thử phần mềm trên bản phân phối Linux mới hơn hoặc thậm chí khác trên Ubuntu đang chạy ổn định của bạn.

Ví dụ cho Java 7 bằng Ubuntu 14.04

  1. Cài đặt Docker - Docker phiên bản miễn phí CE là tốt. Xem ví dụ https://docs.docker.com/install/linux/docker-ce/ubfox/ hoặc sử dụng docker.iogói trong các phiên bản Ubuntu gần đây được giao.

  2. Trong một thư mục trống, tạo một tệp 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"]

    Thêm nhiều gói trong lệnh đó nếu bạn cần.

  3. Trong thư mục đó, hãy chạy:

    docker build -t gertvdijk/java7 .
  4. Chạy một lệnh bên trong một thùng chứa sử dụng một lần bằng hình ảnh Java 7 đó:

    ví dụ như java -version:

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

    Đầu ra:

    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. Tùy chọn, tạo một trình bao bọc cho thuận tiện.

    • Tạo một tệp /usr/local/bin/java7-in-dockercó nội dung:

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

      Điều này sẽ làm cho thư mục làm việc hiện tại có sẵn bên trong container - không phải toàn bộ hệ thống tệp của bạn và nó sẽ mạo danh tài khoản người dùng cục bộ của bạn trong không gian tên của container.

    • Đánh dấu nó là thực thi:

      sudo chmod +x /usr/local/bin/java7-in-docker
  6. Chạy Java 7 của bạn một cách trong suốt, như thế này:

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

14.04 không được duy trì nữa trừ khi bạn trả tiền bảo trì kéo dài (đến năm 2022).
Thorbjørn Ravn Andersen

-2

Một cách dễ dàng là:

Thêm các dòng này vào /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

Sau đó cập nhật apt và cài đặt. Bạn có thể sẽ cần phải hạ cấp tzdatagói.

Sau đó, tôi khuyên bạn nên bình luận lại các dòng đó và cập nhật apt một lần nữa để ngăn cài đặt hoặc cập nhật các gói từ kho lưu trữ đó (có thể dẫn đến hành vi không mong muốn).

Một vấn đề là bạn cần giữ các gói đó để chúng không bị xóa khi bạn cập nhật hệ thống của mình ( tzdatagói đặc biệt ).

LƯU Ý : Sử dụng phương pháp này như là phương sách cuối cùng, thích bất kỳ phương pháp nào khác sẽ cho phép bạn cập nhật mà không gặp sự cố.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.