오라클 자바를 설치했습니다. OpenJDK를 제거하고 싶지만 그렇게 하려고 할 때 apt
다른 버전의 Java를 설치하고 싶습니다 .
apt
이러한 OpenJDK 패키지를 제거할 수 있도록 타사 Java가 설치되어 있음을 알도록 구성하려면 어떻게 해야 합니까 ?
답변1
더미 패키지 만들기사용동등한. 간단히 말해서:
가상 패키지에 대한 제어 파일을 만듭니다. 프로그램이
equiv-controls
템플릿을 생성합니다. 파일 이름을 지정하십시오.equivs-control oracle-jre.control
제어 파일을 편집합니다. 최소한 이 행을 (사용하지 않는 Sun/Oracle Java 패키지의 이름)
Package:
로 설정하십시오 . 또한 의미 있는 설정 섹션을sun-java6-jre
작성해야 합니다 . 패키지 및 기타 버전을 선언합니다(다른 프로그램이 의존하는 가상 패키지로 제공되는 내용과 해당 프로그램에서 요구하는 내용을 확인하여 찾을 수 있습니다). 파일은 다음과 같습니다.Description:
java
Provides: java-6-runtime
openjdk-6-jre
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
생성한 제어 파일을 사용하여 Debian 패키지를 생성합니다. 이 패키지는 종속성 전용이며 파일을 설치하지 않습니다.
equivs-build oracle-jre.control
생성된 deb 패키지를 설치합니다.
sudo dpkg -i sun-6-jre_1.0_all.deb
답변2
나는 이것을 할 수 있는 방법이 없다고 믿습니다. 대신 .deb
Java 패키지를 제공하는 PPA 저장소를 사용할 수 있습니다.이 스크립트한번 시도해 보시면 여러분의 Java 설치를 위한 .deb 패키지가 만들어질 것입니다.
이 스크립트는OAB-Java, 구체적으로 oab-java.sh
.
예
스크립트 다운로드:
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
스크립트는 다음 스위치를 사용합니다.
-7
:sun-java6 대신 oracle-java7 패키지를 빌드합니다.-c
: 기존 패키지/var/local/oab/deb
와 소스를 제거합니다/var/local/oab/src
.-k
: 키를 생성하는 대신 지정된 기존 키를 사용합니다.-s
: 패키지가 이미 존재하는 경우 빌드를 건너뜁니다.-t
: 업스트림 Debian 패키징 스크립트에서 사용할 Java 버전 태그를 지정합니다.-h
: 도움이 됩니다
Oracle 6 파일을 준비하고 설치하려면 다음을 수행하십시오 .deb
.
$ sudo ./oab-java.sh
$ sudo apt-get install sun-java6-jre
Oracle 7 파일을 준비하고 설치하려면 다음을 수행하십시오 .deb
.
$ sudo ./oab-java.sh -7
$ sudo apt-get install oracle-java7-jre
답변3
@Gilles가 제공한 위의 답변은 한동안 나에게 매우 효과적이었습니다. 그러나 Java 8 및 최신 버전의 Ubuntu에서는 작동하지 않습니다. 아래는 oracle-jre.control
현재 제가 사용하고 있는 파일들 입니다 .
Section: java
Priority: optional
Standards-version: 3.9.2
Package: sun-8-jre
Provides: default-jre, openjdk-8-jre, openjfx
Description: Dummy package when Oracle Java is installed
답변4
apt-mark를 사용하여 패키지를 보존할 수 있습니다.
잡다:
sudo apt-mark hold package_name
보류를 취소하려면:
sudo apt-mark unhold package_name
이렇게 하면 적절하게 만지는 것을 방지할 수 있습니다.