![](/img/trans.png)
[英]Installing Java 8 on a Google Compute Engine instance with apt-get
[英]Installing maven using `apt-get install` overwrites Java8 with Java11
在我的 Dockerfile 內部,我試圖簡單地將 Maven 添加到我已經具有正確版本的 Java8 的圖像中。 如:
RUN apt-get install -y maven
當我這樣做時, maven
的安裝帶來了 Java11,即使我只是想為我已經安裝在盒子上的 Java8 JDK 安裝 Maven。 我希望有一些明顯的解決方案是干凈和簡單的。 起初我認為apt-mark hold
可能會起作用,但我無法弄清楚要持有的 package 的名稱。 例如,我試過
RUN apt-mark hold default-jdk default-jre \
&& apt-get install -y maven
maven 安裝 Java11 似乎非常不友好,沒有任何開關告訴它 a) 安裝 Java8 或不安裝 Java 並相信它已經安裝。
關於如何在沒有此問題的情況下在 ubuntu 上安裝 maven 的任何想法?
在我的情況下,我發現我可以通過暫停使用以下 3 個包來阻止Java11
的安裝:
RUN apt-mark hold default-jdk \
&& apt-mark hold default-jre \
&& apt-mark hold default-jre-headless \
&& apt-get install -y maven
至少對於我的情況( Corretto Java8 JDK
安裝在Ubuntu 20
映像上),將這些包標記為保留,使maven
安裝無法更新 Z93F725A07423FE1C889F448B33Z2 版本
maven 安裝 Java11 似乎非常不友好,沒有任何開關告訴它 a) 安裝 Java8 或不安裝 Java 並相信它已經安裝。
這並不是真正的 Maven 問題。 當您執行apt-get insall
時,還會安裝 package 的依賴項。 但是如果是 Maven,你真的不需要用apt-get
安裝它。 您只需使用wget
下載 Maven 並解壓即可。
這是一個Dockerfile
示例:
FROM adoptopenjdk/openjdk8:debian-slim
RUN apt-get update && apt-get install -y wget && \
wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz && \
tar -xvzf apache-maven-3.8.4-bin.tar.gz && \
rm apache-maven-3.8.4-bin.tar.gz
ENTRYPOINT [ "/apache-maven-3.8.4/bin/mvn", "--help" ]`
或者您可以簡單地將 Maven 圖像與 Java 8 一起使用:
FROM maven:3.8.4-jdk-8
ENTRYPOINT [ "mvn", "--help" ]
``
現在,您的系統上有兩個 java 版本。 這本身不是問題。
只需 select 您想要默認使用的版本
sudo update-alternatives --config java
有關詳細信息,請參閱https://askubuntu.com/q/1288175 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.