In this article, we will learn how to install, update, remove, find packages, manage packages and repositories on Linux systems using YUM (Yellowdog Updater Modified) tool developed by RedHat.
The example commands shown in this article are practically tested on our RHEL 8 server, you can use these materials for study purposes, RHEL certifications, or just to explore ways to install new packages and keep your system up-to-date.
The basic requirement of this article is, you must have a basic understanding of commands and a working Linux operating system, where you can explore and practice all the commands listed below.
What is YUM?
YUM (Yellowdog Updater Modified) is an open-source command-line as well as graphical-based package management tool for RPM (RedHat Package Manager) based Linux systems.
It allows users and system administrators to easily install, update, remove or search software packages on a system. It was developed and released by Seth Vidal under GPL (General Public License) as an open-source, which means anyone can be allowed to download and access the code to fix bugs and develop customized packages.
YUM uses numerous third-party repositories to install packages automatically by resolving their dependencies issues.
Update: The yum command is replaced by the dnf command, which is a next-generation version of yum and considered to be the replacement for YUM in most newer RPM-based distributions.
1. Install a Package with YUM
To install a package called Firefox, just run the below command it will automatically find and install all required dependencies for Firefox.
# yum install firefox Loaded plugins: fastestmirror Dependencies Resolved ================================================================================================ Package Arch Version Repository Size ================================================================================================ Updating: firefox i686 10.0.6-1.el6.centos updates 20 M Updating for dependencies: xulrunner i686 10.0.6-1.el6.centos updates 12 M Transaction Summary ================================================================================================ Install 0 Package(s) Upgrade 2 Package(s) Total download size: 32 M Is this ok [y/N]: y Downloading Packages: (1/2): firefox-10.0.6-1.el6.centos.i686.rpm | 20 MB 01:10 (2/2): xulrunner-10.0.6-1.el6.centos.i686.rpm | 12 MB 00:52 ------------------------------------------------------------------------------------------------ Total 63 kB/s | 32 MB 02:04 Updated: firefox.i686 0:10.0.6-1.el6.centos Dependency Updated: xulrunner.i686 0:10.0.6-1.el6.centos Complete!
The above command will ask for confirmation before installing any package on your system. If you want to install packages automatically without asking for any confirmation, use the option -y
as shown below example.
# yum -y install firefox
2. Removing a Package with YUM
To remove a package completely with all the dependencies, just run the following command as shown below.
# yum remove firefox Loaded plugins: fastestmirror Setting up Remove Process Resolving Dependencies --> Running transaction check ---> Package firefox.i686 0:10.0.6-1.el6.centos set to be erased --> Finished Dependency Resolution Dependencies Resolved ==================================================================================================== Package Arch Version Repository Size ==================================================================================================== Removing: firefox i686 10.0.6-1.el6.centos @updates 23 M Transaction Summary ==================================================================================================== Remove 1 Package(s) Reinstall 0 Package(s) Downgrade 0 Package(s) Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Erasing : firefox-10.0.6-1.el6.centos.i686 1/1 Removed: firefox.i686 0:10.0.6-1.el6.centos Complete!
In the same way, the above command will ask for confirmation before removing a package. To disable the confirmation prompt just add option -y
as shown below.
# yum -y remove firefox
3. Updating a Package using YUM
Let’s say you have an outdated version of the MySQL package and you want to update it to the latest stable version. Just run the following command it will automatically resolve all dependencies issues and install them.
# yum update mysql Loaded plugins: fastestmirror Dependencies Resolved ============================================================================================================ Package Arch Version Repository Size ============================================================================================================ Updating: vsftpd i386 2.0.5-24.el5_8.1 updates 144 k Transaction Summary ============================================================================================================ Install 0 Package(s) Upgrade 1 Package(s) Total size: 144 k Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Updating : vsftpd 1/2 Cleanup : vsftpd 2/2 Updated: vsftpd.i386 0:2.0.5-24.el5_8.1 Complete!
4. List a Package using YUM
Use the list function to search for the specific package with a name. For example to search for a package called OpenSSH, use the command.
# yum list openssh Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.neu.edu.cn * epel: mirror.neu.edu.cn * extras: mirror.neu.edu.cn * rpmforge: mirror.nl.leaseweb.net * updates: mirror.nus.edu.sg Installed Packages openssh.i386 4.3p2-72.el5_6.3 installed Available Packages 4.3p2-82.el5 base
To make your search more accurate, define package names with their version, in case you know. For example to search for a specific version OpenSSH-4.3p2 of the package, use the command.
# yum list openssh-4.3p2
[ You might also like: How to Secure and Harden OpenSSH Server ]
5. Search for a Package using YUM
If you don’t remember the exact name of the package, then use the search function to search all the available packages to match the name of the package you specified. For example, to search all the packages that match the word.
# yum search vsftpd Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.neu.edu.cn * epel: mirror.neu.edu.cn * extras: mirror.neu.edu.cn * rpmforge: mirror.nl.leaseweb.net * updates: ftp.iitm.ac.in ============================== Matched: vsftpd ======================== ccze.i386 : A robust log colorizer pure-ftpd-selinux.i386 : SELinux support for Pure-FTPD vsftpd.i386 : vsftpd - Very Secure Ftp Daemon
6. Get Information about a Package using YUM
Say you would like to know the information about a package before installing it. To get information on a package just issue the below command.
# yum info firefox Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.neu.edu.cn * epel: mirror.neu.edu.cn * extras: mirror.neu.edu.cn * rpmforge: mirror.nl.leaseweb.net * updates: ftp.iitm.ac.in Available Packages Name : firefox Arch : i386 Version : 10.0.6 Release : 1.el5.centos Size : 20 M Repo : updates Summary : Mozilla Firefox Web browser URL : http://www.mozilla.org/projects/firefox/ License : MPLv1.1 or GPLv2+ or LGPLv2+ Description: Mozilla Firefox is an open-source web browser, designed for standards : compliance, performance and portability.
7. List all Available Packages using YUM
To list all the available packages in the Yum database, use the below command.
# yum list | less
8. List all Installed Packages using YUM
To list all the installed packages on a system, just issue the below command, it will display all the installed packages.
# yum list installed | less
9. Yum Provides Function
Yum provides function is used to find which package a specific file belongs to. For example, if you would like to know the name of the package that has the /etc/httpd/conf/httpd.conf.
# yum provides /etc/httpd/conf/httpd.conf Loaded plugins: fastestmirror httpd-2.2.3-63.el5.centos.i386 : Apache HTTP Server Repo : base Matched from: Filename : /etc/httpd/conf/httpd.conf httpd-2.2.3-63.el5.centos.1.i386 : Apache HTTP Server Repo : updates Matched from: Filename : /etc/httpd/conf/httpd.conf httpd-2.2.3-65.el5.centos.i386 : Apache HTTP Server Repo : updates Matched from: Filename : /etc/httpd/conf/httpd.conf httpd-2.2.3-53.el5.centos.1.i386 : Apache HTTP Server Repo : installed Matched from: Other : Provides-match: /etc/httpd/conf/httpd.conf
10. Check for Available Updates using Yum
To find how many installed packages on your system have updates available, check to use the following command.
# yum check-update
11. Update System using Yum
To keep your system up-to-date with all security and binary package updates, run the following command. It will install all the latest patches and security updates to your system.
# yum update
12. List all available Group Packages
In Linux, a number of packages are bundled into a particular group. Instead of installing individual packages with yum, you can install a particular group that will install all the related packages that belong to the group. For example to list all the available groups, just issue the following command.
# yum grouplist Installed Groups: Administration Tools DNS Name Server Dialup Networking Support Editors Engineering and Scientific FTP Server Graphics Java Development Legacy Network Server Available Groups: Authoring and Publishing Base Beagle Cluster Storage Clustering Development Libraries Development Tools Eclipse Educational Software KDE (K Desktop Environment) KDE Software Development
13. Install Group Packages
To install a particular package group, we use the option as groupinstall. For example, to install “MySQL Database“, just execute the below command.
# yum groupinstall 'MySQL Database' Dependencies Resolved ================================================================================================= Package Arch Version Repository Size ================================================================================================= Updating: unixODBC i386 2.2.11-10.el5 base 290 k Installing for dependencies: unixODBC-libs i386 2.2.11-10.el5 base 551 k Transaction Summary ================================================================================================= Install 1 Package(s) Upgrade 1 Package(s) Total size: 841 k Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : unixODBC-libs 1/3 Updating : unixODBC 2/3 Cleanup : unixODBC 3/3 Dependency Installed: unixODBC-libs.i386 0:2.2.11-10.el5 Updated: unixODBC.i386 0:2.2.11-10.el5 Complete!
14. Update a Group Packages
To update any existing installed group packages, just run the following command as shown below.
# yum groupupdate 'DNS Name Server' Dependencies Resolved ================================================================================================================ Package Arch Version Repository Size ================================================================================================================ Updating: bind i386 30:9.3.6-20.P1.el5_8.2 updates 981 k bind-chroot i386 30:9.3.6-20.P1.el5_8.2 updates 47 k Updating for dependencies: bind-libs i386 30:9.3.6-20.P1.el5_8.2 updates 864 k bind-utils i386 30:9.3.6-20.P1.el5_8.2 updates 174 k Transaction Summary ================================================================================================================ Install 0 Package(s) Upgrade 4 Package(s) Total size: 2.0 M Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Updating : bind-libs 1/8 Updating : bind 2/8 Updating : bind-chroot 3/8 Updating : bind-utils 4/8 Cleanup : bind 5/8 Cleanup : bind-chroot 6/8 Cleanup : bind-utils 7/8 Cleanup : bind-libs 8/8 Updated: bind.i386 30:9.3.6-20.P1.el5_8.2 bind-chroot.i386 30:9.3.6-20.P1.el5_8.2 Dependency Updated: bind-libs.i386 30:9.3.6-20.P1.el5_8.2 bind-utils.i386 30:9.3.6-20.P1.el5_8.2 Complete!
15. Remove Group Packages
To delete or remove any existing installed group from the system, just use the below command.
# yum groupremove 'DNS Name Server' Dependencies Resolved =========================================================================================================== Package Arch Version Repository Size =========================================================================================================== Removing: bind i386 30:9.3.6-20.P1.el5_8.2 installed 2.1 M bind-chroot i386 30:9.3.6-20.P1.el5_8.2 installed 0.0 Transaction Summary =========================================================================================================== Remove 2 Package(s) Reinstall 0 Package(s) Downgrade 0 Package(s) Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Erasing : bind 1/2 warning: /etc/sysconfig/named saved as /etc/sysconfig/named.rpmsave Erasing : bind-chroot 2/2 Removed: bind.i386 30:9.3.6-20.P1.el5_8.2 bind-chroot.i386 30:9.3.6-20.P1.el5_8.2 Complete!
16. List Enabled Yum Repositories
To list all enabled Yum repositories in your system, use the following option.
# yum repolist repo id repo name status base CentOS-5 - Base enabled: 2,725 epel Extra Packages for Enterprise Linux 5 - i386 enabled: 5,783 extras CentOS-5 - Extras enabled: 282 mod-pagespeed mod-pagespeed enabled: 1 rpmforge RHEL 5 - RPMforge.net - dag enabled: 11,290 updates CentOS-5 - Updates enabled: 743 repolist: 20,824
16. List all Enabled and Disabled Yum Repositories
The following command will display all enabled and disabled yum repositories on the system.
# yum repolist all repo id repo name status C5.0-base CentOS-5.0 - Base disabled C5.0-centosplus CentOS-5.0 - Plus disabled C5.0-extras CentOS-5.0 - Extras disabled base CentOS-5 - Base enabled: 2,725 epel Extra Packages for Enterprise Linux 5 - i386 enabled: 5,783 extras CentOS-5 - Extras enabled: 282 repolist: 20,824
17. Install a Package from a Specific Repository
To install a particular package from a specific enabled or disabled repository, you must use --enablerepo
an option in your yum command. For example to Install the PhpMyAdmin package, just execute the command.
# yum --enablerepo=epel install phpmyadmin Dependencies Resolved ============================================================================================= Package Arch Version Repository Size ============================================================================================= Installing: phpMyAdmin noarch 3.5.1-1.el6 epel 4.2 M Transaction Summary ============================================================================================= Install 1 Package(s) Total download size: 4.2 M Installed size: 17 M Is this ok [y/N]: y Downloading Packages: phpMyAdmin-3.5.1-1.el6.noarch.rpm | 4.2 MB 00:25 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : phpMyAdmin-3.5.1-1.el6.noarch 1/1 Verifying : phpMyAdmin-3.5.1-1.el6.noarch 1/1 Installed: phpMyAdmin.noarch 0:3.5.1-1.el6 Complete!
18. Interactive Yum Shell
Yum utility provides a custom shell where you can execute multiple commands.
# yum shell Loaded plugins: fastestmirror Setting up Yum Shell > update httpd Loading mirror speeds from cached hostfile * base: mirrors.sin3.sg.voxel.net * epel: ftp.riken.jp * extras: mirrors.sin3.sg.voxel.net * updates: mirrors.sin3.sg.voxel.net Setting up Update Process >
19. Clean Yum Cache
By default yum keeps all the repository enabled package data in /var/cache/yum/ with each sub-directory, to clean all cached files from the enabled repository, you need to run the following command regularly to clean up all the cache and make sure that there is nothing unnecessary space is using. We don’t want to give the output of the below command, because we like to keep cached data as it is.
# yum clean all
20. View History of Yum
To view all the past transactions of the yum command, just use the following command.
# yum history Loaded plugins: fastestmirror ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 10 | root | 2012-08-11 15:19 | Install | 3 9 | root | 2012-08-11 15:11 | Install | 1 8 | root | 2012-08-11 15:10 | Erase | 1 EE 7 | root | 2012-08-10 17:44 | Install | 1 6 | root | 2012-08-10 12:19 | Install | 2 5 | root | 2012-08-10 12:14 | Install | 3 4 | root | 2012-08-10 12:12 | I, U | 13 E< 3 | root | 2012-08-09 13:01 | Install | 1 > 2 | root | 2012-08-08 20:13 | I, U | 292 EE 1 | System | 2012-08-08 17:15 | Install | 560 history list
We have tried to cover all the basic to advance yum commands with their examples. If anything related to yum commands may have missed out. Please update us through our comment box. So, we keep updating the same based on feedback received.
Please also update the roll back options for YUM.
I found the hidden gem of YUM!!!!
These commands have been helpful. I am most grateful for them. Keep the good work.
Joseph.
Just started using Linux on my AWS EC2 instance. These yum commands have been super helpful. Thank you.
Good to know… Very useful. keep posting,:)
Just starting with the CentOS and Yum for the first time.. Thanks for the nice write up!
I tried to find the ‘yum‘ substitute for ‘apt-key add‘ but wasn’t able to do it. Does it exist?
I had use “yum upgrade yum” but I don’t really understand what’s for, can you explain it please?
@Jrct7,
The command is wrong, it should be “yum upgrade” or you can also use “yum update” – both will update your system to latest release version.
How to degraded the RHEL version, for example 7.5 to 7.2?
@Sathish,
To downgrade the redhat-release package from the current release to previous minor release, use the following command.
Dear, You missed out deplist option in yum
@Shan,
Thanks for the tip, we will include an example about deplist command in this yum command examples..
Its is really a wonderful article for users who are new and start learning Linux. Dear friend please keep writing for the community.Thank you
Appreciate for making such a wonderful article !! It is helpful for beginners who wish to be familiar with “YUM” commands.
Thanks a lot.
@Ravi, thank you for an awesome web portal. I continuously use it!
That was really helpful. I’ve been trying to install Vuze for ages on Fedora25, which in my opinion is the best and used the yum install vuze. Works like a dream. Thanks
Hi Ravi,
I have one yum repository, and now i have downloaded 2 software from internet and same has been kept under repodata (where all rpm kept).
now how yum will update this 2 rpm in repodata.
is require to run createrpo command again??
@Pankaj,
I think
yum
will not update these packages, automatically I think you should update them manually…I have newly install CentOS 7 on my pc and it has wifi adapter but centos is not showing wifi connection only it showing wire connection. so tell procedure to enable wifi and all tell which packages and setting i have to do with os. So that it should work properly because i am going to used this for software development please give reply fast.
@Mangesh,
I think you need to install Wifi drivers from System Settings under Application…
Hello Ravi,
How to know that what repository in particular repo if there are multiple repos are configured on server with different linux release?
Appreciate your reply
@Yogesh,
While installing packages with Yum, you will see the repository section from which the packages are downlaoding and installing, or you can check all the repositories under /etc/yum.repos.d/ directory.
really helpful..thanks
very helpful. Thank you for putting this all together
Gr8 article… easy and simple with lot’s of information…
Hi Ravi,
I have 2 questions mentioning below:
1)
If possible can i get any documentation / steps for how to create online yum repository in RedHat ?
Just like we have in Centos.
2)
I have one below web link as repository for one monitoring tool (Zabbix) installation in Linux(RHEL 6).
http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/
my question is how can i add/use this online zabbix repository in my yum repository?
Thanks in advance.
-Jonus Joseph
@Jonus,
Here is the article for your 1st question about online yum repository.
https://www.tecmint.com/setup-yum-repository-in-centos-7/
About 2nd question, you can use the following command to install latest Zabbix repository under RHEL.
its very usefull commands for beginners like me thanks
Great article. Help a lot for newbie….
THANKS
Very useful for me as I am new to the Linux….Please update it regularly….
Nice and usefull
Hi Ravi,
If i have an existing repo which is having 3000 packages and leter i manually downloaded approx 200 packages and now how i can make my new packages part of that existing repo.
The existing repo is created by you? if yes just place those downloaded packages under that repo directory.
Hi All
I am a beginner in Linux. I need some clarification on Yum command.
Recently i installed some update on my system . because of that i am facing some issue . So i wants to roll back those updates i made(14 July 2014).
ID | Login user | Date and time | Action(s) | Altered
——————————————————————————-
70 | System | 2014-07-14 17:31 | I, U | 11 P<
Is there any command to lists and erase the updates i made on 14th July ?
I really need your help here . Waiting for your reply.
Thanks in Advance !
Unfortunately, there is no such option to roll back to previous version, if you’ve installed packages using yum. The only option is erase and compile from source.
Wonderful article thank you so much
I use yum with the option –downloadonly
Example : yum update –downloadonly -y
This provides me a way to download the latest packages that need to be updated in my Linux system. The packages goes in a folder /var/cache/yum/rhel-x86_64-server/packages.
After that I do a : yum localupdate
Some of these packages get updated and some will get Installed.
I want to get yum command which lists the packages which will be updated
and those which will get installed ( to be used with yum localinstall )
I have done yum install ? by mistake and multiple files got downloaded, I did a (d)downloadonly but would like to delete all of these files (downloaded only)
How can I do that?
@JT,
Use ‘yum history list’ command to find out recently installed packages..and remove them one by one…according to their time of installation.
So on Centos 6.5, I can type “yum install java7” and the JRE 7 runtime gets installed, but I don’t quite understand from your post how this is happening. If I search or list or grouplist for “java7” there are no hits. If I do a “yum provides Java7” then I see “Java7” under “Other:”. Is that where the install is being picked up from? Is so, how can I see what “Other:” (aliases?) exist for packages?
Sir,
Can you please tell me how to install python pygame and tkinter package for fedora 20.
Use yum package manager utility to install those missing packages.
Hi Ravi,
Yum appears unable to report any information on manually compiled packages. It is not even able to see the PHP installed on a server I inherited from the person who compiled it. Instead, it reports the version that was present prior to that manual compiled update.
I am hoping to be able to update php soon, but I’m unsure how to proceed in this situation, not knowing what or how it may be binded to other packages.
Any suggestions or pointers?
Yes, you right yum unable to notify about information or packages compiled from the source. To update PHP to latest version, you’ve have to manually remove compiled PHP files and binaries from the system. And then you can update php using yum command.
Thank you, sir.
I am new to the task of removing such a compiled package (my first server admin post, with very little linux/unix experience behind me). Any advice on how I should proceed with such an operation?
By default yum installs only from the enabled repositories.
we can use
yum –enablerepo=reponame install packagename
if we want to install a package from a disabled repository.
But my question is that what if i want to install package(s) from a particular repository out of 10 enabled repositories.
Your answer in your question, means you can use the same command ‘yum –enable=reponame install packagename’.
I am trying to install from a particular repository
but
yum –enablerepo=reponame install packagename
this command is not working.
please help
Thank you
Can you post the output of the said command here? So, we could get better idea where exactly the problem is..
we are using Centos-6 in Eculyptus Cloud-in-a-Box
yum update error.
“[root@ip-172-31-254-153 ec2-user]# yum update
Loaded plugins: fastestmirror
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was
14: PYCURL ERROR 7 – “Failed to connect to 2a02:2498:1:3d:5054:ff:fed3:e91a: Network is unreachable”
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again”
how to solve this error..
please anyone can help us.
The error indicates that you cannot connect to said repository for some reason. May be your system is behind a proxy, so specify the proxy in the yum configuration at /etc/yum.conf and add the following proxy line. Make sure you replace proxy.com with your proxy name.
Now clear metadata checksum errors and yum cache using following commands.
Now finally run the yum update command. If you still get same error, reply me.
Hi Ravi,
Thanks for the post, very informative.
I need info about how to search packages which are recently updated.
Like I have updated x packages. Then how do I search those recently updated packages. Please reply.
newbie here…
I was trying to replace a package so I tried this:
[root@ic ~]# yum list installed | grep “^libmysql”
libmysqlclient15.i386 5.0.95-5.w5 installed
libmysqlclient16.i386 5.1.69-1.w5 installed
so I proceed with:
[root@ic ~]# yum replace libmysqlclient15.i386 –replace-with libmysqlclient16.i386
but I get this when running this last command:
…
Replacing packages takes time, please be patient…
Error: Package ‘libmysqlclient15.i386’ is not installed.
any reason why?
Hello,
How to list the dependencies of a package in centos using yum.
And how to download a specific package after yum list ,using “yum”
Sorry, yum doesn’t have such capability, but you can use the repoquery command to check dependencies of package.
To download and install specific package, use.
Thanks for the information and i appreciate your findings. Really U and your site is a very helpful.
very useful commands………..thx
Hi,
What is the difference between below two you commands.
yum list updates
yum check-update
The yum list updates command will only show list of available updates and yum check-update will search for updates. indirectly both are same, they only show updates before installing them.
thanks, very useful for us
superb.. very useful
Very useful. Thanks for this.
Hi, great post, really.
I came over looking for info about that yum option ” –skip-broken”. Would you know to say something more than what is posted (very little, anyway) out there, the yum wiki included. Some times when installing a package yum warns to you some libraries or dependencies are not found. But it seems to recommend to use this option [probably this wouldn’t affect the package main performance and temporally could give us service]. I’ve tried it but with syntax mistakes I’ve been unable to sort my problem out. The yum wiki only says about activate this function in yum but by # yum update –skip-broken but that seems to enable it for the whole updating process entirely. What if you only wanted to enable this option specifically to a particular package.
very nice
Wow, Great work. Very useful for newbee like me. Thanks for sharing.
Thanks, nice and useful.
Gr8 work …. very useful for begin..rs and very easy to understand
Keep it up !
it cleared my doubts thanks,,keep posting :)
Thanks, very informative.
so educative and easy to comprehend for new linux learner like me.
Thanks a lot.
What a material of un-ambiguity and preserveness
of valuable experience on the topic of unexpected feelings.