V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
dzdh
V2EX  ›  Linux

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

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

    问题是这样的

    我在 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   ·   我们的愿景   ·   实用小工具   ·   1091 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 23:32 · PVG 07:32 · LAX 16:32 · JFK 19:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.