跳转到内容
搜索 AlmaLinux 文档

    浏览当前文档目录

    AlmaLinux 9:EPEL、CRB 与 Remi 怎么加

    在 almalinux:9 容器(AlmaLinux 9.8)中实际执行:dnf install epel-release、dnf repolist --enabled、dnf list available htop、dnf install glibc-static(失败)与 --enablerepo=crb(成功)、安装 remi-release-9.rpm 后看仓库。日志:plans/content-expansion/evidence/logs/alma-third-party-repos.log。

    Remi 的具体 PHP 版本选择、SIG 仓库(如 sig-cloud)未在本环境验证。

    1. EPEL:dnf install epel-release,装完启用 epel 与 epel-cisco-openh264;
    2. CRB:默认不启用,按命令 --enablerepo=crb 临时开;
    3. Remi:依赖 EPEL,装 remi-release 后启用 remi-safe 与 remi-modular。

    顺序反了会在依赖解析阶段卡住,或者留下半配置的源。

    Terminal window
    sudo dnf install -y epel-release
    dnf repolist --enabled
    repo id repo name
    appstream AlmaLinux 9 - AppStream
    baseos AlmaLinux 9 - BaseOS
    epel Extra Packages for Enterprise Linux 9 - aarch64
    epel-cisco-openh264 Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - aarch64
    extras AlmaLinux 9 - Extras

    装完就能拿到 EPEL 的包:

    Terminal window
    dnf list available htop
    htop.aarch64 3.3.0-1.el9 epel
    Terminal window
    sudo dnf install -y glibc-static
    sudo dnf install -y --enablerepo=crb glibc-static
    rpm -q glibc-static
    No match for argument: glibc-static
    ...
    Complete!
    glibc-static-2.34-283.el9_8.aarch64

    第一次失败是因为 CRB 没启用;--enablerepo=crb 只对那条命令生效,不会改永久配置。

    Terminal window
    sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
    dnf repolist --enabled | grep -i remi
    remi-modular Remi's Modular repository for Enterprise Linux 9 - aarch64
    remi-safe Safe Remi's RPM repository for Enterprise Linux 9 - aarch64

    remi-modular 用模块流管理 PHP 版本;装之前先 dnf module list php 看清楚有哪些流,别直接 dnf install php 撞上系统模块。

    包/场景建议来源注意
    htop、tmux、jq 等工具epel冲突少,直接用
    glibc-static、*-develcrb用 --enablerepo=crb 临时开
    新版 php、redisremi-modular先用 dnf module list 选流
    与系统同名的核心库不要换源第三方构建可能替换系统包

    原则:核心系统包不换源,工具与语言运行时按需加源。

    • 永久启用第三方源:会参与 dnf update,可能把系统包换成第三方构建;
    • 跳过 EPEL 装 Remi:remi-release 依赖 EPEL,顺序错了会留下半配置;
    • 在脚本里撞上 GPG 交互:首次装源会确认 key,非交互环境提前导入或明确加参数。
    Terminal window
    sudo dnf install -y glibc-static # 预期失败
    sudo dnf install -y --enablerepo=crb glibc-static
    rpm -q glibc-static
    dnf repolist --enabled | grep -c crb # 预期 0

    检查:

    1. 第一条报 No match for argument
    2. 第二条成功,rpm -q 有版本
    3. 第三条输出 0,证明没有永久启用 CRB

    常见问题

    EPEL 会不会替换系统包?

    EPEL 的设计是「不与 baseos/appstream 冲突」,正常不会替换系统包。但它提供同名包时 dnf 仍按版本选择,装之前建议 `dnf info <包>` 看来源。

    CRB 需要一直开着吗?

    不需要。CRB 放的是构建依赖,多数机器只在编译或装 `*-devel` 时用;用 `--enablerepo=crb` 临时开,避免它长期参与 update。

    Remi 装了之后 PHP 版本没变?

    Remi 用模块流控制 PHP 版本,装完 release 包只是加了源;要 `dnf module list php` 选流并 `dnf module enable php:<流>`,或安装带版本号的包。