![使用 FreeBSD 端口和软件包,在 FreeBSD 12 上安装 Tomcat 会安装 Java 8,而不是我已经安装的 Java 12](https://linux22.com/image/157859/%E4%BD%BF%E7%94%A8%20FreeBSD%20%E7%AB%AF%E5%8F%A3%E5%92%8C%E8%BD%AF%E4%BB%B6%E5%8C%85%EF%BC%8C%E5%9C%A8%20FreeBSD%2012%20%E4%B8%8A%E5%AE%89%E8%A3%85%20Tomcat%20%E4%BC%9A%E5%AE%89%E8%A3%85%20Java%208%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E6%88%91%E5%B7%B2%E7%BB%8F%E5%AE%89%E8%A3%85%E7%9A%84%20Java%2012.png)
在 FreeBSD 12 上,我已经使用以下命令成功安装了 Java 12:
sudo pkg install openjdk12
我etc/fstab
按照该安装程序发出的文本的指示进行编辑。
然后我通过使用以下行编辑 my将其设置PATH
为包含 Java文件夹。我验证了有效。bin
.zshrc
path+=/usr/local/openjdk12/bin
java --version
然后我去安装阿帕奇雄猫9. 我向 Ports 查了一下,发现有一个最新版本的入口,Tomcat 9.0.22。所以我跑:
sudo pkg install tomcat9
在安装过程中我很快注意到这个输出:
[2/9] 获取 openjdk8-8.212.4.1.txz: 100% 80 MiB 83.4MB/s 00:01
哇,坚持住。我不想安装旧的 OpenJDK 8。我希望 Tomcat 使用我安装的 OpenJDK 12。
➥ 如何避免安装 OpenJDK 8,而是指示安装程序(如果相关)和 Tomcat 本身使用我的 OpenJDK 12?
答案1
当预构建的二进制包不能满足您的需求时,考虑如何通过 FreeBSD 广泛的端口系统从源代码构建您需要的东西是值得的。
一些 FreeBSD 端口支持一个make config
目标,允许您从各种依赖项选项中进行选择,但遗憾的是,tomcat9
没有太多可以调整的配置旋钮。
FreeBSD ports 还支持make missing
目标来告诉您哪些所需的 ports 或软件包尚未安装。为了方便起见,我将对make
输出进行排序:
# cd /usr/ports/www/tomcat9
# make missing | sort
archivers/zip
converters/p5-Text-Unidecode
devel/autoconf
devel/autoconf-wrapper
devel/jakarta-commons-daemon
devel/m4
devel/p5-Locale-gettext
devel/p5-Locale-libintl
java/bootstrap-openjdk8
java/java-zoneinfo
java/javavmwrapper
java/openjdk8
misc/help2man
print/texinfo
textproc/p5-Unicode-EastAsianWidth
让我们看看devel/jakarta-commons-daemon
依赖关系并在那里做同样的事情:
# make -C ../../devel/jakarta-commons-daemon missing | sort
archivers/zip
converters/p5-Text-Unidecode
devel/autoconf
devel/autoconf-wrapper
devel/m4
devel/p5-Locale-gettext
devel/p5-Locale-libintl
java/bootstrap-openjdk8
java/java-zoneinfo
java/javavmwrapper
java/openjdk8
misc/help2man
print/texinfo
textproc/p5-Unicode-EastAsianWidth
仔细检查这些列表会发现这devel/jakarta-commons-daemon
是唯一不在两个列表中的条目。
换句话说,tomcat9 只有一个(缺失的)依赖项:devel/jakarta-commons-daemon
它本身。 的所有其他缺失部分tomcat9
实际上都是 的依赖项devel/jakarta-commons-daemon
。所以你的问题变成了,“如何构建devel/jakarta-commons-daemon
使用 jdk12 而不是默认 jdk8 的端口?”当然,我无法回答这个问题,但我希望您能从更有针对性的问题中获益。
FreeBSD 有一个特定于 java 的邮件列表。你可以在此注册。一个清晰、有记录的问题,表明研究和努力最有可能得到答复。我敢打赌,您最有可能找到知道您问题答案的人。如果您确实找到了,请返回此处并将其作为答案发布,以便未来的 StackExchange 读者可以从您的努力中受益。
您可能还有兴趣将您的电子邮件添加为抄送:这个 FreeBSD Bugzilla 条目及时了解开发工作,以改进对最新版本的 Java 开发工具包的支持。
答案2
您还可以尝试执行pkg fetch tomcat9
然后pkg add -M /var/cache/pkg/tomcat9.txz
安装 tomcat9 而无需提取其依赖项。