Cài đặt Java tự động (Với tùy chọn im lặng)


104

Tôi đang cố gắng cài đặt Java thông qua apt-get.

Tôi đã tìm thấy PPA này của Trình cài đặt Java , tuy nhiên, khi tôi thêm kho lưu trữ, cập nhật và sau đó ban hành lệnh apt-get install -y, trình cài đặt cho java tiếp quản và nó hiện ra một tùy chọn cấu hình.

Tôi hy vọng có thể cài đặt nó mà không cần bất kỳ sự can thiệp hay nhấn nào của bàn phím vì tôi đang tạo các tập lệnh xây dựng và triển khai cho các phiên bản EC2 của mình, nó sẽ tự động cài đặt tất cả các gói được gắn thẻ mà nó cần.

Có lựa chọn nào khác không?

Câu trả lời:


147

Nếu OpenJDK / OpenJRE hoạt động tốt cho bạn, tôi khuyên bạn nên sử dụng gói đó thay vì như được đề xuất bởi @SAM. Tuy nhiên, một số phần mềm thực sự yêu cầu JDK / JRE của Oracle. Câu trả lời này là làm thế nào để tắt câu hỏi giấy phép với gói Oracle từ PPA.

Đầu tiên, hãy nhận ra câu hỏi được hỏi là một tính năng của gói, được tạo bởi nhà phát triển.

oracle-java7-installer (7u7-0~webupd8~4) maverick; urgency=medium

  * removed cookie file use or else the PPA stays disabled
  * request the user to accept the Oracle license before installation
 -- Alin Andrei <webupd8@gmail.com>   Tue, 04 Sep 2012 14:18:29 +0200

Như @Nate đã chỉ ra trong câu trả lời của anh ấy, nên có một lựa chọn im lặng. Và có. Làm điều này trước khi cài đặt nó:

$ echo debconf shared/accepted-oracle-license-v1-1 select true | \
  sudo debconf-set-selections
$ echo debconf shared/accepted-oracle-license-v1-1 seen true | \
  sudo debconf-set-selections

Điều này đặt giá trị của khóa debconf thành true, nhưng cũng đánh dấu nó như người dùng nhìn thấy. Bây giờ câu hỏi này không nên xuất hiện!

Làm thế nào tôi tìm thấy điều này?

Trong nguồn của gói, tôi đã theo dõi điều này trong oracle-java7-installer.preinsttệp:

license=oracle-license-v1-1

# snip

db_get shared/accepted-$license
if [ "$RET" = "true" ]; then
    echo "$license license has already been accepted" >&2
    exit 0
fi

Ràng, nó sử dụng giá trị debconf cho chìa khóa shared/accepted-oracle-license-v1-1để kiểm tra xem người dùng đã chấp nhận giấy phép. Nếu có, tập lệnh sẽ thoát một cách duyên dáng và cho phép cài đặt tiếp tục mà không hỏi bạn câu hỏi. Bây giờ chúng ta chỉ nên nói với debconf rằng bạn đã chấp nhận Giấy phép Oracle 1.1.

Vui lòng tham khảo trang hướng dẫn để debconf-set-selectionsbiết thêm chi tiết, nhưng đây là ví dụ cho vấn đề của bạn và hoạt động tương tự cho các gói khác. Bạn có khóa nào khác trên hệ thống của mình trong cơ sở dữ liệu của debconf? Cài đặt debconf-utilsvà làm

$ sudo debconf-get-selections

Sau đó, grep để có thêm khóa bạn cần thiết lập trong cài đặt tự động. Đây là cách linh hoạt hơn so với sử dụng -yvới apt-getvì nó mang đến cho bạn cơ hội để thiết lập khác hơn là thiết lập mặc định về thời gian cài đặt.


9
Câu trả lời tuyệt vời. :)
Layke

3
Câu trả lời tuyệt vời. Hoạt động từ một kịch bản shell quá.
Derek


Không có trích dẫn là cần thiết cho tiếng vang của các lệnh chấp nhận giấy phép?
David

1
@David Không dành cho trường hợp này; nếu bạn thêm chúng, đầu ra của echonó sẽ giống hệt nhau.
gertvdijk

55

Cài đặt im lặng Java 6/7/8/9 bằng PPA của nhóm WebUpd8

sudo apt-get install -y python-software-properties debconf-utils
sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | sudo debconf-set-selections
sudo apt-get install -y oracle-java8-installer

@gertvdijk câu trả lời không hoạt động với tôi trên Ubuntu 14.04 & 14.10


1
hoạt động tuyệt vời vào ngày 16.04
pneumatics

Điều này không còn hiệu quả nữa
Ahmed Mostafa

@AhmedMostafa Bạn có thể cho người khác biết bạn đã thử nó ở đâu không.
Rahul Thakur

1
Làm việc cho oracle-java9-installerquá.
Kohányi Róbert

1
công việc này hoàn hảo với hình ảnh dựa trên google / cloud-sdk
Xin Meng

13

Hỗ trợ câu trả lời @gertvdijk là mô tả trong bài đăng trên blog gốc về PPA của webupd8.

Cập nhật 2: trình cài đặt hiện yêu cầu bạn chấp nhận giấy phép Oracle trước khi cài đặt bắt đầu. Điều này chỉ được yêu cầu một lần. Nếu vì lý do nào đó bạn cần cài đặt tự động, bạn có thể chạy lệnh sau để tự động chấp nhận giấy phép Oracle:

sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | \
sudo /usr/bin/debconf-set-selections

Đó là dòng phép thuật tôi cần cho bản cài đặt Oracle Java thầm lặng của tôi - cảm ơn @Hosam
Phantomwhale

Bạn được chào đón @Ph Phantomwhale
Hosam Aly

Tôi có nhầm không, hoặc có một ký tự "` "bị thiếu / thêm trong câu trả lời của bạn?
David

11

Tôi đã xác minh câu sau đây cho tôi bằng cách sử dụng docker ubfox16.04LTS.

RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:webupd8team/java && apt-get update

RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 seen true" | debconf-set-selections

RUN apt-get install -y oracle-java8-installer

Tôi đã thử nó và nó không hoạt động.
Ahmed Mostafa

Xác nhận làm việc cho tôi trên docker-ce 18.05 trên Kubfox 18.04: D cài đặt trong một i386/ubuntu:18.04container.
BeepDog

2

Để cài đặt java im lặng, bạn có thể thử open-jdk:

sudo apt-get install -y openjdk-7-jdk

Ngoài ra, hãy thử điều này để biết thêm các gói / tiện ích mở rộng jdk ...

sudo apt-cache tìm kiếm openjdk


Giải pháp này đã làm việc tuyệt vời. sudo apt-get install -y openjdk-7-jdk
Layke


0

Đây là một đoạn trích từ Dockerfile mà tôi đã sử dụng để xây dựng thành công hình ảnh docker dựa trên Debian:

( Tham khảo )

RUN apt-get update \
    && apt-get upgrade \
    && apt-get install -y gnupg

RUN echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list
RUN echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
RUN apt-get update
RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | sudo debconf-set-selections
RUN apt-get install -y oracle-java8-installer \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && R CMD javareconf
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.