跳转到内容
搜索 Fedora 文档

    浏览当前文档目录

    F45 仓库配置迁到 /usr:路径、GPG 与覆盖文件

    Fedora 45 把发行版自带的仓库配置从 /etc/yum.repos.d 移到 /usr/share/dnf5/repos.d,仓库的 GPG 公钥也从 /etc/pki/rpm-gpg 移到 /usr/share/pki/rpm-gpg(官方变更提案 RelocateRpmRepoConfigsToUsr)。

    这不是「Fedora 不用 /etc 了」——搬走的只有由包管理的那部分。下面每一段都附了 F45 上的实际输出。

    Terminal window
    ls /usr/share/dnf5/repos.d/
    ls /etc/yum.repos.d/
    ls /usr/share/pki/rpm-gpg/ | head -3
    fedora-cisco-openh264.repo
    fedora.repo
    fedora-updates.repo
    fedora-updates-testing.repo
    (/etc/yum.repos.d/ 为空)
    RPM-GPG-KEY-45-fedora
    RPM-GPG-KEY-fedora-10-i386
    RPM-GPG-KEY-fedora-10-ppc

    /etc/yum.repos.d/ 是空目录,不是目录不存在——这是升级后最容易误判的一点。

    位置归谁管能不能手改升级时
    /usr/share/dnf5/repos.d/*.repofedora-repos 包不能会被覆盖
    /etc/yum.repos.d/*.repo你可以保留
    /etc/dnf/repos.override.d/*.repoconfig-manager不能(文件头会写警告)保留

    确认归属:

    Terminal window
    rpm -qf /usr/share/dnf5/repos.d/fedora.repo
    fedora-repos-45-0.6.noarch

    只要 rpm -qf 能报出包名,这个文件就不该手改。

    想关掉一个自带仓库(比如 updates-testing),不要去改 /usr 下的文件:

    Terminal window
    sudo dnf config-manager setopt updates-testing.enabled=0

    它写的是这个文件:

    Terminal window
    sudo cat /etc/dnf/repos.override.d/99-config_manager.repo
    # Generated by libdnf5.
    # Do not modify this file manually, use dnf5 config-manager instead.
    [updates-testing]
    enabled=0

    验证生效:

    Terminal window
    sudo dnf repolist | grep -c updates-testing # 0

    只对当次命令生效的写法,不落盘:

    Terminal window
    sudo dnf repolist --setopt updates-testing.enabled=1 | grep -c updates-testing # 1

    区别记住一句话:--setopt 是运行时开关,config-manager setopt 是持久化。

    自己加的仓库仍然放 /etc/yum.repos.d/。F45 上实测:把一个测试 .repo 放进该目录,dnf 照常识别——所以「F45 不再用 /etc」的说法是错的。

    config-manager addrepo 也把文件放这里:

    Terminal window
    sudo dnf config-manager addrepo --from-repofile=https://example.com/example.repo
    ls /etc/yum.repos.d/
    • 升级后 /etc/yum.repos.d/ 变空:不是仓库丢了,是自带仓库搬家了;用 dnf repolist 确认仓库都在。
    • 删除:rm /etc/yum.repos.d/x.repo 只对自定义仓库有效;删 /usr 下的文件既不生效,也会被下次升级还原。
    • 脚本里写死路径:把 /etc/yum.repos.d/fedora.repo 当固定路径的备份脚本、配置管理模板,在 F45 上会失效。

    仓库突然「不见了」时,按这个顺序查:

    1. dnf repolist —— 仓库是否在列表里;
    2. ls /usr/share/dnf5/repos.d —— 自带仓库文件是否在;
    3. ls /etc/dnf/repos.override.d/ —— 有没有覆盖文件把它关了;
    4. dnf repoinfo <id> —— 该仓库的 enabled 与 gpgcheck 实际值。