Git Product home page Git Product logo

erlang-rpm's Introduction

Zero-dependency Erlang RPM for RabbitMQ

This is a (virtually) zero dependency Erlang RPM package that provides just enough to run RabbitMQ. It may or may not be suitable for running other Erlang-based software or 3rd party RabbitMQ plugins.

x86-64 binaries are provided with every release, while aarch64 (ARM64) binaries will be limited to new major and minor release, and patches when resources allow.

Binary packages can be produced on any host that can run Docker, including aarch64 hosts. See the Building from Source section below.

Supported RPM-based Distributions

Binary builds of this package target modern RPM-based distributions:

  • RHEL 8.4 or later
  • CentOS Stream 8
  • CentOS Stream 9
  • Rocky Linux 8.5 or later
  • Fedora 34 or later
  • Amazon Linux 2023
  • Oracle Linux 9
  • Alma Linux 9

CentOS 7 and derivatives

Team RabbitMQ stopped supporting CentOS 7 in May 2022.

Erlang 26.01 and 25.3.2.2 include one-off CentOS 7 packages statically linked against OpenSSL 1.1.x.

Regular CentOS 7 and Amazon Linux 2 builds were produced up to Erlang 23.3.4.18. They are dynamically linked against OpenSSL 1.0.

Packages for Debian-based Distributions

Team RabbitMQ also packages recent Erlang/OTP releases for Debian and a modern Erlang PPA for Ubuntu.

Provided Erlang/OTP Versions

The package targets Erlang/OTP 26.x, 25.x, and 24.x. Both x86-64 and aarch64 versions can be build in containers.

Important: first RabbitMQ version with initial Erlang 26 is supported is 3.12.0. Full Erlang 26 support will be announced later.

RabbitMQ Version Compatibility

See Supported Erlang Versions in RabbitMQ documentation for an up-to-date compatibility matrix.

Erlang 26

First RabbitMQ version with initial Erlang 26 is supported is 3.12.0. Full Erlang 26 support will be announced later.

Erlang 25

Erlang 25 is supported by RabbitMQ starting with 3.10.0.

Erlang 25 depends on OpenSSL 1.1, which is not available on CentOS 7. Therefore Erlang 25 packages are only produced for modern Fedora, Rocky Linux, CentOS Stream, and Amazon Linux 2023.

Erlang 24

Erlang 24 is supported by RabbitMQ starting with 3.8.16.

Erlang 24 depends on OpenSSL 1.1, which is not available on CentOS 7. Therefore Erlang 24 packages are only produced for modern Fedora, Rocky Linux and CentOS Stream.

Implicit OpenSSL/libcrypto Dependency

This package intentionally does not include OpenSSL/libcrypto. It must be provisioned separately. Recent Erlang versions require a modern OpenSSL version, currently this means 1.1.x or later.

Release Artifacts

For direct RPM package downloads, see GitHub releases.

There is also a dnf repository that distributes x64_86 builds of this package. See the repository setup instructions below.

Signing Keys

The package is signed using the standard RabbitMQ signing key:

## primary RabbitMQ signing key
rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc

To use the Cloudsmith dnf repository, a separate Cloudsmith repository key must be imported:

## primary RabbitMQ signing key
rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
## modern Erlang repository
rpm --import 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key'

Direct Downloads from GitHub

This package is distributed as a single RPM, which makes it convenient to download and install using dnf install -y /path/to/erlang.rpm.

Erlang 25 x86-64 and aarch64 releases can be provisioned on RHEL 9, CentOS Stream 9, Amazon Linux 2023, and modern Fedora using a direct download:

# This is just an example that uses an aarch64 package for Amazon Linux 2023
cd /tmp/
curl -sfL -O https://github.com/rabbitmq/erlang-rpm/releases/download/v25.3.2/erlang-25.3.2-1.amzn2023.aarch64.rpm
sudo dnf install -y ./erlang-25.3.2-1.amzn2023.aarch64.rpm

Latest Erlang Version from a Cloudsmith Mirror

This package is distributed via a dnf repository on Cloudsmith.

Cloudsmith provides shell scripts for quick dnf repository setup. See the Cloudsmith repository installation page for details.

The repository is subject to traffic quotas. When the quota is reached, no package installations will be possible for up to several days.

The examples below use a mirror of the Cloudsmith repo. All packages in it are signed with the same signing key.

Erlang 25 on RHEL 9, CentOS Stream 9, modern Fedora, Rocky Linux 9 (x86-64)

Erlang 25 x86-64 releases can be provisioned on RHEL 9, CentOS Stream 9, Rocky Linux, and modern Fedora using a dnf (yum) repository (a Cloudsmith mirror):

# In /etc/yum.repos.d/modern_erlang.repo
[modern-erlang]
name=modern-erlang-el9
# uses a Cloudsmith mirror @ yum1.novemberain.com.
# Unlike Cloudsmith, it does not have traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/9/$basearch
repo_gpgcheck=1
enabled=1
gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[modern-erlang-noarch]
name=modern-erlang-el9-noarch
# uses a Cloudsmith mirror @ yum1.novemberain.com.
# Unlike Cloudsmith, it does not have traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/9/noarch
repo_gpgcheck=1
enabled=1
gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[modern-erlang-source]
name=modern-erlang-el9-source
# uses a Cloudsmith mirror @ yum1.novemberain.com.
# Unlike Cloudsmith, it does not have traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/9/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1

To install the package:

dnf update -y
dnf install -y erlang

Erlang 25 on RHEL 8, CentOS Stream 8, Rocky Linux 8 (x86-64)

Erlang 25 x86-64 releases can be provisioned on RHEL 8, CentOS Stream 8, Rocky Linux, and modern Fedora using a dnf (yum) repository (a Cloudsmith mirror):

# In /etc/yum.repos.d/modern_erlang.repo
[modern-erlang]
name=modern-erlang-el8
# uses a Cloudsmith mirror @ yum1.novemberain.com.
# Unlike Cloudsmith, it does not have traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/8/$basearch
repo_gpgcheck=1
enabled=1
gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[modern-erlang-noarch]
name=modern-erlang-el8-noarch
# uses a Cloudsmith mirror @ yum1.novemberain.com.
# Unlike Cloudsmith, it does not have traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/8/noarch
repo_gpgcheck=1
enabled=1
gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[modern-erlang-source]
name=modern-erlang-el8-source
# uses a Cloudsmith mirror @ yum1.novemberain.com.
# Unlike Cloudsmith, it does not have traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/8/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1

To install the package:

dnf update -y
dnf install -y erlang

Available Erlang Applications

This package removes certain Erlang/OTP components that are non-essential for running RabbitMQ but can greatly complicate installation process by bringing in complicated dependencies.

Only the following OTP applications are provided:

  • asn1
  • compiler
  • crypto
  • eldap
  • erl_interface
  • erts
  • inets
  • kernel
  • mnesia
  • os_mon
  • public_key
  • reltool
  • runtime_tools
  • sasl
  • snmp
  • ssl
  • stdlib
  • syntax_tools
  • xmerl

Building from Source

With Docker

This repository provides scripts that can build an image with the rpmbuild toolchain and build the package in it. They can be found under the ./docker directory.

cd docker

#
# Use build-image-and-rpm.sh to execute all scripts:
# build an image and build the RPM in it
#
# Supported distribution aliases:
#  * stream9 for CentOS Stream 9
#  * stream8 for CentOS Stream 8
#  * al2023 for Amazon Linux 2023
#  * f38 for Fedora 38
#
./build-image-and-rpm.sh stream9 --no-cache

#
# To only build an image with the necessary toolchain,
# use ./build-docker-image.sh.
#
# Supported distribution aliases:
#  * stream9 for CentOS Stream 9
#  * stream8 for CentOS Stream 8
#  * al2023 for Amazon Linux 2023
#  * f38 for Fedora 38
 ./build-docker-image.sh stream9 --no-cache

#
# To only build the RPM using an already built and available image,
# use ./build-rpm-in-docker.sh
#
# Supported distribution aliases:
#  * stream9 for CentOS Stream 9
#  * stream8 for CentOS Stream 8
#  * al2023 for Amazon Linux 2023
#  * f38 for Fedora 38
#
./build-rpm-in-docker.sh stream9

Built packages can be found under docker/pkg-build-dir/RPMS/{architecture}/.

Without Docker

On an RPM-based distro (CentOS Stream 9, modern Fedora or Amazon Linux 2023), the package can be built without containers.

# add sudo if necessary
make

and see RPMS/{architecture}/. Note that all artifacts created this way may be owned by root due to the use of sudo.

Scope of Patching

The patches apply to the build system only (Makefile, Makefile.in and similar files). No source code is patched.

Older Versions

The directory versions contains the patch files used for the older versions. Git repository history and release archive can be useful as well.

Copyright and License

Copyright VMware, Inc and its affiliates, 2011-2023. All Rights Reserved.

Released under the Apache Software License 2.0, same as Erlang/OTP starting with 18.0.

erlang-rpm's People

Contributors

acogoluegnes avatar dumbbell avatar gilacost avatar gsantomaggio avatar hrw avatar michaelklishin avatar mkuratczyk avatar ncaio avatar shanemcd avatar spring-operator avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.