Installing java non-interactively

#tag Debian,Java,gotchas,debconf

Installing the Sun Java packages on Debian or Ubuntu require to you
accept Sun’s license before you can install them. This means that it’s
not easy to install non-interactively, for example when using
pbuilder. Fortunately the license uses
debconf to check to see if you have already accepted the license. This
means you can use debconf to accept the license before you install the
packages. Create a file containing the following lines:

sun-java5-jdk shared/accepted-sun-dlj-v1-1 select true
sun-java5-jre shared/accepted-sun-dlj-v1-1 select true
sun-java6-jdk shared/accepted-sun-dlj-v1-1 select true
sun-java6-jre shared/accepted-sun-dlj-v1-1 select true

Then run /usr/bin/debconf-set-selections <file> and
when you install the java packages, you should find it doesn’t prompt
for the license any more.

8 thoughts on “Installing java non-interactively

  1. Jeff Rebeiro
    on said:

    debconf-set-selections also accepts input from stdin so you could also do:

    echo sun-java5-jdk shared/accepted-sun-dlj-v1-1 select true | /usr/bin/debconf-set-selections
    echo sun-java5-jre shared/accepted-sun-dlj-v1-1 select true | /usr/bin/debconf-set-selections
    echo sun-java6-jdk shared/accepted-sun-dlj-v1-1 select true | /usr/bin/debconf-set-selections
    echo sun-java6-jre shared/accepted-sun-dlj-v1-1 select true | /usr/bin/debconf-set-selections

    Useful if you are installing java in a bash script and don’t want to create a seperate file.

  2. Hi Jeff,

    Thank you SO very much for this information.  I’m using an Emulab-like environment in which I install nodes with Java all the time, finally I found your great post about this!

    Thanks!

    SabbeRubbish

  3. SabbeRubbish
    on said:

    By the way, you don’t happen to know a way of installing xorg so that it doesn’t prompt for the screen resolutions?  That’s the only thing left for full automation.

    So when I
    apt-get -y install xorg
    the installer asks my which screen resolutions I want to use.  The defaults are fine for me, but how do I disable this (for me) redundant prompt?

    Thanks even more! 🙂

    SabbeRubbish

  4. Just to make it a bit easier on my eyes in script 🙂

      cat << EOF | /usr/bin/debconf-set-selections
      sun-java5-jdk shared/accepted-sun-dlj-v1-1 select true
      sun-java5-jre shared/accepted-sun-dlj-v1-1 select true 
      sun-java6-jdk shared/accepted-sun-dlj-v1-1 select true
      sun-java6-jre shared/accepted-sun-dlj-v1-1 select true 
    EOF

  5. thank you very much (i “dont” “ever” “never” say this line frequently).
    now with this little help i can upload a shitload of packages while running debian-live. just i needed a few packages where i need to accept licence dialog.
    thanks thanks and thanks.
    bill the beer to this dude on my account.
    thanks. CIAO
    -paul

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>