跳至主要内容
版本:4.0

在 Debian 和 Ubuntu 上安装

概述

本指南涵盖在 Debian、Ubuntu 和基于其中一个的发行版上安装 RabbitMQ。

RabbitMQ 包含在标准 Debian 和 Ubuntu 存储库中。但是,包含的版本最新的 RabbitMQ 版本 落后很多版本,并且可能提供已超出支持范围 的 RabbitMQ 版本。

RabbitMQ 团队创建了自己的 Debian 包,并使用 Cloudsmith 分发它们。

本指南的关键部分是

支持的 Erlang 版本 将从现代 Erlang apt 存储库 之一在LaunchpadCloudsmith.io 镜像上进行配置。

那些希望更详细地了解执行的安装步骤的人应该参考

更高级的主题包括

如何在 Debian 和 Ubuntu 上安装最新 RabbitMQ

使用 Apt

目前,在 Debian 和 Ubuntu 上安装现代 RabbitMQ 的推荐选项是使用Cloudsmith 镜像上的 apt 存储库快速启动脚本)。

这些存储库提供了现代版本的 Erlang。或者,最新的 Erlang 版本可通过Launchpad PPA 和其他存储库 获得。

手动使用 Dpkg

或者,可以手动下载软件包并使用 dpkg -i 安装。此选项需要手动安装所有 RabbitMQ 包依赖项,强烈建议不要使用。

支持的发行版

RabbitMQ 支持几个主要的基于 Debian 的发行版,这些发行版仍受其主要供应商或开发人员组的通用(“完整”,无需额外费用)支持。

对于 Debian,这意味着 RabbitMQ 核心团队围绕软件包的重点是在基于 Debian 的发行版的当前和先前版本上,即与发行版 EOL 策略 一致。

目前,支持的基于 Debian 的发行版列表包括

  • Ubuntu 20.04、22.04 和 24.04
  • Debian Bullseye (11)、Bookworm (12) 和 Trixie (“testing”)

如果满足依赖项(例如,使用 backports 存储库),该软件包可能适用于其他基于 Debian 的发行版,但它们的测试和支持是尽力而为的。

在 Debian 和 Ubuntu 上获取最新 Erlang 版本的位置

RabbitMQ 需要 Erlang/OTP 才能运行。标准 Debian 和 Ubuntu 存储库中的 Erlang/OTP 软件包可能过时且不受现代 RabbitMQ 版本支持

最新的 Erlang/OTP 发布系列可从多个替代 apt 存储库获得

Erlang 发布系列提供它的 Apt 存储库笔记
26.x

3.12.0 开始支持,从3.13.0 开始要求。请参阅Erlang 兼容性指南

25.x

3.10.0 开始支持,从3.11.0 开始要求。请参阅Erlang 兼容性指南

本指南将重点关注 RabbitMQ 团队在LaunchpadCloudsmith.io 上维护的 Debian 存储库。

使用 Cloudsmith 镜像的 Apt:快速启动脚本

以下是执行这些步骤的 shell 代码段。

#!/bin/sh

sudo apt-get install curl gnupg apt-transport-https -y

## Team RabbitMQ's main signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Community mirror of Cloudsmith: modern Erlang repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Community mirror of Cloudsmith: RabbitMQ repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null

## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main

# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main

## Provides RabbitMQ
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main

# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main
EOF

## Update package indices
sudo apt-get update -y

## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing

使用 Cloudsmith 镜像的 Apt

RabbitMQ 团队维护着两个Cloudsmith 上的 apt 存储库,这是一个软件包托管服务。它们为最新的 RabbitMQ 和现代 Erlang 版本提供软件包。

Cloudsmith 存储库有一个每月流量配额,可能会用完。因此,以下示例使用 Cloudsmith 存储库镜像。镜像存储库中的所有软件包都使用相同的签名密钥签名。

本指南将重点关注一种更传统、更显式的设置附加 apt 存储库和安装软件包的方法。

除非另有说明,否则以下介绍的所有步骤都是必须的

安装基本依赖项

sudo apt-get update -y

sudo apt-get install curl gnupg -y

启用 apt HTTPS 传输

为了使 apt 能够从 Cloudsmith.io 镜像或 Launchpad 下载 RabbitMQ 和 Erlang 软件包,必须安装 apt-transport-https 软件包

sudo apt-get install apt-transport-https

添加存储库签名密钥

Cloudsmith 使用自己的 GPG 密钥(每个存储库一个)对分发的软件包进行签名。RabbitMQ 团队的镜像具有相同的内容,因此,软件包使用相同的密钥签名。

为了使用这些存储库,必须将它们的签名密钥添加到系统中。这将使 apt 能够信任由该密钥签名的软件包。

sudo apt-get install curl gnupg apt-transport-https -y

## Team RabbitMQ's main signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Community mirror of Cloudsmith: modern Erlang repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Community mirror of Cloudsmith: RabbitMQ repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null

请参阅有关签名的指南,以了解更多信息。

添加存储库(Apt 源列表)文件

重要

本节中描述的文件内容将根据目标基于 Debian 的发行版略有不同。请确保切换到相应的选项卡。

与所有第三方 apt 存储库一样,描述 RabbitMQ 和 Erlang 软件包存储库的文件必须放置在 /etc/apt/sources.list.d/ 目录下。/etc/apt/sources.list.d/rabbitmq.list 是推荐的位置。

文件内容将根据使用的发行版略有不同。

sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases from a Cloudsmith mirror
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main

# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu noble main

## Provides RabbitMQ from a Cloudsmith mirror
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main

# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu noble main
EOF

安装软件包

更新 apt 源列表后,必须运行 apt-get update

sudo apt-get update -y

然后使用以下命令安装软件包

## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing

Debian 软件包版本和存储库固定

版本固定是可选步骤。如果未使用,apt 将安装可用的最新版本。

当同一个软件包(例如 erlang-base)可从多个 apt 存储库获得时,操作员需要有一种方法来指示应该优先考虑哪个存储库。还可以限制 Erlang 版本以避免不必要的升级。可以使用apt 软件包固定 功能来解决这两个问题。

软件包固定是使用放置在 /etc/apt/preferences.d/ 目录下的文件配置的,例如 /etc/apt/preferences.d/erlang。更新 apt 偏好后,必须运行 apt-get update

sudo apt-get update -y

以下偏好文件示例将配置 apt 从上面示例中使用的 Cloudsmith 镜像安装 erlang-* 软件包

# /etc/apt/preferences.d/erlang
Package: erlang*
Pin: origin ppa1.rabbitmq.com
# Note: priority of 1001 (greater than 1000) allows for downgrading.
# To make package downgrading impossible, use a value of 999
Pin-Priority: 1001

以下是与上面示例类似的示例,但更喜欢 Launchpad

# /etc/apt/preferences.d/erlang
Package: erlang*
Pin: origin ppa.launchpad.net
# Note: priority of 1001 (greater than 1000) allows for downgrading.
# To make package downgrading impossible, use a value of 999
Pin-Priority: 1001

可以使用以下命令验证有效的软件包固定策略

sudo apt-cache policy

以下偏好文件示例将固定所有 erlang-* 软件包到 25.3(假设软件包的软件包纪元 为 1)

# /etc/apt/preferences.d/erlang
Package: erlang*
Pin: version 1:26.2.5.2-1
# Note: priority of 1001 (greater than 1000) allows for downgrading.
# To make package downgrading impossible, use a value of 999
Pin-Priority: 1001

以下偏好文件示例将固定 rabbitmq-server 软件包到4.0.2(假设软件包的软件包纪元 为 1)

# /etc/apt/preferences.d/rabbitmq
Package: rabbitmq-server
Pin: version 1:4.0.2-1
# Note: priority of 1001 (greater than 1000) allows for downgrading.
# To make package downgrading impossible, use a value of 999
Pin-Priority: 1001

使用 Dpkg 手动安装

在某些情况下,直接从 GitHub 下载软件包并使用 sudo dpkg -i 手动安装可能更容易。以下是下载链接。

描述下载签名
.deb for Debian-based Linux (from GitHub)rabbitmq-server_4.0.2-1_all.deb签名

使用 dpkg 手动安装时,需要先安装软件包依赖项。与 apt 不同的是,dpkg 不会解析或管理依赖项。

以下是一个安装 wget、下载 RabbitMQ 软件包并安装它的示例

# sync package metadata
sudo apt-get update
# install dependencies manually
sudo apt-get -y install socat logrotate init-system-helpers adduser

# download the package
sudo apt-get -y install wget
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v4.0.2/rabbitmq-server_4.0.2-1_all.deb

# install the package with dpkg
sudo dpkg -i rabbitmq-server_4.0.2-1_all.deb

rm rabbitmq-server_4.0.2-1_all.deb

推荐使用 apt 存储库 进行安装,而不是直接下载软件包并使用 dpkg -i 安装。手动使用 dpkg -i 安装 RabbitMQ 软件包时,操作员有责任确保满足所有软件包依赖项。

用户权限要求

RabbitMQ Debian 软件包需要 sudo 权限才能安装和管理。在没有 sudo 的环境中,请考虑使用 通用二进制构建

运行 RabbitMQ 服务器

启动服务器

默认情况下,安装 RabbitMQ 服务器软件包时,服务器会作为守护进程启动。它将以非特权用户 rabbitmq 的身份运行。

作为管理员,像往常一样启动和停止基于 Debian 的系统的服务器

systemctl start rabbitmq-server

配置 RabbitMQ

在大多数系统上,节点应该能够使用所有默认设置启动并运行。请参考 配置指南 了解更多信息,以及 部署指南,了解开发环境之外的指南。

注意:节点设置为以系统用户 rabbitmq 的身份运行。如果 节点数据库或日志的位置 发生更改,则必须将这些文件和目录归该用户所有。

端口访问

RabbitMQ 节点绑定到端口(打开服务器 TCP 套接字)以接受客户端和 CLI 工具连接。其他进程和工具(如 SELinux)可能会阻止 RabbitMQ 绑定到端口。发生这种情况时,节点将无法启动。有关更多详细信息,请参考 网络指南

默认用户访问

代理会创建一个用户 guest,密码为 guest。未配置的客户端通常会使用这些凭据。默认情况下,这些凭据只能在作为 localhost 连接到代理时使用,因此您需要采取行动才能从任何其他机器连接。

有关如何创建更多用户和删除 guest 用户的信息,请参阅有关 访问控制 的文档。

控制 Linux 上的系统限制

运行生产工作负载的 RabbitMQ 安装可能需要调整系统限制和内核参数,以处理相当数量的并发连接和队列。需要调整的主要设置是最大打开文件数,也称为 ulimit -n。许多操作系统上的默认值对于消息代理来说太低(在几个 Linux 发行版上为 1024)。我们建议在生产环境中为用户 rabbitmq 允许至少 65536 个文件描述符。对于许多开发工作负载,4096 应该足够了。

这里有两个限制:操作系统内核允许的最大打开文件数 (fs.file-max) 和每个用户的限制 (ulimit -n)。前者必须高于后者。

使用 systemd(最新 Linux 发行版)

在使用 systemd 的发行版上,操作系统限制通过位于 /etc/systemd/system/rabbitmq-server.service.d/limits.conf 的配置文件进行控制。例如,要将最大打开文件句柄限制 (nofile) 设置为 64000

[Service]
LimitNOFILE=64000

如果上述限制设置为高于 65536 的值,则必须相应地更新 ERL_MAX_PORTS 环境变量,以增加 运行时 限制。

请参阅 systemd 文档,了解支持的限制和其他指令。

使用 Docker

要为 Docker 容器配置内核限制,请在 Docker 守护进程配置文件 中使用 "default-ulimits" 键。该文件必须安装在 Docker 主机上的 /etc/docker/daemon.json

{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 64000,
"Soft": 64000
}
}
}

如果上述限制设置为高于 65536 的值,则必须相应地更新 ERL_MAX_PORTS 环境变量,以增加 运行时 限制。

验证限制

RabbitMQ 管理 UI 在“概述”选项卡上显示了可供其使用的文件描述符数量。

rabbitmq-diagnostics status

包含相同的值。

以下命令

cat /proc/$RABBITMQ_BEAM_PROCESS_PID/limits

可用于显示正在运行进程的有效限制。$RABBITMQ_BEAM_PROCESS_PID 是运行 RabbitMQ 的 Erlang VM 的操作系统 PID,由 rabbitmq-diagnostics status 返回。

管理服务

要启动和停止服务器,请使用 systemctl 工具。服务名称为 rabbitmq-server

# stop the local node
sudo systemctl stop rabbitmq-server

# start it back
sudo systemctl start rabbitmq-server

systemctl status rabbitmq-server 将报告 systemd(或类似的服务管理器)观察到的服务状态

# check on service status as observed by service manager
sudo systemctl status rabbitmq-server

它将生成类似于以下内容的输出

Redirecting to /bin/systemctl status rabbitmq-server.service
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/rabbitmq-server.service.d
└─limits.conf
Active: active (running) since Wed 2021-05-07 10:21:32 UTC; 25s ago
Main PID: 957 (beam.smp)
Status: "Initialized"
CGroup: /system.slice/rabbitmq-server.service
├─ 957 /usr/lib/erlang/erts-10.2/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- ...
├─1411 /usr/lib/erlang/erts-10.2/bin/epmd -daemon
├─1605 erl_child_setup 400000
├─2860 inet_gethost 4
└─2861 inet_gethost 4

Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ## ##
Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ## ## RabbitMQ 3.13.7. Copyright (c) 2005-2024 Broadcom. All Rights Reserved. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ########## Licensed under the MPL 2.0. Website: https://rabbitmq.cn/
Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ###### ##
Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: ########## Logs: /var/log/rabbitmq/rabbit@localhost.log
Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: /var/log/rabbitmq/rabbit@localhost_upgrade.log
Aug 26 10:21:30 localhost.localdomain rabbitmq-server[957]: Starting broker...
Aug 26 10:21:32 localhost.localdomain rabbitmq-server[957]: systemd unit for activation check: "rabbitmq-server.service"
Aug 26 10:21:32 localhost.localdomain systemd[1]: Started RabbitMQ broker.
Aug 26 10:21:32 localhost.localdomain rabbitmq-server[957]: completed with 6 plugins.

rabbitmqctlrabbitmq-diagnostics 和其他 CLI 工具 将在 PATH 中可用,并且可以由启用 sudo 的用户调用

# checks if the local node is running and CLI tools can successfully authenticate with it
sudo rabbitmq-diagnostics ping

# prints enabled components (applications), TCP listeners, memory usage breakdown, alarms
# and so on
sudo rabbitmq-diagnostics status

# prints cluster membership information
sudo rabbitmq-diagnostics cluster_status

# prints effective node configuration
sudo rabbitmq-diagnostics environment

如果未运行任何节点,所有 rabbitmqctl 命令都将报告错误。请参阅 CLI 工具监控 指南,了解更多信息。

日志文件和管理

服务器日志 可在 可配置的 目录下找到,当 RabbitMQ 通过 Linux 包管理器安装时,该目录通常默认为 /var/log/rabbitmq

RABBITMQ_LOG_BASE 可用于覆盖 日志目录位置

假设是一个基于 systemd 的发行版,可以使用以下方法检查系统服务日志

journalctl --system

这需要超级用户权限。它的输出可以过滤掉,以缩小到 RabbitMQ 特定的条目

sudo journalctl --system | grep rabbitmq

输出将类似于以下内容

Aug 26 11:03:04 localhost rabbitmq-server[968]: ##  ##
Aug 26 11:03:04 localhost rabbitmq-server[968]: ## ## RabbitMQ 3.13.7. Copyright (c) 2005-2024 Broadcom. All Rights Reserved. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
Aug 26 11:03:04 localhost rabbitmq-server[968]: ########## Licensed under the MPL 2.0. Website: https://rabbitmq.cn/
Aug 26 11:03:04 localhost rabbitmq-server[968]: ###### ##
Aug 26 11:03:04 localhost rabbitmq-server[968]: ########## Logs: /var/log/rabbitmq/rabbit@localhost.log
Aug 26 11:03:04 localhost rabbitmq-server[968]: /var/log/rabbitmq/rabbit@localhost_upgrade.log
Aug 26 11:03:04 localhost rabbitmq-server[968]: Starting broker...
Aug 26 11:03:05 localhost rabbitmq-server[968]: systemd unit for activation check: "rabbitmq-server.service"
Aug 26 11:03:06 localhost rabbitmq-server[968]: completed with 6 plugins.

日志轮换

代理始终追加到 日志文件,因此会保留完整的日志历史记录。

logrotate 是推荐的日志文件轮换和压缩方式。默认情况下,该软件包会将 logrotate 设置为每周在默认 /var/log/rabbitmq 目录中的文件中运行。轮换配置位于 /etc/logrotate.d/rabbitmq-server 中。

从 Launchpad 上的 Apt 存储库 (PPA) 安装 Erlang

本节介绍从 Launchpad 安装现代 Erlang 软件包。要安装现代 Erlang 和 RabbitMQ,请参考 从 Cloudsmith 镜像安装 RabbitMQ

Ubuntu 上的现代 Erlang

重要

本节中描述的 apt 存储库特定于 Ubuntu。它们不能与 Debian 发行版一起使用。

标准 Debian 和 Ubuntu 存储库往往提供过时的 Erlang/OTP 版本。RabbitMQ 团队维护着几个 apt 存储库,其中包括 最新 Erlang/OTP 版本的软件包,这些软件包位于 Launchpad 上

Launchpad 上的 Erlang 存储库目前针对以下 Ubuntu 发行版

  • Ubuntu 22.04 (Noble)
  • Ubuntu 22.04 (Jammy)
  • Ubuntu 20.04 (Focal)

或者,一套 Cloudsmith 镜像(见上文)支持相同的版本,也可以在 Debian 发行版上使用,而不仅仅是 Ubuntu。

要使用该存储库,需要

  • 安装通过 HTTPS 下载签名密钥和软件包所需的先决条件
  • 将存储库签名密钥添加到您的系统。apt 将在安装期间验证软件包签名。
  • 添加存储库源列表文件
  • 更新软件包元数据
  • 安装 RabbitMQ 所需的 Erlang 软件包

安装基本依赖项

sudo apt-get update -y

sudo apt-get install curl gnupg -y

添加存储库签名密钥

要使用该存储库,请将 RabbitMQ 签名密钥 添加到系统。这将使 apt 能够信任由该密钥签名的软件包。

# primary RabbitMQ signing key
curl -1sLf "https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.github.rabbitmq.signing.gpg > /dev/null

# Launchpad PPA signing key for apt
curl -1sLf "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xf77f1eda57ebb1cc" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg > /dev/null

请参阅有关签名的指南,以了解更多信息。

启用 apt HTTPS 传输

为了使 apt 能够从 Cloudsmith.io 镜像或 Launchpad 下载 RabbitMQ 和 Erlang 软件包,必须安装 apt-transport-https 软件包

sudo apt-get install apt-transport-https

添加源列表文件

重要

本节中描述的文件内容将根据目标基于 Debian 的发行版略有不同。请确保切换到相应的选项卡。

与所有第三方 Apt(Debian)存储库一样,描述该存储库的文件必须放在 /etc/apt/sources.list.d/ 目录下。/etc/apt/sources.list.d/erlang.list 是推荐的位置。

该文件应该包含一个存储库(apt 源文件)定义行。其内容将因 Ubuntu 版本而异。

# This Launchpad PPA repository provides Erlang packages produced by the RabbitMQ team
#
# Replace $distribution with the name of the Ubuntu release used. On Debian,
# use "bionic"
deb [arch=amd64 signed-by=/usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] https://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu noble main
deb-src [signed-by=/usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] https://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu noble main

安装 Erlang 软件包

更新 apt 源列表后,必须运行 apt-get update

sudo apt-get update -y

然后,可以像使用标准 Debian 存储库一样安装软件包

# This is recommended. Metapackages such as erlang and erlang-nox must only be used
# with apt version pinning. They do not pin their dependency versions.
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
© 2024 RabbitMQ. All rights reserved.