Menginstal Java Secara Otomatis (Dengan Opsi Senyap)

104

Saya mencoba menginstal Java melalui apt-get.

Saya menemukan PPA Penginstal Java ini , namun ketika saya menambahkan repositori, memperbarui dan kemudian mengeluarkan perintah apt-get install -y, installer untuk java mengambil alih dan muncul opsi konfigurasi.

Saya berharap dapat menginstalnya tanpa intervensi atau menekan keyboard karena saya membuat skrip build dan deploy untuk instance EC2 saya yang secara otomatis akan menginstal semua paket tag yang diperlukan.

Apakah ada opsi lain?

Layke
sumber

Jawaban:

147

Jika OpenJDK / OpenJRE berfungsi dengan baik untuk Anda, saya sarankan menggunakan paket itu sebagai gantinya seperti yang disarankan oleh @SAM. Namun, beberapa perangkat lunak benar-benar membutuhkan JDK / JRE Oracle. Jawaban ini adalah bagaimana membungkam pertanyaan lisensi dengan paket Oracle dari PPA.

Pertama, mari kita kenali pertanyaan yang diajukan adalah fitur dari paket, yang dibuat oleh pengembang.

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

Seperti yang ditunjukkan @Nate dalam jawabannya, harus ada opsi diam. Dan disana. Lakukan ini sebelum menginstalnya:

$ 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

Ini menetapkan nilai kunci debconf menjadi true, tetapi juga menandainya seperti yang terlihat oleh pengguna. Sekarang pertanyaan ini seharusnya tidak muncul!

Bagaimana saya menemukan ini?

Di sumber paket, saya melacak ini di oracle-java7-installer.preinstfile:

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

Tampaknya, ia menggunakan nilai debconf untuk kunci shared/accepted-oracle-license-v1-1untuk memeriksa apakah pengguna telah menerima lisensi. Jika ya, skrip akan keluar dengan anggun dan memungkinkan instalasi untuk melanjutkan tanpa mengajukan pertanyaan kepada Anda. Kami sekarang harus memberi tahu debconf Anda sudah menerima Oracle License 1.1.

Silakan merujuk ke halaman manual debconf-set-selectionstentang perincian lebih lanjut, tetapi ini adalah contoh untuk masalah Anda dan berfungsi serupa untuk paket lainnya. Apa kunci lain yang Anda miliki di sistem Anda di basis data debconf? Instal debconf-utilsdan lakukan

$ sudo debconf-get-selections

Kemudian ambil lebih banyak kunci yang perlu Anda atur di instalasi otomatis Anda. Ini adalah cara yang lebih fleksibel daripada menggunakan -ydengan apt-getkarena memberikan Anda kesempatan untuk mengatur selain pengaturan default pada waktu instalasi.

gertvdijk
sumber
3
Juga berfungsi untuk Java 8 .
jameshfisher
Tidak ada kutipan yang diperlukan untuk gema dari perintah penerimaan lisensi?
David
1
@ David Tidak untuk kasus ini; jika Anda ingin menambahkan mereka output echoakan persis sama.
gertvdijk
55

Instal Java 6/7/8/9 dengan diam menggunakan PPA tim 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 jawaban tidak bekerja dengan saya di Ubuntu 14.04 & 14.10

Rahul Thakur
sumber
1
bekerja dengan baik pada 16,04
pneumatik
Ini tidak berfungsi lagi
Ahmed Mostafa
@AhmedMostafa Bisakah Anda memberi tahu orang lain di mana Anda mencoba ini.
Rahul Thakur
1
Bekerja oracle-java9-installerjuga.
Kohányi Róbert
1
ini berfungsi sempurna dengan gambar berbasis google / cloud-SDK
Xin Meng
13

Mendukung jawaban @gertvdijk adalah deskripsi di posting blog asli tentang PPA webupd8.

Pembaruan 2: pemasang sekarang mengharuskan Anda menerima lisensi Oracle sebelum instalasi dimulai. Ini hanya diperlukan sekali. Jika karena alasan tertentu Anda memerlukan instalasi otomatis, Anda dapat menjalankan perintah berikut untuk secara otomatis menerima lisensi Oracle:

sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | \
sudo /usr/bin/debconf-set-selections
Hosam Aly
sumber
Itulah garis ajaib yang saya butuhkan untuk menginstal diam-diam dari Oracle Java - terima kasih @Hosam
Phantomwhale
Terima kasih @Phantomwhale
Hosam Aly
Apakah saya salah, atau ada karakter "" "yang hilang / ekstra dalam jawaban Anda?
David
11

Saya memverifikasi kalimat berikut ini berfungsi untuk saya menggunakan buruh pelabuhan ubuntu16.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
keniee van
sumber
Saya mencobanya dan tidak berhasil.
Ahmed Mostafa
Dikonfirmasi bekerja untuk saya di docker-ce 18.05 di Kubuntu 18.04: D menginstal dalam sebuah i386/ubuntu:18.04wadah.
BeepDog
2

Untuk diam java menginstal Anda dapat mencoba open-jdk:

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

Coba juga ini untuk paket / ekstensi open-jdk lainnya ...

sudo apt-cache search openjdk

Sam
sumber
Solusi ini bekerja sangat baik. sudo apt-get install -y openjdk-7-jdk
Layke
0

Ini adalah kutipan dari Dockerfile yang saya gunakan untuk berhasil membangun gambar buruh pelabuhan berbasis Debian:

( Referensi )

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
SteoG5972
sumber