linux里怎么查一个软件是怎么被安装到系统中的?

         我们以龙蜥8.8系统的java17为例,来熟悉下流程:

        今天新安装完一台龙蜥(Anolis Os)8.8系统,发现竟然默认带java17。难道是镜像自带的,查询官网发现并非如此。那它是来自于哪里呢?

java -version

openjdk version "17.0.5" 2022-10-18 LTS
Alibaba Dragonwell 17.0.5.0.5.8 GA

        那这个java17是怎么安装的呢?输入命令查询:

rpm -qf `which java`

#输出java-17-alibaba-dragonwell-headless-17.0.5.0.5.8-1.an8.x86_64

        排查是否是脚本安装:没有任何输出,说明也不是命令行安装的

yum history list java-17-alibaba-dragonwell-headless

        于是查看装机ks文件,发现只安装了一些group:

  • @base
  • @Development tools
  • @Security Tools

        查看是否有包含java包:也没有找到

dnf groupinfo "Development tools"|grep java
dnf groupinfo "Security Tools"|grep java

        查询rpm依赖:竟然输出no package requires java-17-alibaba-dragonwell-headless,简直天雷滚滚了。

rpm -q --whatrequires java-17-alibaba-dragonwell-headless
no package requires java-17-alibaba-dragonwell-headless

        还是没有找到明确的依赖关系,最后上大招:检查所有已安装的软件包,看看是否有某个包依赖 Java:果然发现了一个可以包jna-5.6.0-6.an8.x86_64

for pkg in $(rpm -qa); do
    if rpm -qR $pkg | grep -q "java"; then
        echo "$pkg depends on Java"
    fi
done

        最后终于真相大白:查看group包,在development tools中发现了jna,也就是安装jna时它依赖了java-17-alibaba-dragonwell-headless-17.0.5.0.5.8-1.an8.x86_64,于是就把java17给安装了。

dnf group info "development tools"|grep jna
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值