How to Install RPM Packages on Debian 13, 12 and 11

Install RPM packages on Debian 13, 12 and 11 using Alien. Convert RPM to DEB, resolve dependencies and troubleshoot issues.

UpdatedPublished AuthorJoshua JamesRead time12 minGuide typeDebian

RPM files are a last-resort package format on Debian because APT and dpkg track native DEB packages, not Fedora, RHEL, or CentOS package metadata. When a vendor only publishes an RPM, you can install RPM packages on Debian by converting the file with Alien, checking what the converted package contains, and installing the resulting local DEB with APT.

Alien works best for self-contained user applications, command-line tools, or vendor utilities that do not replace core system components. Avoid using Alien for kernels, libc, init systems, package managers, display drivers, security modules, or anything you could not safely remove again from Debian.

Search Debian packages, the vendor’s official DEB or APT repository, Flatpak, Snap, or AppImage options before converting an RPM. Native Debian packaging gives you cleaner dependency handling, normal security updates, and safer removal.

Install Alien on Debian

Alien is available from Debian’s default repositories. Installing it also installs the RPM tools and Debian packaging helpers that Alien needs to read RPM archives and build DEB packages.

Update the Debian Package Index

Refresh APT metadata before installing Alien so Debian uses the current package candidate from your enabled repositories:

sudo apt update

These commands use sudo for package installation and local DEB installation, both of which require root privileges. If your account cannot use sudo yet, add the account through sudo user management on Debian before continuing.

Install the Alien Package

Install Alien from Debian’s repositories:

sudo apt install alien

APT pulls in several supporting packages. The important roles are rpm and rpm2cpio for reading RPM archives, plus dpkg-dev, debhelper, make, cpio, and Perl tooling for building the converted DEB package.

Package RoleWhy Alien Needs It
alienCoordinates package conversion between RPM, DEB, TGZ, and related binary package formats.
rpm and rpm2cpioRead RPM package metadata and extract RPM payloads during conversion.
dpkg-dev and debhelperBuild the Debian package metadata and helper structure for the generated DEB.
make, cpio, and Perl helpersSupport the packaging scripts Alien runs while assembling the converted package.

Verify Alien on Debian

Check that the alien command is available:

alien --version

Example output on Debian 13:

alien version 8.95.8

Debian release packages can differ, so treat any valid alien version response as the success signal. Current default candidates are:

Debian ReleaseDefault Alien PackagePackage Source
Debian 13 (Trixie)8.95.8Debian main
Debian 12 (Bookworm)8.95.6Debian main
Debian 11 (Bullseye)8.95.4Debian main

Decide Whether an RPM Is Safe to Convert

Alien can convert many RPM files, but conversion does not make Fedora or RHEL packaging logic become Debian packaging logic. Before converting anything, check package source, architecture, dependency names, maintainer scripts, and removal risk.

Check for a Native Debian Package First

Search Debian’s repositories for the software or command name:

apt search package-name

If a likely package appears, inspect its candidate and source before choosing the RPM path:

apt-cache policy package-name

Use the Debian package when it satisfies your version and feature needs. If the package only appears after enabling contrib, non-free, or non-free-firmware, use the Debian repository path described in Debian contrib and non-free repository setup instead of converting an RPM.

Use a Trusted Binary RPM File

Alien is for binary package conversion, not source RPM builds. If the vendor offers both .rpm and .src.rpm files, use the binary RPM that matches your CPU architecture. A source RPM is a build input and belongs in a source-build workflow with build dependencies, not a quick Alien conversion.

Download RPM files from the software vendor or another trusted package source. When the vendor publishes a checksum, compare it before converting the file:

sha256sum package-name.rpm

The checksum output must match the value published by the vendor. If the vendor publishes a GPG signature or repository signing instructions, use that verification path as well. Do not convert RPM files downloaded from forum attachments, paste sites, or unofficial mirrors when the software affects credentials, networking, browsers, drivers, or system services.

Confirm Debian and RPM Architecture Names

Check the architecture Debian expects on your system:

dpkg --print-architecture

Common Debian and RPM architecture labels map like this:

Debian ArchitectureCommon RPM LabelMeaning
amd64x86_6464-bit Intel and AMD systems.
arm64aarch6464-bit ARM systems.
i386i386 or i68632-bit x86 systems, uncommon on current desktop and server installs.
allnoarchArchitecture-independent package content, often documentation, scripts, Java applications, or shared data.

Do not convert an RPM built for a different CPU family. Alien can change package metadata, but it cannot make an x86_64 binary run on ARM or turn an ARM package into an amd64 package. RPM packages marked noarch usually convert to Debian architecture all, which means the package content is architecture-independent.

Avoid Direct RPM Installation on Debian

Debian installs the rpm command as an inspection and conversion helper for Alien, not as your normal package manager. If you try a direct RPM install with sudo rpm -i package-name.rpm, some Debian releases warn with lines like these:

rpm: RPM should not be used directly install RPM packages, use Alien instead!
rpm: However assuming you know what you are doing...

Newer RPM builds may show less warning output, but the underlying problem is the same: RPM does not manage Debian’s dpkg database the same way APT does. Installing directly with RPM can leave Debian unaware of files, dependencies, and package state that APT normally owns.

Choose Good RPM Conversion Candidates

RPM TypeConversion RiskRecommendation
Self-contained desktop app or CLI toolLower, if dependencies exist on Debian and scripts are simple.Reasonable Alien candidate after metadata and script inspection.
Vendor package that only adds files under /opt or /usr/shareModerate, because launchers, icons, and library paths still need checking.Convert only after verifying file list and update ownership.
Service package with users, groups, units, or post-install scriptsHigh, because RPM scripts may assume Fedora or RHEL paths and helper commands.Prefer a Debian package, container, vendor DEB, or documented source install.
Core system library, kernel, boot component, package manager, driver, or security moduleVery high, with real system breakage risk.Do not use Alien for this category.

Convert an RPM Package to DEB on Debian

The safest Alien pattern is to convert the RPM first, inspect the generated DEB, and install the DEB with APT. Alien also has an automatic install mode, but keeping conversion and installation separate gives you a review point before Debian changes package state.

Create a Conversion Workspace

Keep RPM and generated DEB files in a separate directory so cleanup stays obvious:

mkdir -p ~/rpm-conversion
cp ~/Downloads/package-name.rpm ~/rpm-conversion/
cd ~/rpm-conversion

Replace package-name.rpm with the exact RPM filename you downloaded from the vendor or trusted source.

Inspect RPM Metadata and Scripts

Read the RPM package metadata before conversion:

rpm -qip package-name.rpm

Check the package name, version, release, architecture, vendor, summary, license, and description. The package name matters later because Debian removes the installed package by package name, not by the downloaded RPM filename.

If Debian prints RPM database permission noise while reading package metadata, retry the same read-only query with sudo. Do not switch to rpm -i or rpm -U as the install method.

Inspect the file list so you know what the package wants to place on the filesystem:

rpm -qlp package-name.rpm | sed -n '1,120p'

Paths under /opt, /usr/share, or a vendor-specific application directory are usually easier to reason about. Paths that replace system libraries, package-manager files, PAM configuration, boot files, or broad directories under /usr/lib need much more caution.

Check whether the RPM contains install, upgrade, or removal scripts:

rpm -qp --scripts package-name.rpm

No script output is the easiest case. Alien does not preserve normal RPM scriptlets by default during RPM-to-DEB conversion. If scripts appear, read them before deciding whether to preserve them with Alien’s --scripts option. RPM scripts can create users, reload services, edit caches, or call tools and paths that do not exist on Debian.

Convert RPM to DEB Format

Convert the RPM into a Debian package:

sudo alien --to-deb package-name.rpm

--to-deb is the explicit form of Alien’s default DEB output. On Debian 13, 12, and 11, Alien requires root privileges for this conversion path unless you deliberately use fakeroot, so sudo is appropriate here.

Alien writes the generated .deb file in the current directory. By default, it increments the RPM release by one, so an RPM release such as 1.0-1 can become a converted DEB version such as 1.0-2. Use --keep-version only when you have a specific package-version reason to preserve the RPM version exactly.

List the generated DEB filename:

ls -1 *.deb

Inspect the Generated DEB Package

Read the converted package metadata before installing it:

dpkg-deb -f package-name_1.0-2_amd64.deb Package Version Architecture Depends

Replace the DEB filename with the file Alien generated. The Package field is the installed package name you will use for verification, updates, and removal.

If the original RPM used noarch, the generated filename and Architecture field may use all instead of amd64. That is normal for packages without compiled architecture-specific binaries.

Preview the DEB file list as well:

dpkg-deb -c package-name_1.0-2_amd64.deb | sed -n '1,120p'

If the generated package still looks wrong, delete the generated DEB and stop. Do not install a package whose file list, dependencies, or scripts you do not understand.

Install the Converted DEB Package on Debian

Install the converted package with APT so Debian can resolve dependencies from enabled Debian repositories where possible:

sudo apt install ./package-name_1.0-2_amd64.deb

The ./ prefix is important. It tells APT to install a local file from the current directory instead of searching for a repository package with the same name.

Verify the installed package state with the package name from the generated DEB metadata:

dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package} ${Version}\n' package-name

A healthy installed package starts with ii. If the line starts with iU, iF, rc, or another status, the package is unpacked, half-configured, removed with configuration left behind, or otherwise not fully installed.

List installed files when you need to find the command name, launcher, documentation, or installed paths:

dpkg -L package-name | sed -n '1,120p'

If the package installs a command-line tool, check the command path and version or help output:

command -v binary-name
binary-name --version

Replace binary-name with the actual executable installed by the package. Some packages use a different command name than the RPM or DEB package name.

Practical Example RPM Conversion Flow

For example, if a vendor RPM is named vendor-tool-2.4.1-1.x86_64.rpm, the manual review flow would look like this:

mkdir -p ~/rpm-conversion
cp ~/Downloads/vendor-tool-2.4.1-1.x86_64.rpm ~/rpm-conversion/
cd ~/rpm-conversion
rpm -qip vendor-tool-2.4.1-1.x86_64.rpm
rpm -qlp vendor-tool-2.4.1-1.x86_64.rpm | sed -n '1,120p'
rpm -qp --scripts vendor-tool-2.4.1-1.x86_64.rpm
sudo alien --to-deb vendor-tool-2.4.1-1.x86_64.rpm
ls -1 *.deb
dpkg-deb -f vendor-tool_2.4.1-2_amd64.deb Package Version Architecture Depends
sudo apt install ./vendor-tool_2.4.1-2_amd64.deb

The exact generated DEB filename can differ when the RPM package name, release, or architecture differs. Use ls -1 *.deb and the Package field from dpkg-deb -f instead of guessing later command names.

Use Alien Options Carefully

Alien has several useful options, but some of them change safety and inspection points. Keep the basic convert, inspect, install flow until you know a package behaves well on Debian.

OptionWhat It DoesUse It When
--to-deb or -dCreates a Debian .deb package. This is Alien’s default output.You want the normal RPM-to-DEB conversion path for Debian.
--install or -iConverts the package, installs the generated package, and removes the generated package file.You already trust the RPM and do not need to inspect the generated DEB. Avoid it for first attempts.
--scripts or -cAttempts to convert install and removal scripts from the source package.You reviewed the scripts and confirmed they make sense on Debian.
--keep-version or -kPrevents Alien from incrementing the converted package version.You need exact version continuity and understand how it affects future upgrades.
--generate or -gCreates a temporary package build tree instead of building the final package.You need to inspect or adjust packaging files before building.
--test or -TTests generated Debian packages with lintian when lintian is installed.You want an additional packaging-quality check before installation.

Do not enable --scripts only because the package failed without it. First inspect the script content with rpm -qp --scripts. A script written for RHEL or Fedora can call paths, service names, users, groups, repository tools, or SELinux helpers that do not exist on Debian.

Update Converted RPM Packages on Debian

Converted RPM packages do not receive automatic upstream updates through APT. APT can upgrade the local package only when you provide a newer converted DEB or when the vendor package added a real APT source, which Alien conversions normally do not do.

For a newer vendor RPM, repeat the conversion and install the new generated DEB:

cd ~/rpm-conversion
sudo alien --to-deb package-name-new-version.rpm
ls -1 *.deb
sudo apt install ./package-name_2.0-2_amd64.deb

Replace the final DEB filename with the new file Alien generated for your package. The version and architecture suffix may not match the example.

Verify Debian sees the new package version:

dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package} ${Version}\n' package-name

If you need long-term updates for the software, look for a vendor-supported DEB package, official APT repository, Flatpak, Snap, or AppImage instead of repeating manual RPM conversion indefinitely. Desktop applications often work better through Flatpak on Debian or Snap on Debian when the vendor publishes those formats.

Remove Converted Packages and Alien from Debian

Removal has two layers: the converted package you installed, and the Alien tooling used to create it. Remove the converted package by its Debian package name, not by the original RPM filename.

Remove a Converted RPM Package

Remove the converted package while keeping any package configuration files:

sudo apt remove package-name

Use purge only when you want Debian to remove package-managed configuration files as well:

sudo apt purge package-name

Check the package state after removal:

dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package}\n' package-name 2>/dev/null || true

No output means the package record is gone. A line beginning with rc means package files are removed but configuration files remain, which is normal after apt remove and can be cleared with apt purge when appropriate.

Clean RPM and DEB Installer Files

Package removal does not delete RPM files you downloaded or DEB files Alien generated. Review the conversion workspace first:

find ~/rpm-conversion -maxdepth 1 -type f \( -name '*.rpm' -o -name '*.deb' \) -print

Deleting local installer and conversion files from ~/rpm-conversion removes your easiest local reinstall source. Keep any RPM or DEB files you still need for rollback, reinstall, comparison, or audit records.

rm -i ~/rpm-conversion/*.rpm ~/rpm-conversion/*.deb

Remove Alien When It Is No Longer Needed

Remove Alien itself after you finish converting RPM packages:

sudo apt remove alien

Review dependencies that APT now considers unused:

sudo apt autoremove

Do not auto-confirm this command on shared systems. Read the package list before accepting removal, especially if the machine has recently handled other development, packaging, or desktop software.

Troubleshoot RPM Conversion Issues on Debian

RPM conversion problems usually come from one of four layers: the RPM file is not a valid package, Alien lacks the privileges or helpers it needs, APT cannot satisfy converted dependencies, or the installed program expects libraries and paths from an RPM-based distribution.

Alien Says It Must Run as Root

When a normal user runs Debian’s RPM-to-DEB conversion path, Alien can stop with this message:

Must run as root to convert to deb format (or you may use fakeroot).

Use the root-backed conversion form:

sudo alien --to-deb package-name.rpm

Package builders can use fakeroot, but that is a packaging workflow rather than the normal install path for most Debian users converting a one-off RPM.

Alien Reports an Unknown File Type

Check whether the downloaded file is actually an RPM package:

file package-name.rpm

A valid RPM should be identified as an RPM package. If the file command says HTML, XML, JSON, or plain text, the download probably saved an error page, login page, or redirect response instead of the package file. Download the RPM again from the vendor’s official package page.

APT Cannot Satisfy Converted Dependencies

APT can resolve dependencies only when equivalent packages exist in Debian’s enabled repositories and the converted package declares names Debian understands. Re-run the local install so APT prints the dependency problem clearly:

sudo apt install ./package-name_1.0-2_amd64.deb

Search Debian for each missing dependency or likely library name:

apt search missing-library-name
apt-cache policy missing-library-name

If Debian has a matching package, install it and retry the local DEB. If Debian lacks the dependency or uses an incompatible ABI, the RPM is not a good Alien candidate on that Debian release.

Interrupted package states can sometimes be repaired with APT’s broken-dependency resolver:

sudo apt --fix-broken install

If APT cannot complete the install, remove the converted package by package name and choose another source:

sudo apt remove package-name

Converted Software Requires libssl1.1

Some older RPM packages still depend on OpenSSL 1.1 libraries. Debian 11 provides libssl1.1 through its Bullseye security packages, but Debian 12 uses libssl3 and Debian 13 uses libssl3t64. A package that requires libssl1.1 is usually too old for Debian 12 or 13 unless the vendor publishes a newer build.

Check the available OpenSSL runtime packages on your release:

apt-cache policy libssl1.1 libssl3 libssl3t64

Do not pull random libssl1.1 packages from older Debian releases into Debian 12 or 13 just to satisfy a converted RPM. That can create unsupported library mixes. Use a current vendor build, a native Debian package, a container, or a Debian 11 system when the software genuinely requires the older ABI.

Program Installs but the Command Will Not Start

Find the installed files and likely executable paths:

dpkg -L package-name | grep -E '/bin/|/sbin/'

If the binary exists but fails at runtime, check for missing shared libraries:

ldd /path/to/binary | grep 'not found'

No output means ldd did not find missing shared libraries for that binary. If missing libraries appear, search Debian for the closest package names. When the required library is not available for your Debian release, stop using the converted package instead of forcing unrelated packages from another release.

Package Name and File Name Do Not Match

RPM filenames can include upstream version, release, distribution tag, and architecture details that do not match the installed Debian package name. Use package metadata instead of guessing from filenames:

dpkg-deb -f package-name_1.0-2_amd64.deb Package
dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package} ${Version}\n' package-name

Use the value from the Package field for apt remove, apt purge, dpkg -L, and dpkg-query checks.

Better Alternatives to RPM Conversion on Debian

Alien is useful when an RPM is the only practical package format, but it should not become your default software source on Debian. Pick the source that matches the software’s update and support model.

  • Use Debian packages from main, contrib, non-free, or non-free-firmware when Debian already packages the software.
  • Use a vendor DEB package or vendor APT repository when the vendor officially supports Debian or Debian-compatible packages.
  • Use Flatpak or Snap for desktop software when the vendor maintains those channels and you prefer store-managed updates.
  • Use AppImage or a vendor tarball when the software is designed to run from a self-contained bundle.
  • Use a container, VM, or RPM-based chroot when the software truly expects Fedora, RHEL, Rocky Linux, AlmaLinux, or CentOS Stream.

Do not add Fedora, RHEL, Rocky Linux, or CentOS Stream .repo files to Debian. Those repository definitions are for DNF or YUM, not APT, and they do not become Debian package sources.

Conclusion

Debian can handle an RPM-only vendor package when Alien conversion is inspected, installed through APT, and treated as a manual-maintenance package. For anything you need to keep updated long term, prefer Debian repositories, a vendor DEB or APT source, Flatpak, Snap, AppImage, or an environment that matches the RPM’s original distribution family.

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 more of our fresh Linux tutorials in Top Stories and From your sources 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
<blockquote>quote</blockquote> quote block

Got a Question or Feedback?

We read and reply to every comment - let us know how we can help or improve this guide.

Let us know you are human: