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)未在本环境验证。
加源顺序:EPEL → CRB → Remi
Section titled “加源顺序:EPEL → CRB → Remi”- EPEL:
dnf install epel-release,装完启用epel与epel-cisco-openh264; - CRB:默认不启用,按命令
--enablerepo=crb临时开; - Remi:依赖 EPEL,装
remi-release后启用remi-safe与remi-modular。
顺序反了会在依赖解析阶段卡住,或者留下半配置的源。
EPEL:工具类包的主要来源
Section titled “EPEL:工具类包的主要来源”sudo dnf install -y epel-releasednf repolist --enabledrepo id repo nameappstream AlmaLinux 9 - AppStreambaseos AlmaLinux 9 - BaseOSepel Extra Packages for Enterprise Linux 9 - aarch64epel-cisco-openh264 Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - aarch64extras AlmaLinux 9 - Extras装完就能拿到 EPEL 的包:
dnf list available htophtop.aarch64 3.3.0-1.el9 epelCRB:构建依赖,按需开
Section titled “CRB:构建依赖,按需开”sudo dnf install -y glibc-staticsudo dnf install -y --enablerepo=crb glibc-staticrpm -q glibc-staticNo match for argument: glibc-static...Complete!glibc-static-2.34-283.el9_8.aarch64第一次失败是因为 CRB 没启用;--enablerepo=crb 只对那条命令生效,不会改永久配置。
Remi:PHP 相关,注意模块流
Section titled “Remi:PHP 相关,注意模块流”sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpmdnf repolist --enabled | grep -i remiremi-modular Remi's Modular repository for Enterprise Linux 9 - aarch64remi-safe Safe Remi's RPM repository for Enterprise Linux 9 - aarch64remi-modular 用模块流管理 PHP 版本;装之前先 dnf module list php 看清楚有哪些流,别直接 dnf install php 撞上系统模块。
这三个源分别适合什么
Section titled “这三个源分别适合什么”| 包/场景 | 建议来源 | 注意 |
|---|---|---|
htop、tmux、jq 等工具 | epel | 冲突少,直接用 |
glibc-static、*-devel | crb | 用 --enablerepo=crb 临时开 |
新版 php、redis | remi-modular | 先用 dnf module list 选流 |
| 与系统同名的核心库 | 不要换源 | 第三方构建可能替换系统包 |
原则:核心系统包不换源,工具与语言运行时按需加源。
- 永久启用第三方源:会参与
dnf update,可能把系统包换成第三方构建; - 跳过 EPEL 装 Remi:
remi-release依赖 EPEL,顺序错了会留下半配置; - 在脚本里撞上 GPG 交互:首次装源会确认 key,非交互环境提前导入或明确加参数。
练习:为编译临时启用 CRB
Section titled “练习:为编译临时启用 CRB”sudo dnf install -y glibc-static # 预期失败sudo dnf install -y --enablerepo=crb glibc-staticrpm -q glibc-staticdnf repolist --enabled | grep -c crb # 预期 0检查:
- 第一条报
No match for argument - 第二条成功,
rpm -q有版本 - 第三条输出
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:<流>`,或安装带版本号的包。
- 多源冲突:审计包来源
- 仓库与 SIG:AlmaLinux 仓库
- 离网装包:离网装包