WEBVTT

00:01.330 --> 00:03.310
How a package system works.

00:03.580 --> 00:10.090
The method of software distribution found in the proprietary software industry usually entails buying

00:10.120 --> 00:12.280
a piece of installation media, such as?

00:12.490 --> 00:18.820
Such as an install disc or visiting each vendor's website and downloading the product and then running

00:18.820 --> 00:20.330
an installation wizard.

00:20.350 --> 00:23.130
So to install a new application on the system, right?

00:23.140 --> 00:26.300
But Linux doesn't work that way.

00:26.320 --> 00:32.800
Virtually all software for Linux system will be found on the internet and most of it will be provided

00:32.800 --> 00:37.930
by the distribution vendor in the form of package files and the rest of will be available in source

00:37.930 --> 00:40.840
code form that can be installed manually.

00:40.840 --> 00:45.670
And we will talk about how to install software by compiling source code in the next lecture.

00:45.670 --> 00:48.190
But first, let's get started with the package files.

00:48.840 --> 00:54.750
So the basic unit of software in a packaging system is the package file.

00:54.780 --> 00:59.010
A package file is a compressed collection of files that comprise the software package.

00:59.310 --> 01:05.310
So a package may consist of numerous programs and data files that supports the programs, and in addition

01:05.310 --> 01:11.790
to the files to be installed, the package file also includes metadata about the packages such as the

01:11.790 --> 01:15.480
text description or of the package and its contents.

01:15.480 --> 01:15.810
Right.

01:15.810 --> 01:23.460
So additionally, many packages contain pre and post installation scripts that perform configuration

01:23.460 --> 01:25.320
tasks before and after the package.

01:25.320 --> 01:31.110
Installation and package files are created by a person known as the package maintainer.

01:31.200 --> 01:34.890
Often, but not always an employee of the distribution vendor.

01:34.890 --> 01:35.220
Right.

01:35.220 --> 01:43.350
So the package maintainer gets the software in a source code form from the upstream provider or the

01:43.350 --> 01:50.980
author of the program compiles it and creates the package metadata and any necessary installation scripts.

01:51.010 --> 01:57.400
Often the package maintainer will apply modifications to the original source code to improve the program's

01:57.400 --> 02:00.820
integration with the other parts of the Linux distributions.

02:01.300 --> 02:05.390
We also have the repositories.

02:05.410 --> 02:08.800
Repositories here.

02:09.040 --> 02:10.480
Repo.

02:11.650 --> 02:11.980
The.

02:14.050 --> 02:15.520
Oh, race.

02:18.450 --> 02:23.760
While some shorter projects choose to perform their own packaging and distribution.

02:23.760 --> 02:29.610
And the most packages today are created by the distribution vendors and interested third parties and

02:29.610 --> 02:35.820
packages are made available to the users users of distribution in a central repository that may contain

02:35.820 --> 02:41.940
many thousands of packages, each specially built and maintained for the distribution.

02:41.940 --> 02:42.360
Right.

02:42.360 --> 02:47.970
So a distribution may maintain several different repositories for a different stages of the software

02:47.970 --> 02:49.270
development life cycle.

02:49.290 --> 02:57.150
For example, there will be usually be a testing repository that contains packages that have just been

02:57.150 --> 03:04.110
built and are intended for use by brave souls who are looking for bugs before the packages are released

03:04.110 --> 03:05.790
for general distribution.

03:05.790 --> 03:06.210
Right.

03:06.210 --> 03:12.900
And the distribution will often have a development repository where work in progress packages designed

03:12.900 --> 03:15.030
for inclusion in the distributions.

03:15.060 --> 03:21.760
Next major release are kept and it is revision may also have related third party repositories, and

03:21.760 --> 03:29.890
these are often needed to be supplied software for legal reasons such as patents or DRM anti-circumvention

03:29.890 --> 03:32.820
issues and cannot be included with the distribution.

03:32.890 --> 03:39.700
Perhaps the best known case is that of the encrypted DVD support, which is not legal in the United

03:39.700 --> 03:46.600
States, and the third party repositories operate in countries where the software, patents and Anti-circumvention

03:46.600 --> 03:53.410
labs do not apply, and these repositories are usually fully independent of the distributions they support

03:53.410 --> 04:01.390
and to use them, one must know about them and manually include them in the configuration files for

04:01.390 --> 04:03.580
package management system.

04:04.030 --> 04:09.490
And we also have dependencies the tendencies.

04:15.510 --> 04:16.340
Dependencies.

04:16.340 --> 04:19.630
So programs are seldom stand alone.

04:19.640 --> 04:25.760
Rather, they rely on the presence of other software components to get their work done.

04:25.760 --> 04:32.990
And common activities such as input output, for example, are handled by routines shared by many programs,

04:32.990 --> 04:38.210
and these routines are stored in a shared libraries which provide essential services to more than one

04:38.210 --> 04:38.870
program.

04:39.230 --> 04:47.430
And if a package requires a shared resource such as shared library, it is said to have a dependency.

04:47.450 --> 04:55.100
Modern package management system all provides some method of dependency resolution to ensure that when

04:55.100 --> 05:00.740
a package is installed, all of its dependencies are installed too.

05:01.010 --> 05:06.050
And we also have high and low package tools.

05:06.050 --> 05:12.260
And package management usually consists of two types of tools, which is actually let me write that

05:12.260 --> 05:13.340
down right here.

05:13.340 --> 05:18.600
So which is the low level, low level level.

05:19.170 --> 05:25.140
This is the low level tools that handle tasks such as installing and removing packages.

05:25.140 --> 05:27.480
And we also have high.

05:28.660 --> 05:29.590
Level.

05:31.720 --> 05:37.480
Tools, which is perform metadata, searching and dependency resolution.

05:37.480 --> 05:43.750
And in this section we will look at the tools supplied with the Debian style systems such as Ubuntu

05:43.750 --> 05:47.020
and many others and those used by Red Hat products.

05:47.020 --> 05:55.090
While older style distributions rely on the same low level program RPM, they use different high level

05:55.090 --> 05:58.210
tools for and for our discussion.

05:58.210 --> 06:07.690
We will cover the high level program such as UME used by Red Hat, Enterprise, Linux and CentOS and

06:07.690 --> 06:09.010
other Red Hat style distributions.

06:09.010 --> 06:12.070
Provide high level tools with the comparable features.
