How to Install Remi RPM on CentOS Stream 10 and 9

Install Remi repository on CentOS Stream 10 and 9 for PHP, Redis, and Memcached. Includes module streams and removal steps.

Last updatedAuthorJoshua JamesRead time7 minGuide typeCentOS Stream

CentOS Stream’s default repositories do not always carry the PHP, Redis, or Memcached branch a web application expects. The Remi RPM repository fills that gap with Enterprise Linux packages for current PHP branches and selected cache servers, while DNF still manages installation, updates, and removal.

To install Remi RPM on CentOS Stream, enable CRB, add EPEL from Fedora’s official release-package permalinks, and install the Remi release RPM that matches CentOS Stream 10 or 9. The PHP steps use DNF4 module commands because both supported CentOS Stream releases still use DNF4 for this workflow.

These steps support CentOS Stream 10 and CentOS Stream 9. Commands work the same on both releases unless a Stream-specific EPEL or Remi release package command is shown.

Install the Remi RPM Repository on CentOS Stream

Refresh CentOS Stream Packages

Refresh repository metadata and apply pending system updates before adding third-party repositories. Review the DNF transaction before confirming because a full upgrade can update core system packages:

sudo dnf upgrade --refresh

These commands use sudo for system-wide package and repository changes. If your account cannot use sudo, switch to the root account for the installation commands.

Install the DNF Config Manager Plugin

Minimal CentOS Stream installations may not include the dnf config-manager helper. Install dnf-plugins-core before enabling CRB:

sudo dnf install dnf-plugins-core

Enable CRB for Remi Dependencies

Remi and EPEL packages often depend on libraries from CRB (CodeReady Builder). Enable CRB before installing EPEL:

sudo dnf config-manager --set-enabled crb

Confirm CRB is enabled:

dnf repolist --enabled | grep -E '^crb[[:space:]]'
crb              CentOS Stream 10 - CRB

CentOS Stream 9 prints the same repository ID with CentOS Stream 9 - CRB as the repository name. The /usr/bin/crb helper is installed by epel-release, so it is not the prerequisite command for this stage.

Install EPEL for CentOS Stream

Install EPEL from the official Fedora EPEL release-package permalinks. The separate CentOS Stream EPEL setup guide covers EPEL in more detail, and Fedora’s EPEL getting started page is the source for the current release RPM URLs.

For CentOS Stream 10, install the EPEL 10 release package:

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm

For CentOS Stream 9, install both EPEL and EPEL Next:

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm

EPEL Next is a CentOS Stream 9-only repository. Do not add an EPEL Next command to CentOS Stream 10 unless Fedora publishes a Stream 10 EPEL Next release package in the future.

Install the Remi Release RPM

Install the Remi auto-configuration package that matches your CentOS Stream major version. Remi lists the current Enterprise Linux release RPMs on its repository home page.

For CentOS Stream 10:

sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-10.rpm

For CentOS Stream 9:

sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Verify Remi, EPEL, and CRB Repositories

Check that DNF can see the required repositories. The whitespace-aware grep filter matches normal DNF repository output; the grep command guide explains the same pattern syntax if you need to adapt it.

dnf repolist --enabled | grep -E '^(crb|epel|epel-next|remi-modular|remi-safe)[[:space:]]'

On CentOS Stream 10, relevant output includes:

crb              CentOS Stream 10 - CRB
epel             Extra Packages for Enterprise Linux 10 - x86_64
remi-modular     Remi's Modular repository for Enterprise Linux 10 - x86_64
remi-safe        Safe Remi's RPM repository for Enterprise Linux 10 - x86_64

On CentOS Stream 9, the same check should also show epel-next. If remi-modular or remi-safe is missing, reinstall the matching Remi release RPM before continuing.

Install PHP from Remi on CentOS Stream

View Remi PHP Module Streams

List PHP module streams after the Remi repository is enabled:

dnf module list php

On CentOS Stream 10, relevant output includes the Remi streams:

Remi's Modular repository for Enterprise Linux 10 - x86_64
Name Stream   Profiles                   Summary
php  remi-7.4 common [d], devel, minimal PHP scripting language
php  remi-8.0 common [d], devel, minimal PHP scripting language
php  remi-8.1 common [d], devel, minimal PHP scripting language
php  remi-8.2 common [d], devel, minimal PHP scripting language
php  remi-8.3 common [d], devel, minimal PHP scripting language
php  remi-8.4 common [d], devel, minimal PHP scripting language
php  remi-8.5 common [d], devel, minimal PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

CentOS Stream 9 also lists AppStream PHP 8.1, 8.2, and 8.3 before the Remi section. That gives Stream 9 users a choice between distribution packages and Remi’s newer or alternate branches.

CentOS Stream 10 prints a modularity deprecation warning during module operations. The warning reflects DNF5’s future direction, but CentOS Stream 10 currently ships DNF4 and still supports the Remi module commands used in this workflow.

Choose a PHP Branch from Remi

Choose the PHP branch your application supports. PHP’s supported versions page is the source for active and security support dates:

PHP BranchStatus in May 2026Best FitSecurity Support Until
PHP 8.2Security fixes onlyLegacy applications that cannot move to PHP 8.3 or newer yetDecember 2026
PHP 8.3Security fixes onlyCompatibility-first production stacks with tested PHP 8.3 dependenciesDecember 2027
PHP 8.4Active supportProduction deployments that need recent PHP features without moving to the newest branch immediatelyDecember 2028
PHP 8.5Active supportNew projects, development environments, and applications ready for the current PHP branchDecember 2029

Older Remi streams such as remi-7.4, remi-8.0, and remi-8.1 may still appear for compatibility work, but avoid them for new deployments because upstream PHP no longer supports those branches.

Switch to a Remi PHP Stream

Use dnf module switch-to on CentOS Stream because it handles the common case where another PHP module stream is already enabled. This example installs the PHP 8.4 common profile from Remi:

sudo dnf module switch-to php:remi-8.4/common

Replace 8.4 with another supported stream, such as 8.5 or 8.3, if your application requires that branch. The common profile installs php-cli, php-fpm, php-mbstring, and php-xml on both supported CentOS Stream releases.

Verify PHP and PHP-FPM from Remi

Check the installed PHP version and package source:

php --version

Relevant output should include Remi’s build line. The point release will change as Remi publishes updates:

PHP 8.4.21 (cli) (built: May  5 2026 16:34:12) (NTS gcc x86_64)
Copyright (c) The PHP Group
Built by Remi's RPM repository <https://rpms.remirepo.net/> #StandWithUkraine
Zend Engine v4.4.21, Copyright (c) Zend Technologies

Enable PHP-FPM when the system will serve PHP through a web server:

sudo systemctl enable --now php-fpm

Verify the service state with stable systemd checks:

systemctl is-active php-fpm
systemctl is-enabled php-fpm
active
enabled

For extension packages, Apache or Nginx integration, and PHP-FPM pool configuration, use the dedicated PHP setup guide for CentOS Stream after the Remi stream is selected.

Install Redis and Memcached from Remi on CentOS Stream

Remi also publishes Redis and Memcached module streams. CentOS Stream 10’s base repositories use Valkey 7.2 instead of Redis, as noted in the CentOS Stream 10 release notes, so use Remi’s Redis packages only when the application specifically requires Redis instead of a Redis-compatible Valkey service.

Install Memcached from Remi

List the Memcached module stream:

dnf module list memcached

Relevant output includes:

Remi's Modular repository for Enterprise Linux 10 - x86_64
Name      Stream Profiles   Summary
memcached remi   common [d] High Performance, Distributed Memory Object Cache

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Enable the Remi Memcached stream, then install the package:

sudo dnf module enable memcached:remi
sudo dnf install memcached

Confirm the installed version:

memcached -h | head -1
memcached 1.6.41

Enable the Memcached service:

sudo systemctl enable --now memcached

Verify the service state:

systemctl is-active memcached
systemctl is-enabled memcached
active
enabled

Install Redis from Remi

List the Redis streams available from Remi:

dnf module list redis

On CentOS Stream 10, relevant output includes these Redis streams:

Remi's Modular repository for Enterprise Linux 10 - x86_64
Name  Stream   Profiles   Summary
redis remi-7.2 common [d] Redis persistent key-value database
redis remi-8.0 common [d] Redis persistent key-value database
redis remi-8.2 common [d] Redis persistent key-value database
redis remi-8.4 common [d] Redis persistent key-value database
redis remi-8.6 common [d] Redis persistent key-value database

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Redis Open Source version management currently lists Redis 7.2 as supported through December 1, 2029. Use Redis 7.2 for applications pinned to that long-term branch; choose a newer Remi stream only after checking application and client-library compatibility.

sudo dnf module enable redis:remi-7.2
sudo dnf install redis

Confirm the Redis CLI version:

redis-cli --version
redis-cli 7.2.14

Enable the Redis service:

sudo systemctl enable --now redis

Verify the service state:

systemctl is-active redis
systemctl is-enabled redis
active
enabled

CentOS Stream 9 also lists older Redis compatibility streams. Avoid those older streams for new services unless an application vendor explicitly requires them.

Troubleshoot Remi Repository Issues on CentOS Stream

Fix Missing DNF Config Manager

If CRB setup fails with a missing config-manager command, the DNF plugin package is not installed:

No such command: config-manager

Install the plugin package, then enable CRB again:

sudo dnf install dnf-plugins-core
sudo dnf config-manager --set-enabled crb

Fix Missing Remi Repositories

Confirm that the Remi release package is installed:

rpm -q remi-release
remi-release-10.1-3.el10.remi.noarch

If the package is missing or the release number does not match your CentOS Stream major version, reinstall the correct Remi RPM from the install section. Then verify the enabled Remi repositories:

dnf repolist --enabled | grep -E '^remi-(modular|safe)[[:space:]]'
remi-modular     Remi's Modular repository for Enterprise Linux 10 - x86_64
remi-safe        Safe Remi's RPM repository for Enterprise Linux 10 - x86_64

Fix PHP Module Stream Switch Errors

DNF blocks direct stream changes when another PHP stream is already enabled. The error commonly looks like this:

Error: It is not possible to switch enabled streams of a module unless explicitly enabled via configuration option module_stream_switch.
It is recommended to rather remove all installed content from the module, and reset the module using 'dnf module reset <module_name>' command.

Use module switch-to for normal DNF4 PHP changes:

sudo dnf module switch-to php:remi-8.4/common

If the error continues because PHP packages from another stream are already installed, schedule a maintenance window, remove the current PHP packages you no longer need, reset the module, and then switch streams:

sudo dnf remove php php-cli php-fpm php-common php-mbstring php-xml
sudo dnf module reset php
sudo dnf module switch-to php:remi-8.4/common

The same reset-then-enable pattern applies to Redis and Memcached module conflicts, but remove only packages that belong to the stream you intend to replace.

Fix DNF Cache File Errors

If DNF reports a missing file under /var/cache/dnf after a repository refresh or package upgrade, the local cache may point at a package file that no longer exists. The error usually follows this shape:

[Errno 2] No such file or directory: '/var/cache/dnf/[repo-cache]/packages/[package-name].rpm'

Clear the cached package metadata, then rebuild the cache from the enabled repositories:

sudo dnf clean all
sudo dnf makecache --refresh

Rerun the failed DNF install or module command after the cache refresh completes. If the same error returns, check mirror, proxy, or outbound HTTPS access before changing the Remi commands.

Check Remi Release RPM Downloads

Verify your CentOS Stream major version before testing release RPM URLs:

cat /etc/centos-release
CentOS Stream release 10

Use curl to check HTTP headers for the matching Remi release package:

curl -I --fail --silent --show-error https://rpms.remirepo.net/enterprise/remi-release-10.rpm | head -1
HTTP/2 200

Use remi-release-9.rpm on CentOS Stream 9. If the header check fails, fix DNS, proxy, or outbound HTTPS access before rerunning the DNF install command.

Remove Remi from CentOS Stream

Remove Packages Installed from Remi

Stop only the services you installed from the Remi examples. Skip any service command for software that is not present on your system:

sudo systemctl disable --now php-fpm
sudo systemctl disable --now redis
sudo systemctl disable --now memcached

Remove the example packages you no longer need, then reset the module streams:

sudo dnf remove php php-cli php-fpm php-common php-mbstring php-xml redis memcached
sudo dnf module reset php redis memcached

If DNF offers an autoremove cleanup afterward, review the package list before confirming so you do not remove unrelated dependencies from other services.

Remove the Remi Release Package

Remove the Remi release package after packages from Remi are no longer needed:

sudo dnf remove remi-release

Verify the package and repositories are gone:

rpm -q remi-release 2>/dev/null || echo "remi-release is not installed"
dnf repolist --enabled | grep -E '^remi' || echo "Remi repositories are disabled"
remi-release is not installed
Remi repositories are disabled

Optionally Remove EPEL

Keep EPEL installed if other packages depend on it. Check installed packages that came from EPEL before removing the EPEL release packages.

For CentOS Stream 10:

dnf repoquery --installed --repo=epel

For CentOS Stream 9:

dnf repoquery --installed --repo=epel --repo=epel-next

If the matching command returns no packages you still need, remove EPEL with the command for your CentOS Stream version.

For CentOS Stream 10:

sudo dnf remove epel-release

For CentOS Stream 9:

sudo dnf remove epel-release epel-next-release

Verify no EPEL repositories remain enabled after removal:

dnf repolist --enabled | grep -E '^epel([[:space:]]|-next[[:space:]])' || echo "EPEL repositories are disabled"
EPEL repositories are disabled

Conclusion

Remi is available to DNF on CentOS Stream, with PHP module streams and optional Redis or Memcached packages managed through normal package updates. Keep Remi and EPEL enabled while packages from those repositories remain installed; for web-server integration, continue with installing and configuring PHP on CentOS Stream and the CentOS Stream EPEL setup guide when you need deeper EPEL maintenance context.

Share this guide

Help another Linux user troubleshoot faster

Share this guide with someone troubleshooting Linux systems or saving it for later.

Follow LinuxCapable

Want more LinuxCapable guides in Google?

Add LinuxCapable as a preferred source so Google can show our tutorials more often in Top Stories and mark them as preferred in AI Mode and AI Overviews when relevant.

Add LinuxCapable as a preferred source on Google
Search LinuxCapable

Need another guide?

Search LinuxCapable for package installs, commands, troubleshooting, and follow-up guides related to what you just read.

Found this guide useful?

Support LinuxCapable to keep tutorials free and up to date.

Buy me a coffeeBuy me a coffee
Before commenting, please review our Comments Policy.
Formatting tips for your comment

You can use basic HTML to format your comment. Useful tags currently allowed in published comments:

You type Result
<code>command</code> command
<strong>bold</strong> bold
<em>italic</em> italic
<a href="https://example.com">link</a> link
<blockquote>quote</blockquote> quote block

Add to the discussion

Questions, fixes, command output, and version notes help keep this guide current.

Verify before posting: