YUM (Yellowdog Updater, Modified) is a free and powerful package manager for RPM-based Linux distributions. It was initially developed to manage packages on the RHEL but now works in all RPM-based systems, including CentOS, Fedora, Scientific Linux, and Oracle Linux.
It has become the de-facto tool for installing and maintaining Linux packages on these systems due to its rich feature set and easy-to-use parameters. No matter whether you’re a sysadmin managing your system remotely or an everyday user, you can use yum commands to locate specific packages, install them, or remove them with ease.
YUM Commands for RPM-Based Distributions
Our editors have selected 50 widely used Yum commands for admins and general users in this guide. Although this guide focuses primarily on RHEL and CentOS, these commands will work the same for all systems using RPM. We suggest readers go over them one by one and bookmark this guide for future reference.
1. Installing a Package
One of the primary uses of a package manager like Yum is to install packages on your Linux or BSD system. Luckily, yum makes it very easy to install packages.
$ sudo yum install PACKAGE-NAME $ sudo yum install firefox
Yum will search the package in its repositories and resolve all your dependency issues. It will display information like the repository name, where the package is available, and its size. Simply enter Y in the confirmation prompt to start the installation.
$ sudo yum -y install firefox
The above command will not ask for confirmation and install the Firefox package in one go. It’s a good way to automate your system management.
2. Removing a Package
Admins often need to remove obsolete packages to keep their systems fresh. You can use the following command to remove an already installed package from your system.
$ sudo yum remove PACKAGE-NAME $ sudo yum remove firefox
This command will also ask for user confirmation, as seen earlier. You can either enter Y to carry on the package removal process or use the below command to skip this step altogether.
$ sudo yum -y remove firefox
3. Updating a Package
Open-source packages keep rolling out newer releases to improve performance and tackle bugs. To update an installed RPM package, use the following command in your Linux terminal.
$ sudo yum update PACKAGE-NAME $ sudo yum update firefox
This will look for any latest updates and, if available, will ask the user for confirmation on whether to install the new release or not. Add the -y option after yum if you want to skip this prompt or are running this command from within Linux shell scripts.
$ sudo yum -y update firefox
4. Listing Package Information
Admins should have a clear understanding of all the installed packages in their system. Yum makes this very easy by exposing the list option. See the below command to learn how this works.
$ sudo yum list firefox
When you run the above command, it will display the version of Firefox installed on your machine and its source architecture. If you don’t have Firefox installed, it will display the available packages for this web browser alongside the version information.
5. Finding a Package
Searching is an essential feature of Linux package managers. It allows users to locate packages without knowing their specific names beforehand. Yum makes this task very easy, as you will see in the next command.
$ sudo yum search PACKAGE-NAME $ sudo yum search httpd
This command will search for all packages that contain the word ‘httpd‘ in them. The results will be displayed based on three criteria. The first is the exact name match, then the name & summary match, and finally, the summary match. Yum will also show short descriptions to help users easily locate the one they want.
6. Displaying Package Information
You can find a lot of information about a package using the info sub-command of yum. This is essential for making sure you’re not installing any harmful applications in your workstation or remote servers.
$ sudo yum info PACKAGE-NAME $ sudo yum info firefox
The above command will show all relevant information about the Firefox package on your terminal. It will contain version information as well as the size of the package, release information, licensing, and a short description of the Firefox package.
7. Displaying all Installed Packages
You can easily display all the packages installed in your RPM-based system by using the following simple yum command.
$ sudo yum list installed $ sudo yum list installed | less
The above commands will display a list of all currently installed packages. However, the second command is more flexible since it allows users to scroll through the list using the PageUp and PageDown buttons on their keyboard.
8. Checking if a Package is Already Installed
We can combine the above command with the Linux grep command to check whether a specific application has already been installed on our machine. This saves us from scrolling through the entire list of packages.
$ sudo yum list installed | grep curl
You can also use the awk command in Linux to perform this task, as shown below. Check out our previous guide on awk to learn more about how it works.
$ sudo yum list installed | awk '/curl/ {print}'
9. Displaying all Available and Installed Packages
The list sub-command also allows us to view all the available and installed packages for our system. This is useful in a number of situations.
$ sudo yum list | less
This will first show all the packages already installed in your system, followed by a list of all available packages. Use the following command if you wish to see only the available packages.
$ sudo yum list available | less
10. Displaying all Available Updates
Admins should always try to keep their system up to date by installing the most recent packages. The following simple command makes this very easy for RPM-based systems.
$ sudo yum list updates | less
This command will display all packages in your system that have updates available. You can now upgrade them to keep getting rid of outdated packages and replace them with their latest alternatives with ease.
11. Displaying Available Updates for Your System
The above command will show all the packages in the Yum repositories that have updates available to them. However, in most cases, your system will only have a select number of these packages installed. So, usually, you don’t need to list available updates for all repository packages.
$ sudo yum check-update
The above command shows only the updates that are available for your installed packages. Thus, it is more than enough for most real-life scenarios.
12. Updating the System
The yum update command allows users to update their RPM-based systems very easily. The below command will download and install all the latest updates for your installed packages as well as any recent security patches.
$ sudo yum update
It will display the packages that are going to be installed alongside their version and size information. Since this command asks the users for confirmation, you will need to manually enter the keystroke Y. Use the following command if you want to avoid this.
$ sudo yum -y update
13. Applying Security Patches Only
If you are a system admin responsible for managing remote RHEL or CentOS servers, chances are you’ll often want to leave the user-space programs alone and only install security updates. Luckily, you can use the command below to do this.
$ sudo yum update --security $ sudo yum -y update --security
This command will only download and apply the security patches to your RPM-based server. You can use the following command to see what security patches are available at a given time.
$ sudo yum info-sec
14. Upgrading RPM Packages
The yum upgrade command will install newer versions of your installed packages and remove the obsolete packages. The yum update command demonstrated earlier may or may not do this based on the packages.
$ sudo yum upgrade $ sudo yum -y upgrade
Although removing the obsolete packages might save you some storage, they can cause trouble in many ways and sometimes even break the system. That’s why our editors recommend that you use the yum update command instead.
15. Installing Packages from Local File
Sometimes, you may already have the RPM package you want to install on your machine. You can easily install them by using the following yum command in Linux.
$ sudo yum localinstall abc-1-1.i686.rpm
The above command will install the package given by the specified rpm file. If the file is in some other directory, simply pass its location using the following command.
$ sudo yum localinstall /path/to/abc-1-1.i686.rpm
16. Querying Packages for Files
The yum package manager exposes a handy sub-command called provides that allows the users to see which package contains a certain file. This is very useful in a number of scenarios, as you will see below.
$ sudo yum provides /bin/curl
This yum command will display the package that contains the curl command in Linux. The below command will list the package that has the file /etc/httpd/conf/httpd.conf.
$ sudo yum provides /etc/httpd/conf/httpd.conf
17. Displaying all Package Groups
Linux usually groups a set of packages based on their usage, like, say, System Tools or Graphics. Each group contains multiple packages that serve a similar function. Admins often install a group of packages altogether to save their time and refrain from manually picking packages.
$ sudo yum grouplist
This command allows users to list all available and installed package groups. You can now easily see which group of packages are installed on your machine and which groups are available for installation.
18. Installing Group Packages
Once you have viewed which groups are available for installation, you can proceed to install them. Use the following command from your Linux terminal emulator to do this.
$ sudo yum groupinstall 'Network Servers' $ sudo yum -y groupinstall 'Network Servers'
This command will install all packages that are grouped under ‘Network Servers’. It will take care of any dependencies for you and update old packages accordingly. You can use any group of packages in the same way to save time later on.
19. Updating Group Packages
What makes package groups really useful is that you can perform operations on them like any other yum command. Say you installed the group ‘Network Servers’ using the above command earlier. Now, if you want to update the packages under this group, you can easily do so by using the following command.
$ sudo yum groupupdate 'Network Servers' $ sudo yum -y groupupdate 'Network Servers'
This command will see if any latest update is available for any packages under ‘Network Servers’ and install them if it can find any. It will take care of the user’s dependencies as well.
20. Removing Group Packages
Removing a package group using yum is as easy as installing them. You can remove the group ‘Network Servers’ using the following yum command in Linux.
$ sudo yum groupremove 'Network Servers' $ sudo yum -y groupremove 'Network Servers'
As you can see, yum allows users to install, update, or remove package groups just like with standalone packages. It makes system management much easier for both general users and remove server admins.
21. Displaying Enabled or Disabled Repositories
Linux packages can reside in various yum repositories. You can display the enabled repositories for your RPM-based system to see from where a certain package can be installed.
$ sudo yum repolist $ sudo yum repolist enabled
You can also list the disabled repositories by using the next command. You can not install Linux packages from any of these repos.
$ sudo yum repolist disabled
22. Displaying all Repositories
The following yum command will list all yum repositories for your RPM-based Linux distribution. This listing will contain information like the repo name and the repo ID and indicate whether a certain repo is enabled or disabled in your system.
$ sudo yum repolist all
This command is very handy for remote admins since it allows them to check the available repositories in one go.
23. Enabling or Disabling YUM Repositories
As you’ve already seen, yum offers a broad set of repos for packages. You can use the yum-config-manager to enable or disable a yum repo very easily. It is a tool that allows admins to manage the configuration options in yum and repositories.
$ sudo yum repolist all $ sudo yum-config-manager --enable extras
First, we’ve listed all yum repos for convenience. Next, we have enabled the repository extras using yum-config-manager and its repo id.
$ sudo yum-config-manager --disable extras
Finally, this command disables this extras repository. Remember to use the repo id instead of the repo name when enabling or disabling yum repos.
24. Updating Packages to Specific Version
Earlier, we saw how to update a yum package or package groups. However, in both of these cases, yum will update the packages to the latest available version. What if you want to update your package to a specific version? You can easily do this using the below command.
$ sudo yum update-to abc-1-1.i686.rpm
When you run this command, yum will update the said abc package to the specified version. Make sure this version is available in your enabled repos, or else this command will fail to execute.
25. Downgrading an Existing Package
Sometimes, you may want to downgrade certain packages due to issues like untracked bugs or incompatibility with the latest release of existing Linux shell scripts. This is also fairly easy when using the Yum package manager.
$ sudo yum downgrade abc
This will downgrade the package abc to its older release. You can use the following command to downgrade this package to a specific version.
$ sudo yum downgrade abc-1-0.1.i686.rpm
However, if this version of the package is missing in your active repo, this operation will fail to execute.
26. Installing and Removing Packages at the Same Time
Sometimes, you may want to install a new package and remove another from your system. Thankfully, yum makes this very easy for RPM-based Linux distributions. This is called a swap installation.
$ sudo yum swap ftp lftp
When you run this command, yum will first remove the ftp package from the system and then install the lftp package. This is useful for many Linux admins since it allows for much more flexible package management.
27. Removing Cached Packages
Yum makes a cache of each package you install on your system. This can lead to storage issues over time, so you may want to remove them every once in a while. Simply issue the following yum command to remove all cached packages from your system.
$ sudo yum clean packages
This command deletes all downloaded packages from the yum cache. Admins should use this command to stop the accumulation of excess cached packages.
28. Cleaning Packages and Metadata
Package managers like Yum not only cache installation files but also a lot of metadata. As you can guess already, too much of this can cause trouble over time. However, you can easily clean up your system by removing these using the following simple command.
$ sudo yum clean all
This command will eliminate cached installation files and header files as well as clean cached data from the dbcache, local rpmdb, plugins, and other metadata information. However, yum may take some extra time when you install new packages the next time.
29. Downloading Metadata for Repositories
You can download and configure the yum metadata required for all repositories that are currently enabled. This will speed up your package management operations for the next use. See the below command to learn how to do this.
$ sudo yum makecache
This command will make sure that the yum cache is up to date with the latest metadata. You can also set the expiration time of this metadata by configuring the metadata-expire setting found in the /etc/yum.conf file.
30. Displaying Package Dependencies
Linux packages are modular by design and will often depend on many other packages to provide their functionality. You can list all the dependencies of a yum package by using the following yum command in Linux.
$ sudo yum deplist nfs-utils
This command will list all the dependencies for the rpm package nfs-utils. It will also highlight the packages that provide those packages and the names of the yum repositories that contain them. This is a very useful command for server admins since it makes it easy to visualize the dependencies.
31. Completing Remaining Transactions
Sometimes, situations may arise when your Linux workstation or server fails to complete ongoing package management jobs due to system failure or some unwanted reasons. The Yum package manager allows admins to complete these operations pretty easily, as demonstrated by the below command.
$ sudo yum-complete-transaction
The above command will locate all unfinished transactions and complete them accordingly. It makes package management hassle-free during system maintenance. You can also clean only the transaction journal files and exit them by using the command below.
$ sudo yum-complete-transaction --cleanup-only
32. Skip Broken Packages when Updating
Since repos contain a substantial number of packages, users often have to deal with incompatible or broken packages. These occur mostly during system updates and can render the management task difficult. Luckily, you can use the following command to tell yum to skip these packages.
$ sudo yum update --skip-broken
So don’t worry if your system fails during a package management job and leaves broken packages. You’ll be able to clean them easily using the above two commands.
33. Displaying Update Information
As a system administrator, it is essential to monitor your package updates thoroughly. Thankfully, the updateinfo sub-command allows us to visualize the update process very easily.
$ sudo yum updateinfo summary
This command will display all newly available bug fixes and security patches for your system. Use the following command to get information about the security updates only.
$ sudo yum updateinfo security
Use the command below to get information about all the new updates.
$ sudo yum updateinfo list new
34. Reinstalling Packages
Users may often encounter broken packages due to a faulty installation or configuration problem. One of the quickest ways to resolve this issue is to reinstall the process or processes altogether. You can do this easily by following the below yum command.
$ sudo yum reinstall PACKAGE-NAME $ sudo yum reinstall curl
The last command will reinstall the current version of the curl command in Linux on your RHEL/CentOS system. You will find this command quite useful when troubleshooting systems.
35. Listing Installed and Available Kernels
The Linux kernel is the core component of all Linux distributions. There are several versions of these available at a given time. You can display the currently installed kernel of your system as well as all available ones by using the below simple command.
$ sudo yum list kernel
It will display the kernel information for your system alongside its version and availability. This is useful if you want to upgrade or downgrade to a different kernel version using Yum.
36. Download Packages but Don’t Install
Sometimes, you may want to download the rpm package of an application without installing the package itself. You can install this package later by using the localinstall sub-command of yum.
$ sudo yum install --downloadonly --downloaddir=/home/user/downloads curl
The above command will download the curl package and place it into the /home/user/downloads directory. Simply change this path to store the packages in a different part of the Linux file system.
37. Adding New Repositories
RHEL or CentOS admins can easily add new repositories. One common way is to edit the configuration file in /etc/yum.repos.d. However, recent versions of yum allow admins to add new repos by using the yum-config-manager tool. Simply use the command below to add new repos.
$ sudo yum-config-manager --add-repo="https://mirror.xarnet.edu.au/pub/centos/7"
Replace the string value of the –add-repo option with the URL of the repository you want to add.
38. Excluding Packages during Installations/Updates
Sometimes, you may want to exclude certain packages from your update or installation operations. This is fairly straightforward using yum. Simply use th following format to do this from the terminal.
$ sudo yum check-update $ sudo yum update -x sqlite-libs.x86_64
First, we have checked which updates are available currently. Then, we performed a system-wide update but omitted the package sqlite-libs.x86_64. So, simply use the -x option to omit rpm packages from your operation.
39. Finding Repositories of a Package
Admins can easily find out which repo a specific package or a set of packages comes from. You will need to use the tool find-repos-of-install in order to perform this operation. This is available only after installing the yum-utils package.
$ sudo yum install yum-utils $ sudo find-repos-of-install curl
First, we’ve installed the yum-utils package that contains the required command. Then, we used the find-repos-of-install command to find out which repository has the curl package.
40. Synchronizing All Packages
Admins can synchronize their RPM packages to make sure all installed packages are on par with their repository versions. Yum will upgrade or downgrade your packages based on the latest available versions found in the enabled repositories.
$ sudo yum distribution-synchronization
When you run this command, yum will download newer updates, remove obsolete packages, and even downgrade packages if required. This yum command is very useful for system maintenance since it provides an easier route to synchronization.
41. Displaying Multiple Version of a Package
You can use the –showduplicates option of yum to display all the available versions of a package. This has several use cases when troubleshooting legacy systems.
$ sudo yum --showduplicates list httpd
This command will show all versions of the httpd package that are available to your system. It is also useful when you are looking to find the specific name of an RPM package before proceeding to installation.
$ sudo yum search --showduplicates emacs
42. Displaying Repository Information
You’ll learn how to display information about Yum repositories by using the following simple command. This command provides various information about your repositories, including repo id, name, last update date, size, and baseurl.
$ sudo yum repoinfo
Use the following yum commands to limit this result to either enabled or disabled repositories.
$ sudo yum repoinfo enabled $ sudo yum repoinfo disabled
You can also use the repoinfo sub-command to find the repository information of a specific package or set of packages, as demonstrated below.
$ sudo yum repoinfo nginx
43. Working within a Specific Repository
The repo-pkgs command of yum allows admins to install or update packages from specified repositories. The below command shows you how to list all packages contained within a specific repo.
$ sudo yum repo-pkgs AppStream list
This command will list all packages offered by the AppStream repo. Use the following command to install a package from this repository.
$ sudo yum repo-pkgs AppStream install wget
You can also install or remove all packages of a repo using the following simple commands.
$ sudo yum repo-pkgs AppStream install $ sudo yum repo-pkgs AppStream remove
44. Using the Interactive YUM Shell
Yum provides an easy-to-use and robust interactive shell that allows admins to perform package management tasks more clinically. Simply type the following command at your command prompt to invoke this interactive shell.
$ sudo yum shell
You’ll be presented with a prompt that starts with ‘>’. Start typing in your yum commands in this shell one after another.
> list updates > update
Simply enter ‘quit‘ or press Ctrl + C to terminate this shell. You can also use a text file that contains all your commands in different lines. Yum will run these commands one after another.
$ sudo yum filename
45. Displaying Transaction History
Use the following command to view all the commands performed by yum till now. You can undo or redo older transactions using this very easily.
$ sudo yum history
This list displays the latest operations at the start. You can analyze a specific transaction by using their ID, as illustrated below.
$ sudo yum history info 10
Use the following commands to undo/redo certain transactions. The trailing -y option skips the confirmation prompt.
$ sudo yum history undo 20 -y $ sudo yum history undo 30 -y
46. Hiding Yum Output
By default, yum provides a select set of information about its operations. You can hide these data by using the following simple command.
$ sudo yum install httpd -y -q $ sudo yum install httpd --assumeyes --quiet
These commands are equivalent and will install the httpd package without asking for user confirmation or providing any textual output in your Linux terminal.
47. Increasing Verbosity
You can also do the opposite of the above commands by using the -v or –verbose switch of yum. In this case, yum will provide a substantial amount of output about the operation taking place.
$ sudo yum install httpd -v $ sudo yum install httpd --verbose
We’ve omitted the -y switch since chances are you want to inspect the operation before proceeding. This is an excellent tool for debugging package management operations.
48. Displaying the Help Page
You can find the summarized information of all possible command combinations by using any of the following commands.
$ yum -h $ yum --help
Additionally, use the following command to find help with a specific yum operation.
$ yum help autoremove
49. Consulting the Manual
The manual page contains detailed information on all command-line options and their usage. If you’re an absolute beginner, this should be the place to start.
$ man yum
Consult this documentation whenever you’re having trouble with certain commands.
50. Displaying Version Information
Use the following simple command to find out which version of yum and dnf is installed on your machine. It also shows the build information for that version.
$ yum --version
Ending Thoughts
Yum commands are extremely versatile and provide all the functionalities required to maintain modern RHEL or CentOS packages. No matter whether you’re a professional sysadmin or a starting Linux user, mastering these commands will help you handle RPM-based distributions with ease.
Our editors have tried to include all the commands that users may need to know to maintain their system. Hopefully, we were able to provide you with the ultimate guide you’re looking for. Let us know your thoughts in the comment section, and feel free to ask any questions.