Red Hat 8 / Rocky Linux 配置国内软件源

文章目录

    今天真是崩溃的一天,第一次遇到这么坑的 Linux 系统环境搭建。平时一直用 Ubuntu Server, 偶尔也用 CentOS,但是从没遇到过 Red Hat 这么折腾的情况。耗费一个下午,就部署了两台服务器,下班了,还有一个 redis 在低速下载中。。。

    系统环境

    # cat /etc/redhat-release
    Red Hat Enterprise Linux release 8.10 (Ootpa)
    

    查了一下这个版本号,发现 RHEL 8.10 是 2024 年 5 月发布的,属于 RHEL 8 系列的最新版本。

    This system is not registered with an entitlement server

    # dnf list redis --showduplicates
    Updating Subscription Management repositories.
    Unable to read consumer identity
    
    This system is not registered with an entitlement server. You can use subscription-manager to register.
    
    Error: No matching Packages to list
    

    报错的原因是,RHEL 系统没有注册 Red Hat 订阅,因此官方 AppStream 软件源被锁定了,无法搜索到 Redis 包。
    我第一次遇到新装的系统,你不交钱就不给你用软件源的情况。那我怎么安装 gcc 和 make 。。。而且这个服务器还是内网环境,无法访问外网。。。我第一次感觉到无能为力。找运维帮忙安装 gcc,运维说可以给我开外网权限。。。

    我实在无法理解,为什么要选择 Red Hat,选择了又不交钱。那用 CentOS 啊,CentOS 虽然已经变成了历史尘埃,那也比没有软件源的系统强吧。

    去掉可恶的 Red Hat 订阅提示

    sed -i 's/enabled=1/enabled=0/g' /etc/yum/pluginconf.d/subscription-manager.conf
    

    查看 subscription-manager.conf 的内容,其实就是把 enabled=1 改成 enabled=0。

    # cat /etc/yum/pluginconf.d/subscription-manager.conf
    [main]
    enabled=0
    
    # When following option is set to 1, then all repositories defined outside redhat.repo will be disabled
    # every time subscription-manager plugin is triggered by dnf or yum
    disable_system_repos=0
    

    yum 还是 dnf

    没想到,几年不见,连安装工具都改名叫 dnf 了。乍一看,还以为是腾讯赞助的呢😅。

    dnf 是 yum 的下一代版本,在 RHEL 8 及之后版本中,yum 命令本身已是 dnf 的一个别名。还是继续用 yum 吧,毕竟习惯了。
    从版本号看,就是一样的。

    # yum --version
    4.7.0
      Installed: dnf-0:4.7.0-20.el8.noarch at Mon 17 Mar 2025 10:27:30 AM GMT
      Installed: rpm-0:4.14.3-31.el8.x86_64 at Mon 17 Mar 2025 10:23:29 AM GMT
    
    # dnf --version
    4.7.0
      Installed: dnf-0:4.7.0-20.el8.noarch at Mon 17 Mar 2025 10:27:30 AM GMT
      Installed: rpm-0:4.14.3-31.el8.x86_64 at Mon 17 Mar 2025 10:23:29 AM GMT
    

    dnf 是什么的缩写?

    • dnf 是 Dandified YUM(常写作 Dandified Yum,意思是”升级版/更优雅的 YUM”)的缩写。
    • YUM = Yellowdog Updater, Modified,是早期 RHEL/CentOS 的包管理器

    配置国内软件源

    折腾了半天,始终没有搞定国内软件源的配置。Red Hat 8 的资料太少了,我也没法 Google,靠 CSDN 上的一众垃圾文章,折腾了半天阿里云、清华源也没搞定。最后,还是靠 WorkBuddy AI 分析出来了,最终用腾讯云的 Rocky Linux 软件源镜像搞定。WorkBuddy 有一点比较强,就是会主动去调用网络请求,验证连接的可用性,帮你排查问题。这是比纯网页版的 AI 强的地方。

    之前靠阿里云 CentOS 源配置失败的原因是,CentOS 8 最后一个版本停在 8.5.2111,而 RHEL 8.10 比它新很多,用 CentOS vault 源会缺 8.6–8.10 的包。更合适的做法是改用 Rocky Linux 8.10 的源——Rocky 与 RHEL 8.10 二进制同源、版本号完全对齐,国内镜像也都同步了。

    # 用腾讯云 Rocky 8.10 源覆盖原仓库文件
    sudo tee /etc/yum.repos.d/Rocky-Base.repo > /dev/null <<'EOF'
    [baseos]
    name=Rocky-8.10 - BaseOS - tencent
    baseurl=https://mirrors.cloud.tencent.com/rocky/8.10/BaseOS/$basearch/os/
    gpgcheck=1
    enabled=1
    gpgkey=https://mirrors.cloud.tencent.com/rocky/RPM-GPG-KEY-rockyofficial
    
    [appstream]
    name=Rocky-8.10 - AppStream - tencent
    baseurl=https://mirrors.cloud.tencent.com/rocky/8.10/AppStream/$basearch/os/
    gpgcheck=1
    enabled=1
    gpgkey=https://mirrors.cloud.tencent.com/rocky/RPM-GPG-KEY-rockyofficial
    
    [extras]
    name=Rocky-8.10 - Extras - tencent
    baseurl=https://mirrors.cloud.tencent.com/rocky/8.10/extras/$basearch/os/
    gpgcheck=1
    enabled=1
    gpgkey=https://mirrors.cloud.tencent.com/rocky/RPM-GPG-KEY-rockyofficial
    EOF
    
    # 重建缓存并验证
    sudo dnf clean all
    sudo dnf makecache
    sudo dnf repolist
    

    dnf install 测试

    # dnf install gcc
    # gcc --version
    gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-28)
    

    dnf 安装 nginx

    # dnf module list nginx
    

    会发现只有 1.14 到 1.24 的版本,1.30 还没有。要安装 1.30 的话,需要从官方源安装。

    # 1. 导入官方 GPG key
    sudo rpm --import https://nginx.org/keys/nginx_signing.key
    
    # 2. 添加官方仓库(用你刚配的腾讯云做基础依赖源即可)
    sudo tee /etc/yum.repos.d/nginx.repo > /dev/null <<'EOF'
    [nginx-stable]
    name=nginx stable repo
    baseurl=https://nginx.org/packages/centos/8/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    EOF
    
    # 3. 安装
    sudo dnf clean all
    sudo dnf install nginx
    

    验证

    # nginx -V
    nginx version: nginx/1.30.4
    

    启用 systemd

    sudo systemctl enable --now nginx
    sudo systemctl status nginx
    curl -I http://localhost
    

    会看到 200 的响应。

    HTTP/1.1 200 OK
    Server: nginx/1.30.4
    Date: Wed, 22 Jul 2026 07:15:47 GMT
    Content-Type: text/html
    Content-Length: 896
    Last-Modified: Wed, 15 Jul 2026 18:05:52 GMT
    Connection: keep-alive
    ETag: "6a57cc00-380"
    Accept-Ranges: bytes
    

    安装 redis

    https://redis.io/docs/latest/operate/oss_and_stack/install/archive/install-stack/linux/#from-the-official-red-hatrocky-rpm-feeds

    From the official Red Hat/Rocky RPM Feeds

    果然,这两个系统被归为一类了。

    /etc/yum.repos.d/redis.repo

    [Redis]
    name=Redis
    baseurl=http://packages.redis.io/rpm/rhel8
    enabled=1
    gpgcheck=1
    

    安装:

    curl -fsSL https://packages.redis.io/gpg > /tmp/redis.key
    sudo rpm --import /tmp/redis.key
    sudo yum install epel-release
    sudo yum install redis-stack-server
    

    不要漏掉 sudo yum install epel-release,否则会报错缺少依赖。

    # redis-server --version
    Redis server v=7.4.6 sha=4b03ddfd:0 malloc=jemalloc-5.3.0 bits=64 build=8a9aacd8a7e90802
    

    启用 systemd

    sudo systemctl enable redis-stack-server
    sudo systemctl start redis-stack-server
    

    配置文件

    # cat /etc/redis-stack.conf
    port 6379
    daemonize no
    loadmodule /opt/redis-stack/lib/rediscompat.so
    loadmodule /opt/redis-stack/lib/redisearch.so
    loadmodule /opt/redis-stack/lib/redistimeseries.so
    loadmodule /opt/redis-stack/lib/rejson.so
    loadmodule /opt/redis-stack/lib/redisbloom.so
    loadmodule /opt/redis-stack/lib/redisgears.so v8-plugin-path /opt/redis-stack/lib/libredisgears_v8_plugin.so
    

    设置密码:

    echo "requirepass xxxx" | sudo tee -a /etc/redis-stack.conf
    sudo systemctl restart redis-stack-server.service
    

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式