dnf 安装 rpm 包时怎么同步接受 gpgkey 呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
dzdh
V2EX    Linux

dnf 安装 rpm 包时怎么同步接受 gpgkey 呢?

  •  
  •   dzdh 2022-11-22 00:25:36 +08:00 2133 次点击
    这是一个创建于 1062 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题是这样的

    我在 almalinux 中dnf install -y epel-release。ok ,没问题,装上了。在/etc/pki/rpm-gpg中有个文件RPM-GPG-KEY-EPEL-9

    然后我执行rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9没问题。

    但是在dnf update时,仍然会提示是否信任/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9

    那我rpm --import了个寂寞?

    strace 了 rpm 命令看操作了/var/lib/rpm/rpmdb.sqlite一个 sqlite 数据库,这个文件是写入到数据库了吗?

    能不能或有没有什么方法像 debian/ubuntu 那样把 key 文件放到 /etc/apt/trusted.d/或者 /usr/share/gpg/key 目录中就表示被接受了的方法呢?

    在 rhel/rocky 都复现了

    第 1 条附言    2022-11-22 13:20:50 +08:00
    dnf/yum 垃圾。zypper yyds
    18 条回复    2022-11-23 09:05:22 +08:00
    julyclyde
        1
    julyclyde  
       2022-11-22 08:55:18 +08:00
    你是不是从旧版本升级上来的?

    应该还有个提示信息 RPM database read only 吧
    dzdh
        2
    dzdh  
    OP
       2022-11-22 09:07:35 +08:00
    @julyclyde

    容器中操作

    echo "install_weak_deps=False" >> /etc/dnf/dnf.conf && dnf makecache && dnf upgrade -y && dnf install -y epel-release && dnf makecache && dnf upgrade

    就出来了
    julyclyde
        3
    julyclyde  
       2022-11-22 09:17:41 +08:00
    旧版本的 rpm 只支持 berkeley db 作为 rpmdb
    新的是 sqlite
    新版本 rpm 软件支持多种 数据库 backend ,其中 berkeley db 是 readonly 的

    前几天我升级的时候也遇到这个问题,需要运行 rebuilddb ,rpm 会把所有认识的数据都读出来,然后写到一个新的可以写的 backend 去

    所以我问你,是不是从旧版本升级上来的
    按说如果你全新安装,它应该“本来就是”sqlite 的啊,不应该出现写不进去的问题?
    dzdh
        4
    dzdh  
    OP
       2022-11-22 09:54:26 +08:00
    @julyclyde 所以就很懵。按照上面的操作。使用 almalinux:9 的镜像就会在 upgrade 时候出来那个提示了

    但是确实 install epel-release 是 9-2.el9 。upgrade 的时候就变成了 9-4.el9
    julyclyde
        5
    julyclyde  
       2022-11-22 10:43:58 +08:00
    @dzdh 哦,原来你手头的系统并不是完全受控的,而是二手的啊
    那个镜像可能是以前升级上来的而非全新安装。不过这事很难考证

    你试试 rpm --rebuilddb 吧,如果能搞定就别深究了
    dzdh
        6
    dzdh  
    OP
       2022-11-22 11:18:26 +08:00
    @julyclyde

    也就是说如果执行过 rpm --import /etc/xxx 再执行 rpm --rebuilddb 理论上应该 upgrade/update 是不会再二次提示确认是否信任 gpgkey 对吧
    julyclyde
        7
    julyclyde  
       2022-11-22 11:24:24 +08:00
    @dzdh 顺序反了
    需要先 rpm --rebuilddb 然后再 import 才能成功 import 吧

    按你这个顺序,import 应该是失败的才对啊
    dzdh
        8
    dzdh  
    OP
       2022-11-22 11:29:46 +08:00
    @julyclyde
    并不行。rpm --rebuilddb 后 dnf upgrade 依然提示是否信任 key
    dzdh
        9
    dzdh  
    OP
       2022-11-22 11:33:01 +08:00
    echo "install_weak_deps=False" >> /etc/dnf/dnf.conf
    dnf makecache
    dnf upgrade -y
    dnf install -y epel-release
    dnf makecache
    rpm --rebuilddb
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
    dnf upgrade

    好了
    julyclyde
        10
    julyclyde  
       2022-11-22 11:46:09 +08:00
    @dzdh rebuilddb 只是给 import 提供了前提环境,并没有自动 import 啊
    你还是需要 import 才会免提示是否信任的
    dzdh
        11
    dzdh  
    OP
       2022-11-22 11:58:37 +08:00
    @julyclyde #10

    为啥 install 后不能自动信任呢。我都给你 install 了还能不信任么。能 install 后的同时自动信任么
    julyclyde
        12
    julyclyde  
       2022-11-22 12:47:07 +08:00
    @dzdh 就是“怕你乱 install”才问你是否信任的
    加-y 是不是可以免提问?没试过
    dzdh
        13
    dzdh  
    OP
       2022-11-22 13:20:05 +08:00
    @julyclyde #12

    https://bugzilla.redhat.com/show_bug.cgi?id=1768206

    remi 装 php 无论如何都会提示。搜到了如上一个 bug (不是 bug 的 bug )

    官方是这么说的:
    如果一个 repo 开启了 repo_gpgcheck=1 ,那么 gpgkey 是同一个,但是 rpm 和 dnf(yum)会从两个地方读。

    rpm import 以后 dnf 也不认。必须只能强制的交互式的输入个 y 以便录入到 dnf 的数据库中。

    以上问题只存在 repo 开启了 repo_gpgcheck 的前提下。

    sed -i 's/repo_gpgcheck=1/repo_gpgcheck=0/g' /etc/yum.repos.d/remi* 清净了。。。


    以上及本贴问题是在打业务的容器镜像。老是被中断,现在好了。
    julyclyde
        14
    julyclyde  
       2022-11-22 13:46:16 +08:00
    @dzdh 两个软件的 key 确实是分开管理的。比较割裂
    dzdh
        15
    dzdh  
    OP
       2022-11-22 17:24:53 +08:00
    @julyclyde #14

    RedHat 及同系列的用 minimal 版镜像或者生产环境用 microdnf 就没有这些提示了。
    julyclyde
        16
    julyclyde  
       2022-11-23 08:48:37 +08:00
    @dzdh 那可能说明这个镜像是一手的,而不是像你开始用的那个一样是升级上来的?
    dzdh
        17
    dzdh  
    OP
       2022-11-23 09:00:38 +08:00
    @julyclyde #16

    no 啊没升级过啊
    julyclyde
        18
    julyclyde  
       2022-11-23 09:05:22 +08:00   1
    @dzdh 那在你搞清楚了 rpm key 和 dnf key 是两个不同的管理渠道之后,能不能重新梳理一下最开始的问题呢
    你看到的是否信任 key 到底是 dnf 的还是 rpm 的
    你为什么用 rpm --import 去尝试处理 dnf 的问题?
    为什么用 strace rpm 的方法去调查 dnf 的问题
    以及,为什么我建议的 rpm rebuilddb 竟然能处理 dnf 的问题?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     898 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 20:00 PVG 04:00 LAX 13:00 JFK 16:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86