1
00:00:01,330 --> 00:00:03,310
How a package system works.

2
00:00:03,580 --> 00:00:10,090
The method of software distribution found in the proprietary software industry usually entails buying

3
00:00:10,120 --> 00:00:12,280
a piece of installation media, such as?

4
00:00:12,490 --> 00:00:18,820
Such as an install disc or visiting each vendor's website and downloading the product and then running

5
00:00:18,820 --> 00:00:20,330
an installation wizard.

6
00:00:20,350 --> 00:00:23,130
So to install a new application on the system, right?

7
00:00:23,140 --> 00:00:26,300
But Linux doesn't work that way.

8
00:00:26,320 --> 00:00:32,800
Virtually all software for Linux system will be found on the internet and most of it will be provided

9
00:00:32,800 --> 00:00:37,930
by the distribution vendor in the form of package files and the rest of will be available in source

10
00:00:37,930 --> 00:00:40,840
code form that can be installed manually.

11
00:00:40,840 --> 00:00:45,670
And we will talk about how to install software by compiling source code in the next lecture.

12
00:00:45,670 --> 00:00:48,190
But first, let's get started with the package files.

13
00:00:48,840 --> 00:00:54,750
So the basic unit of software in a packaging system is the package file.

14
00:00:54,780 --> 00:00:59,010
A package file is a compressed collection of files that comprise the software package.

15
00:00:59,310 --> 00:01:05,310
So a package may consist of numerous programs and data files that supports the programs, and in addition

16
00:01:05,310 --> 00:01:11,790
to the files to be installed, the package file also includes metadata about the packages such as the

17
00:01:11,790 --> 00:01:15,480
text description or of the package and its contents.

18
00:01:15,480 --> 00:01:15,810
Right.

19
00:01:15,810 --> 00:01:23,460
So additionally, many packages contain pre and post installation scripts that perform configuration

20
00:01:23,460 --> 00:01:25,320
tasks before and after the package.

21
00:01:25,320 --> 00:01:31,110
Installation and package files are created by a person known as the package maintainer.

22
00:01:31,200 --> 00:01:34,890
Often, but not always an employee of the distribution vendor.

23
00:01:34,890 --> 00:01:35,220
Right.

24
00:01:35,220 --> 00:01:43,350
So the package maintainer gets the software in a source code form from the upstream provider or the

25
00:01:43,350 --> 00:01:50,980
author of the program compiles it and creates the package metadata and any necessary installation scripts.

26
00:01:51,010 --> 00:01:57,400
Often the package maintainer will apply modifications to the original source code to improve the program's

27
00:01:57,400 --> 00:02:00,820
integration with the other parts of the Linux distributions.

28
00:02:01,300 --> 00:02:05,390
We also have the repositories.

29
00:02:05,410 --> 00:02:08,800
Repositories here.

30
00:02:09,040 --> 00:02:10,480
Repo.

31
00:02:11,650 --> 00:02:11,980
The.

32
00:02:14,050 --> 00:02:15,520
Oh, race.

33
00:02:18,450 --> 00:02:23,760
While some shorter projects choose to perform their own packaging and distribution.

34
00:02:23,760 --> 00:02:29,610
And the most packages today are created by the distribution vendors and interested third parties and

35
00:02:29,610 --> 00:02:35,820
packages are made available to the users users of distribution in a central repository that may contain

36
00:02:35,820 --> 00:02:41,940
many thousands of packages, each specially built and maintained for the distribution.

37
00:02:41,940 --> 00:02:42,360
Right.

38
00:02:42,360 --> 00:02:47,970
So a distribution may maintain several different repositories for a different stages of the software

39
00:02:47,970 --> 00:02:49,270
development life cycle.

40
00:02:49,290 --> 00:02:57,150
For example, there will be usually be a testing repository that contains packages that have just been

41
00:02:57,150 --> 00:03:04,110
built and are intended for use by brave souls who are looking for bugs before the packages are released

42
00:03:04,110 --> 00:03:05,790
for general distribution.

43
00:03:05,790 --> 00:03:06,210
Right.

44
00:03:06,210 --> 00:03:12,900
And the distribution will often have a development repository where work in progress packages designed

45
00:03:12,900 --> 00:03:15,030
for inclusion in the distributions.

46
00:03:15,060 --> 00:03:21,760
Next major release are kept and it is revision may also have related third party repositories, and

47
00:03:21,760 --> 00:03:29,890
these are often needed to be supplied software for legal reasons such as patents or DRM anti-circumvention

48
00:03:29,890 --> 00:03:32,820
issues and cannot be included with the distribution.

49
00:03:32,890 --> 00:03:39,700
Perhaps the best known case is that of the encrypted DVD support, which is not legal in the United

50
00:03:39,700 --> 00:03:46,600
States, and the third party repositories operate in countries where the software, patents and Anti-circumvention

51
00:03:46,600 --> 00:03:53,410
labs do not apply, and these repositories are usually fully independent of the distributions they support

52
00:03:53,410 --> 00:04:01,390
and to use them, one must know about them and manually include them in the configuration files for

53
00:04:01,390 --> 00:04:03,580
package management system.

54
00:04:04,030 --> 00:04:09,490
And we also have dependencies the tendencies.

55
00:04:15,510 --> 00:04:16,340
Dependencies.

56
00:04:16,340 --> 00:04:19,630
So programs are seldom stand alone.

57
00:04:19,640 --> 00:04:25,760
Rather, they rely on the presence of other software components to get their work done.

58
00:04:25,760 --> 00:04:32,990
And common activities such as input output, for example, are handled by routines shared by many programs,

59
00:04:32,990 --> 00:04:38,210
and these routines are stored in a shared libraries which provide essential services to more than one

60
00:04:38,210 --> 00:04:38,870
program.

61
00:04:39,230 --> 00:04:47,430
And if a package requires a shared resource such as shared library, it is said to have a dependency.

62
00:04:47,450 --> 00:04:55,100
Modern package management system all provides some method of dependency resolution to ensure that when

63
00:04:55,100 --> 00:05:00,740
a package is installed, all of its dependencies are installed too.

64
00:05:01,010 --> 00:05:06,050
And we also have high and low package tools.

65
00:05:06,050 --> 00:05:12,260
And package management usually consists of two types of tools, which is actually let me write that

66
00:05:12,260 --> 00:05:13,340
down right here.

67
00:05:13,340 --> 00:05:18,600
So which is the low level, low level level.

68
00:05:19,170 --> 00:05:25,140
This is the low level tools that handle tasks such as installing and removing packages.

69
00:05:25,140 --> 00:05:27,480
And we also have high.

70
00:05:28,660 --> 00:05:29,590
Level.

71
00:05:31,720 --> 00:05:37,480
Tools, which is perform metadata, searching and dependency resolution.

72
00:05:37,480 --> 00:05:43,750
And in this section we will look at the tools supplied with the Debian style systems such as Ubuntu

73
00:05:43,750 --> 00:05:47,020
and many others and those used by Red Hat products.

74
00:05:47,020 --> 00:05:55,090
While older style distributions rely on the same low level program RPM, they use different high level

75
00:05:55,090 --> 00:05:58,210
tools for and for our discussion.

76
00:05:58,210 --> 00:06:07,690
We will cover the high level program such as UME used by Red Hat, Enterprise, Linux and CentOS and

77
00:06:07,690 --> 00:06:09,010
other Red Hat style distributions.

78
00:06:09,010 --> 00:06:12,070
Provide high level tools with the comparable features.
