Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I've installed Oracle Java. I want to be able to remove OpenJDK, but when trying to do so apt wants to install another version of Java.

How can I configure apt so that it knows I already have a third-party Java installed so I can remove these OpenJDK packages?

share|improve this question
up vote 4 down vote accepted

Create a dummy package using equivs. In a nutshell:

  1. Create a control file for the dummy package. The program equiv-controls creates a template. Give it a file name.

    equivs-control oracle-jre.control
    
  2. Edit the control file. At least set the Package: line to sun-java6-jre (the name of the defunct Sun/Oracle Java package). You should also write a meaningful Description:, set the section to java. Declare that the package Provides: java-6-runtime and other versions (this is the virtual package that other programs depend on, can find this out by checking what openjdk-6-jre provides and what various programs require). The file might look like this:

    Section: java
    Priority: optional
    Standards-version: 3.9.2
    Package: sun-6-jre
    Provides: java6-runtime, java-runtime
    Description: dummy package when Oracle Java is installed
    
  3. Create a Debian package with the control file you created. This package is only there for the dependencies and installs no file.

    equivs-build oracle-jre.control
    
  4. Install the resulting deb package.

    sudo dpkg -i sun-6-jre_1.0_all.deb
    
share|improve this answer
    
How are updates of the old package (sun-6-jre) handled when running apt-get upgrade? Ignored? (ps: your first link is broken) – assylias Jan 16 at 22:31
1  
@assylias Updates are handled normally: apt will install the most recent version of the package by that name, if there is one. You'd normally craft a package manually because it doesn't exist in the distribution. – Gilles Jan 16 at 23:35

I do not believe there is a method for doing this. In lieu of using a PPA repository that provides you with .deb packages of Java, you could give this script a try which will roll you're own .deb packages of the Java installation.

This script is called OAB-Java, specifically oab-java.sh.

Example

Downloading the script:

cd ~/
wget https://github.com/flexiondotorg/oab-java6/raw/0.2.8/oab-java.sh -O oab-java.sh
chmod +x oab-java.sh
sudo ./oab-java.sh

The script takes the following switches:

  • -7 : Build oracle-java7 packages instead of sun-java6
  • -c : Remove pre-existing packages from /var/local/oab/deb and sources from /var/local/oab/src.
  • -k : Use the specified existing key instead of generating one
  • -s : Skip building if the packages already exist
  • -t : Specify the Java version tag to use from the upstream Debian packaging script.
  • -h : This help

To prepare & install the Oracle 6 .deb files:

$ sudo ./oab-java.sh
$ sudo apt-get install sun-java6-jre

To prepare & install the Oracle 7 .deb files:

$ sudo ./oab-java.sh -7
$ sudo apt-get install oracle-java7-jre
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.