centos7中通过rpm方式安装rabbitMq时出现Requires: erlang >= 20.3 Available: erlang-R16B-03.18.el7.x86问题

本文详细介绍了在使用rpm方式安装RabbitMQ时遇到的依赖问题及解决方案,特别是当遇到erlang版本不匹配时的手动配置repo源、清理rpm缓存及安装合适版本erlang的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用rpm方式安装rabbitmq时,执行yum install rabbitmq-server-3.7.18-1.el7.noarch.rpm出现以下问题:

yum install rabbitmq-server-3.7.18-1.el7.noarch.rpm 
Loaded plugins: fastestmirror
Examining rabbitmq-server-3.7.18-1.el7.noarch.rpm: rabbitmq-server-3.7.18-1.el7.noarch
Marking rabbitmq-server-3.7.18-1.el7.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package rabbitmq-server.noarch 0:3.7.18-1.el7 will be installed
--> Processing Dependency: erlang >= 20.3 for package: rabbitmq-server-3.7.18-1.el7.noarch
Loading mirror speeds from cached hostfile
--> Finished Dependency Resolution
Error: Package: rabbitmq-server-3.7.18-1.el7.noarch (/rabbitmq-server-3.7.18-1.el7.noarch)
           Requires: erlang >= 20.3
           Available: erlang-R16B-03.18.el7.x86_64 (epel)
               erlang = R16B-03.18.el7
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

通过erl查看,发现已经安装了21.0的erl,这时需要重新安装最新的erlang

1.手动配置erlang的repo源
vi /etc/yum.repos.d/rabbitmq-erlang.repo
在文件中加入以下内容:

# In /etc/yum.repos.d/rabbitmq-erlang.repo
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1

2.清理rpm文件缓存
yum clean all
yum makecache

3.查看已有的源文件
yum list |grep erlang 此时发现有一个21.3的文件可以用,我们就安装这个文件
在这里插入图片描述
yum install erlang.x86_64
完成后继续执行yum install rabbitmq-server-3.7.18-1.el7.noarch.rpm提示成功
在这里插入图片描述

错误:软件包:rabbitmq-server-3.13.7-1.el8.noarch (rabbitmq_server) 需要:erlang >= 26.0 已安装: erlang-23.3.4.11-1.el7.x86_64 (@rabbitmq-erlang) erlang = 23.3.4.11-1.el7 可用: erlang-R16B-03.18.el7.x86_64 (epel) erlang = R16B-03.18.el7 可用: erlang-20.3.8.25-1.el7.x86_64 (rabbitmq-erlang) erlang = 20.3.8.25-1.el7 可用: erlang-20.3.8.26-1.el7.x86_64 (rabbitmq-erlang) erlang = 20.3.8.26-1.el7 可用: erlang-21.3.8.14-1.el7.x86_64 (rabbitmq-erlang) erlang = 21.3.8.14-1.el7 可用: erlang-21.3.8.15-1.el7.x86_64 (rabbitmq-erlang) erlang = 21.3.8.15-1.el7 可用: erlang-21.3.8.16-1.el7.x86_64 (rabbitmq-erlang) erlang = 21.3.8.16-1.el7 可用: erlang-21.3.8.18-1.el7.x86_64 (rabbitmq-erlang) erlang = 21.3.8.18-1.el7 可用: erlang-21.3.8.21-1.el7.x86_64 (rabbitmq-erlang) erlang = 21.3.8.21-1.el7 可用: erlang-22.2.7-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.2.7-1.el7 可用: erlang-22.2.8-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.2.8-1.el7 可用: erlang-22.3-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.3-1.el7 可用: erlang-22.3.1-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.3.1-1.el7 可用: erlang-22.3.2-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.3.2-1.el7 可用: erlang-22.3.3-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.3.3-1.el7 可用: erlang-22.3.4-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.3.4-1.el7 可用: erlang-22.3.4.7-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.3.4.7-1.el7 可用: erlang-22.3.4.10-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.3.4.10-1.el7 可用: erlang-22.3.4.11-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.3.4.11-1.el7 可用: erlang-22.3.4.12-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.3.4.12-1.el7 可用: erlang-22.3.4.16-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.3.4.16-1.el7 可用: erlang-22.3.4.19-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.3.4.19-1.el7 可用: erlang-22.3.4.21-1.el7.x86_64 (rabbitmq-erlang) erlang = 22.3.4.21-1.el7 可用: erlang-23.1.2-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.1.2-1.el7 可用: erlang-23.1.5-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.1.5-1.el7 可用: erlang-23.2.1-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.2.1-1.el7 可用: erlang-23.2.3-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.2.3-1.el7 可用: erlang-23.2.4-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.2.4-1.el7 可用: erlang-23.2.5-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.2.5-1.el7 可用: erlang-23.2.6-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.2.6-1.el7 可用: erlang-23.2.7-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.2.7-1.el7 可用: erlang-23.2.7-2.el7.x86_64 (rabbitmq-erlang) erlang = 23.2.7-2.el7 可用: erlang-23.3-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.3-1.el7 可用: erlang-23.3-2.el7.x86_64 (rabbitmq-erlang) erlang = 23.3-2.el7 可用: erlang-23.3.1-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.3.1-1.el7 可用: erlang-23.3.2-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.3.2-1.el7 可用: erlang-23.3.3-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.3.3-1.el7 可用: erlang-23.3.4-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.3.4-1.el7 可用: erlang-23.3.4.1-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.3.4.1-1.el7 可用: erlang-23.3.4.3-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.3.4.3-1.el7 可用: erlang-23.3.4.4-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.3.4.4-1.el7 可用: erlang-23.3.4.5-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.3.4.5-1.el7 可用: erlang-23.3.4.6-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.3.4.6-1.el7 可用: erlang-23.3.4.7-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.3.4.7-1.el7 可用: erlang-23.3.4.8-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.3.4.8-1.el7 可用: erlang-23.3.4.10-1.el7.x86_64 (rabbitmq-erlang) erlang = 23.3.4.10-1.el7 您可以尝试添加 --skip-broken 选项来解决该问题 您可以尝试执行:rpm -Va --nofiles --nodigest
最新发布
07-13
<think>我们正在解决RabbitMQ安装遇到的Erlang版本依赖问题。根据引用[1][2][3]的信息,RabbitMQ需要特定版本的Erlang支持,而当前系统安装Erlang版本(R16B-03.18.el7)过低(需要>=26.0)。以下提供两种解决方案:升级Erlang版本或使用Docker安装RabbitMQ。 ### 解决方案一:升级Erlang安装RabbitMQ(推荐) #### 步骤1:卸载旧版Erlang ```bash sudo yum remove erlang* -y sudo yum autoremove -y ``` #### 步骤2:添加Erlang 26+仓库 由于系统是CentOS/RHEL 7,需添加RabbitMQ官方提供的Erlang仓库: ```bash # 导入仓库密钥 sudo rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc # 创建仓库文件 cat <<EOF | sudo tee /etc/yum.repos.d/rabbitmq-erlang.repo [rabbitmq-erlang] name=rabbitmq-erlang baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/\$basearch repo_gpgcheck=1 gpgcheck=1 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 EOF ``` #### 步骤3安装Erlang 26+ ```bash sudo yum clean all sudo yum makecache sudo yum install erlang-26.0 -y ``` #### 步骤4:验证Erlang版本 ```bash erl -eval &#39;{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), io:fwrite(Version), halt().&#39; -noshell ``` 输出应为`26.x`或更高版本。 #### 步骤5:安装RabbitMQ 3.13.7 ```bash # 添加RabbitMQ仓库 cat <<EOF | sudo tee /etc/yum.repos.d/rabbitmq.repo [rabbitmq-server] name=rabbitmq-server baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/\$basearch repo_gpgcheck=1 gpgcheck=1 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 EOF # 安装RabbitMQ sudo yum install rabbitmq-server-3.13.7 -y ``` #### 步骤6:启动服务 ```bash sudo systemctl start rabbitmq-server sudo systemctl enable rabbitmq-server sudo rabbitmq-plugins enable rabbitmq_management ``` ### 解决方案二:使用Docker安装(快速规避依赖问题) 引用[4]提到,当系统版本(如CentOS 7)无法满足依赖,可使用Docker安装: ```bash # 拉取RabbitMQ镜像(含管理插件) docker pull rabbitmq:3.13.7-management # 运行容器 docker run -d \ --name rabbitmq \ -p 5672:5672 \ -p 15672:15672 \ rabbitmq:3.13.7-management ``` 访问管理界面:`http://服务器IP:15672`(默认账号/密码:`guest`/`guest`)。 ### 注意事项 1. **版本兼容性**:RabbitMQErlang版本必须严格匹配,具体对应关系参考[官方文档](https://www.rabbitmq.com/which-erlang.html)[^1]。 2. **强制安装风险**:引用[3]显示强制安装(`--nodeps`)会导致RabbitMQ无法运行,不推荐。 3. **环境清理**:若曾尝试错误安装,建议彻底卸载旧版: ```bash sudo yum remove rabbitmq-server -y sudo rm -rf /var/lib/rabbitmq/ ``` > **提示**:RabbitMQ 3.13.x需要Erlang 26+以支持新特性(如流式队列)[^1]。 §§相关问题§§ 1. 如何在ARM架构服务器上安装RabbitMQ? 2. 如何验证ErlangRabbitMQ的版本兼容性? 3. 使用Docker部署RabbitMQ有哪些最佳实践? 4. 如何安全地升级生产环境的RabbitMQ版本? 5. RabbitMQ安装后如何进行基本安全配置?</think>### 解决 RabbitMQ 安装错误:需要 Erlang >= 26.0 根据您提供的错误信息和引用内容[^1][^3],RabbitMQ 3.13.7 需要 Erlang 26.0 或更高版本,而您的系统安装的是旧版 Erlang (R16B)。以下是完整解决方案: #### 方案一:安装匹配的 Erlang 版本(推荐) 1. **卸载旧版 Erlang** ```bash sudo yum remove erlang* -y sudo yum autoremove -y ``` 2. **添加 Erlang 26+ 仓库** ```bash # 导入仓库密钥 sudo rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc # 添加仓库配置(CentOS/RHEL 7) cat <<EOF | sudo tee /etc/yum.repos.d/rabbitmq-erlang.repo [rabbitmq-erlang] name=rabbitmq-erlang baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/\$basearch repo_gpgcheck=1 gpgcheck=1 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 EOF ``` 3. **安装 Erlang 26+** ```bash sudo yum clean all sudo yum makecache sudo yum install erlang-26.0 -y ``` 4. **验证安装** ```bash erl -eval &#39;{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), io:fwrite(Version), halt().&#39; -noshell ``` 应输出 `26.x` 或更高版本 5. **安装 RabbitMQ** ```bash # 添加 RabbitMQ 仓库 cat <<EOF | sudo tee /etc/yum.repos.d/rabbitmq.repo [rabbitmq-server] name=rabbitmq-server baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/\$basearch repo_gpgcheck=1 gpgcheck=1 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 EOF sudo yum install rabbitmq-server-3.13.7 -y ``` #### 方案二:使用 Docker 安装(快速绕过依赖问题) 引用[^4]建议使用 Docker 作为替代方案: ```bash # 拉取带管理插件的镜像 docker pull rabbitmq:3.13.7-management # 运行容器 docker run -d \ --name rabbitmq \ -p 5672:5672 \ -p 15672:15672 \ -e RABBITMQ_DEFAULT_USER=admin \ -e RABBITMQ_DEFAULT_PASS=secret \ rabbitmq:3.13.7-management ``` 访问管理界面:`http://服务器IP:15672`(使用 admin/secret 登录) #### 方案三:手动安装 Erlang RPM 如果仓库安装失败,可手动下载安装: 1. 从 [Erlang Solutions](https://www.erlang-solutions.com/downloads/) 下载 Erlang 26+ RPM 2. 安装: ```bash wget https://packages.erlang-solutions.com/erlang/rpm/centos/7/x86_64/esl-erlang_26.0.2-1~centos~7_amd64.rpm sudo yum install esl-erlang_26.0.2-1~centos~7_amd64.rpm -y ``` ### 关键注意事项 1. **版本兼容性**:RabbitMQErlang 必须版本匹配,参考[官方兼容表](https://www.rabbitmq.com/which-erlang.html)[^1] 2. **避免强制安装**:引用[^3]显示 `--nodeps` 安装会导致 RabbitMQ 无法正常运行 3. **环境清理**:安装前彻底移除旧版本 ```bash sudo yum remove rabbitmq-server -y sudo rm -rf /var/lib/rabbitmq/ ``` > **提示**:RabbitMQ 3.13.x 需要 Erlang 26+ 以支持新特性如流式队列和增强的 Quorum 队列[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值