Different types of package installations in Linux explained with examples. Learn package installation on a yum or apt-based system.
One of the sysadmin tasks in Linux administration is package management. Under which he needs to install, remove, upgrade packages on the system. In another post, we already saw package/patch installation in HPUX (Unix based system), in this article we will be studying package installation in Linux.
There are many distributions in the market and they support different ways to manage packages on the system. Distros like Red Hat, Cent OS supports YUM (Yellow dog Updater Modified) whereas distros like Debian or Ubuntu support APT (Advanced Packaging Tool).
YUM based system uses packages with .rpm extension (RedHat package manager) whereas APT based systems use packages with .deb extension (Debian distribution)
Package installation on YUM based system
YUM needs to be configured properly to receive package inventory from source server over HTTP/FTP etc. If not then you should have a package file (.rpm) with you.
Installing package from list using yum in RHEL / CentOS
YUM is smart enough to locate packages for you. For instance, if you want to install a telnet
package, you are not supposed to supply a complete telnet package name which includes version, architecture, etc details in the name. Typing yum install telnet
is enough. YUM will search the package with the name telnet and confirm with you before installation.
root@kerneltalks # yum install telnet
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
Resolving Dependencies
--> Running transaction check
---> Package telnet.x86_64 1:0.17-60.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================================================================================================
Package Arch Version Repository Size
=============================================================================================================================================================
Installing:
telnet x86_64 1:0.17-60.el7 rhui-REGION-rhel-server-releases 63 k
Transaction Summary
=============================================================================================================================================================
Install 1 Package
Total download size: 63 k
Installed size: 113 k
Is this ok [y/d/N]: y
Downloading packages:
telnet-0.17-60.el7.x86_64.rpm | 63 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 1:telnet-0.17-60.el7.x86_64 1/1
Verifying : 1:telnet-0.17-60.el7.x86_64 1/1
Installed:
telnet.x86_64 1:0.17-60.el7
Complete!
In the above output, you can see the install process goes through stages checks, resolving dependencies, printing details, confirmation from the user, downloading, installing, verifying. You can even download the only package using this command.
Recommended read : How to upgrade package using YUM
Installing a standalone package using rpm in RHEL / CentOS
If you don’t have yum repositories setup and have standalone package file (.rpm) then you can install it using rpm -i
command.
root@kerneltalks # rpm -ivh telnet-0.17-60.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:telnet-1:0.17-60.el7 ################################# [100%]
In the above command, we used -v
verbose mode and -h to print progress hash marks!
Package installation on APT based system
APT configuration needs to be in place to fetch packages from the source server. If not then at least you should have a package file .deb
with you for installation.
Installing package from list using apt-get on Ubuntu / Debian
apt-get
command used for package management. For installing new package use apt-get install <package-name>
. See below example for installing telnet package :
root@kerneltalks # apt-get install telnet
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
telnet
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/63.5 kB of archives.
After this operation, 182 kB of additional disk space will be used.
Selecting previously unselected package telnet.
(Reading database ... 53784 files and directories currently installed.)
Preparing to unpack .../telnet_0.17-40_amd64.deb ...
Unpacking telnet (0.17-40) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up telnet (0.17-40) ...
update-alternatives: using /usr/bin/telnet.netkit to provide /usr/bin/telnet (telnet) in auto mode
You can see in the above output, it first checks the availability of the stated package in the package list. Then it prints install-info along with size details. Then it downloads a package, unpacks it, installs it, and completes configurations.
While installing a new package, default dependencies will be checked and resolved. There are a few options which you can use with install operation :
- -d: download only package in the current directory
- -q: quiet operation
- -v: verbose mode
- -s: simulate/dry run. Don’t actually install.
Installing standalone package using dpkg on Debian / Ubuntu
If you have a package file (.deb) with you on the server and you want to install it then you can use dpkg
command. Supply package file path along with -i
option.
root@kerneltalks # dpkg -i telnet_0.17-40_amd64.deb
Selecting previously unselected package telnet.
(Reading database ... 53784 files and directories currently installed.)
Preparing to unpack telnet_0.17-40_amd64.deb ...
Unpacking telnet (0.17-40) ...
Setting up telnet (0.17-40) ...
update-alternatives: using /usr/bin/telnet.netkit to provide /usr/bin/telnet (telnet) in auto mode
Processing triggers for man-db (2.7.5-1) ...
The command will set up the package for you with an almost the same sequence as apt-get
only looking for a package in the list and downloading stuff omitted.
Installing package using zypper in Suse Linux
In Suse Linux, zypper
is mainly used for package management. You can use install
or in
switch followed by package name to install package using zypper
.
root@kerneltalks # zypper install telnet
Refreshing service 'SMT-http_smt-ec2_susecloud_net'.
Refreshing service 'cloud_update'.
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following NEW package is going to be installed:
telnet
1 new package to install.
Overall download size: 51.8 KiB. Already cached: 0 B. After the operation, additional 113.3 KiB will be used.
Continue? [y/n/...? shows all options] (y): y
Retrieving package telnet-1.2-165.63.x86_64 (1/1), 51.8 KiB (113.3 KiB unpacked)
Retrieving: telnet-1.2-165.63.x86_64.rpm .........................................................................................................................[done]
Checking for file conflicts: .....................................................................................................................................[done]
(1/1) Installing: telnet-1.2-165.63.x86_64 .......................................................................................................................[done]
zypper
also auto-resolve dependencies and install them along with your required package.