Yum and Rpm Daily Work Summary

This article used to walk you through some commonly yum and rpm usages , based on a real life scenario.

################################################################ #   Date           Description #   03/05/2019     yum autoremove #   03/02/2019     upgrade rpm #   03/01/2019     list rpm dependencies #   02/27/2019     yum provides #   02/25/2019     search rpm installed #   02/24/2019     install rpm #   01/19/2019     remove package # ################################################################

Yum command cheat sheet rpm command is one of the package management command.

01/19/2019

Remove or erase a installed package with its dependencies:

1
2
rpm -ev <package name>
yum erase <package name>

if the rpm is part of other dependencies, rpm -ev will fail, or you can use yum erase to delete them all:

1
2
3
4
rpm -ev containerd.io

error: Failed dependencies:
containerd.io >= 1.2.2-3 is needed by (installed) docker-ce-3:18.09.2-3.el7.x86_64

Remove or erase a installed package without checking for dependencies

1
rpm -ev --nodeps <package name>

For example:

1
2
3
4
rpm -ev --nodpes containerd.io

Preparing packages...
containerd.io-1.2.2-3.3.el7.x86_64

02/24/2019

This command will install a single rpm file if it meets all dependencies, otherwise install will fail and the output will show you the missig rpms.

1
rpm -ivh <rpm name>

For example:

1
2
3
4
5
6
7
8
rpm -ivh 416b2856f8dbb6f07a50a46018fee8596479ebc0eaeec069c26bedfa29033315-kubeadm-1.13.2-0.x86_64.rpm

warning: 416b2856f8dbb6f07a50a46018fee8596479ebc0eaeec069c26bedfa29033315-kubeadm-1.13.2-0.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 3e1ba8d5: NOKEY
error: Failed dependencies:
cri-tools >= 1.11.0 is needed by kubeadm-1.13.2-0.x86_64
kubectl >= 1.6.0 is needed by kubeadm-1.13.2-0.x86_64
kubelet >= 1.6.0 is needed by kubeadm-1.13.2-0.x86_64
kubernetes-cni >= 0.6.0 is needed by kubeadm-1.13.2-0.x86_64

02/25/2019

These two both work:

1
2
3
## query package installed
rpm -qa | grep <package name>
yum list installed | grep <package name>

For example:

1
2
rpm -qa | grep docker
docker-ce-18.06.1.ce-3.el7.x86_64
1
2
yum list installed | grep docker
docker-ce.x86_64 18.06.1.ce-3.el7 installed

02/27/2019

Find packages that provide the queried file, for example:

1
2
3
4
5
6
7
yum provides host

32:bind-utils-9.9.4-14.el7.x86_64 : Utilities for querying DNS name servers
Repo : Local-Base
Matched from:
Filename : /usr/bin/host
...

Next you can install it:

1
yum install -y bind-utils

03/01/2019

If you have a local rpm file, you can list its dependencies by running:

1
rpm -qpR <rpm name>

For example:

1
2
3
4
5
6
7
8
9
10
11
rpm -qpR 416b2856f8dbb6f07a50a46018fee8596479ebc0eaeec069c26bedfa29033315-kubeadm-1.13.2-0.x86_64.rpm

warning: 416b2856f8dbb6f07a50a46018fee8596479ebc0eaeec069c26bedfa29033315-kubeadm-1.13.2-0.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 3e1ba8d5: NOKEY
cri-tools >= 1.11.0
kubectl >= 1.6.0
kubelet >= 1.6.0
kubernetes-cni >= 0.6.0
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1

03/02/2019

If you run man rpm, there are two similar statements:

1
2
3
4
5
6
7
8
9
10
The general form of an rpm upgrade command is

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

This upgrades or installs the package currently installed to a newer version. This is the same as install,
except all other version(s) of the package are removed after the new package is installed.

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

This will upgrade packages, but only ones for which an earlier version is installed.

Both rpm -Fvh and rpm -Uvh will perform the same task but the diff is rpm -Uvh is also same as rpm -ivh, you can use any of them I mean rpm -ivh or rpm -Uvh for installing the package.

But for upgrading installed package you can use any of rpm -Fvh or rpm -Uvh.

rpm -Fvh is used for upgrading the existing package (installed package). rpm -Uvh is used for installing the package and upgrading the package both.

For example, upgrade ansible from 2.4.6.0 to 2.7.8:

1
2
3
4
5
6
7
8
rpm -Fvh ansible-2.7.8-1.el7.ans.noarch.rpm

warning: ansible-2.7.8-1.el7.ans.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID 442667a9: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:ansible-2.7.8-1.el7.ans ################################# [ 50%]
Cleaning up / removing...
2:ansible-2.4.6.0-1.el7.ans ################################# [100%]

03/05/2019

Remove dependencies which are not in use, any unneeded dependencies from your system, for example:

1
yum autoremove docker-ce
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dependencies Resolved

=========================================================================================================================
Package Arch Version Repository Size
=========================================================================================================================
Removing:
docker-ce x86_64 18.06.1.ce-3.el7 @docker-local.repo 168 M
Removing for dependencies:
container-selinux noarch 2:2.68-1.el7 @Local-Extras 36 k
libcgroup x86_64 0.41-20.el7 @Local-Base 134 k
libseccomp x86_64 2.3.1-3.el7 @Local-Base 297 k
libtool-ltdl x86_64 2.4.2-22.el7_3 @Local-Base 66 k
policycoreutils-python x86_64 2.5-29.el7_6.1 @Local-Base 1.2 M

Transaction Summary
=========================================================================================================================
Remove 1 Package (+5 Dependent packages)

You also can add clean_requirements_on_remove=1 in /etc/yum.conf file, then run

1
yum remove docker-ce

the same effect as using autoremove.

0%