In Linux, there are a multitude of package formats and package managers.
Ubuntu and other Debian-based distributions use DEB packages, while Red Hat, Fedora-based distros use RPM packages.
When downloading an application, you'll often see both DEB and RPM options.
In some rare cases, you'll find that an application is only available in RPM format. And if that's the case and you are desperate to use the application in Ubuntu or Debian, there is still a shot worth trying.
You can try converting the RPM package to DEB file using Alien tool and then install this deb file. Indirectly, you are installing RPM file on Ubuntu.
This is very experimental and not every RPM converted to DEB can be installed on Ubuntu. You may get lucky but be prepared to get disappointed as well.
Before you convert RPM to DEB
Converting an RPM package to DEB should be your last resort. Do the following beforehand.
- Make sure that the application is not available in DEB format. Check if there is a PPA you could use.
- Check if the application in question is available in Snap, Flatpak or AppImage format. If yes, use that instead.
- See if you can use an alternative application for the same purpose. Your purpose usually should be to get the end result, not get the end result with XYZ tool only.
Once you have done that and found that you got no other option left, then only you go ahead and use to convert RPM to DEB.
Alien is a small utility that allows you to convert between various package formats.
By various, I mean, it can convert RPM to DEB, to Solaris PKG, TGZ packages and vice versa.
You need to install it first:
sudo apt install alien
Now that you have installed it, let's go and convert some RPM files.
While converting from other formats to Deb, you should keep in mind to avoid important system packages like libc, init system packages etc. Since these packages are created based on distribution, replacing it with an alien may result in catastrophic effects. Also, you should not install alien for those packages that may cause system break if removed.
Create a DEB File from RPM
For the purpose of this tutorial, I am using an RPM file of WeekToDo, an open source To Do application.
If you are converting an RPM or any other package to Deb, you need to install some dependencies, using the command given below (some are pre-installed in Ubuntu and Debian):
sudo apt install gcc make debhelper dpkg-dev dpkg
Once it is installed, run the following command to convert RPM to DEB:
sudo alien --to-deb <path-to-RPM-file>
Or you can omit the
--to-deb as this is the default.
sudo alien <path-to-RPM-file>
You can now install the Deb file using any of the usual method.
sudo apt install <path-to-deb-file>
Install an RPM file directly
If you want to skip the intermediate step of creating a deb file and want to install the RPM file directly, run:
sudo alien -i <path-to-RPM-file>
This will install the respective RPM file after converting and removes the package file, after installed.
Keep the same version number
Alien, during conversion, adds one to the minor version number. This can be avoided, if you want, by specifying the option
sudo alien -k <Path-to-RPM-file>
Try to convert the scripts
Sometimes, you may need to convert the scripts meant to be run when the package is installed and removed. To do so, run:
sudo alien --scripts <path-to-RPM-file>
sudo alien -c <path-to-RPM-file>
You should use this with utmost caution. Because the scripts might be designed to work on a system unlike your own, and this will result in various issues that may be hard to solve.
Also, you should examine the scripts by yourself and verify no issues may arise from it, once converted.
You can use the same alien too to convert DEB files to RPM.
Other Useful Options
|sudo alien --to-rpm 'path-to-deb-file'||Converts the given deb file to rpm. You need rpm installed for this purpose.|
|--verbose||Display all the commands executed by alien, during the process|
|--veryverbose||Display all the commands, along with their outputs, executed by alien during the process|
You can refer to its man page for more details about the program, like applying patches, testing etc.