How a package system works.
The method of software distribution found in the proprietary software industry usually entails buying
a piece of installation media, such as?
Such as an install disc or visiting each vendor's website and downloading the product and then running
an installation wizard.
So to install a new application on the system, right?
But Linux doesn't work that way.
Virtually all software for Linux system will be found on the internet and most of it will be provided
by the distribution vendor in the form of package files and the rest of will be available in source
code form that can be installed manually.
And we will talk about how to install software by compiling source code in the next lecture.
But first, let's get started with the package files.
So the basic unit of software in a packaging system is the package file.
A package file is a compressed collection of files that comprise the software package.
So a package may consist of numerous programs and data files that supports the programs, and in addition
to the files to be installed, the package file also includes metadata about the packages such as the
text description or of the package and its contents.
Right.
So additionally, many packages contain pre and post installation scripts that perform configuration
tasks before and after the package.
Installation and package files are created by a person known as the package maintainer.
Often, but not always an employee of the distribution vendor.
Right.
So the package maintainer gets the software in a source code form from the upstream provider or the
author of the program compiles it and creates the package metadata and any necessary installation scripts.
Often the package maintainer will apply modifications to the original source code to improve the program's
integration with the other parts of the Linux distributions.
We also have the repositories.
Repositories here.
Repo.
The.
Oh, race.
While some shorter projects choose to perform their own packaging and distribution.
And the most packages today are created by the distribution vendors and interested third parties and
packages are made available to the users users of distribution in a central repository that may contain
many thousands of packages, each specially built and maintained for the distribution.
Right.
So a distribution may maintain several different repositories for a different stages of the software
development life cycle.
For example, there will be usually be a testing repository that contains packages that have just been
built and are intended for use by brave souls who are looking for bugs before the packages are released
for general distribution.
Right.
And the distribution will often have a development repository where work in progress packages designed
for inclusion in the distributions.
Next major release are kept and it is revision may also have related third party repositories, and
these are often needed to be supplied software for legal reasons such as patents or DRM anti-circumvention
issues and cannot be included with the distribution.
Perhaps the best known case is that of the encrypted DVD support, which is not legal in the United
States, and the third party repositories operate in countries where the software, patents and Anti-circumvention
labs do not apply, and these repositories are usually fully independent of the distributions they support
and to use them, one must know about them and manually include them in the configuration files for
package management system.
And we also have dependencies the tendencies.
Dependencies.
So programs are seldom stand alone.
Rather, they rely on the presence of other software components to get their work done.
And common activities such as input output, for example, are handled by routines shared by many programs,
and these routines are stored in a shared libraries which provide essential services to more than one
program.
And if a package requires a shared resource such as shared library, it is said to have a dependency.
Modern package management system all provides some method of dependency resolution to ensure that when
a package is installed, all of its dependencies are installed too.
And we also have high and low package tools.
And package management usually consists of two types of tools, which is actually let me write that
down right here.
So which is the low level, low level level.
This is the low level tools that handle tasks such as installing and removing packages.
And we also have high.
Level.
Tools, which is perform metadata, searching and dependency resolution.
And in this section we will look at the tools supplied with the Debian style systems such as Ubuntu
and many others and those used by Red Hat products.
While older style distributions rely on the same low level program RPM, they use different high level
tools for and for our discussion.
We will cover the high level program such as UME used by Red Hat, Enterprise, Linux and CentOS and
other Red Hat style distributions.
Provide high level tools with the comparable features.