1
00:00:06,620 --> 00:00:09,910
In this video, we'll zoom
into dependencies a little bit.

2
00:00:11,150 --> 00:00:16,890
So what are dependencies? Well, dependencies are
often libraries that provide common functionality to applications.

3
00:00:17,609 --> 00:00:19,910
Other dependencies might
exist as well.

4
00:00:20,850 --> 00:00:25,550
Think about running a Python script. In order to
run a Python script, Python needs to be installed.

5
00:00:26,679 --> 00:00:32,750
Dependencies are always provided in independently managed
packages, and that can make it quite

6
00:00:32,750 --> 00:00:38,820
complex. But fortunately, the package managers
like DNF and APT provide a solution.

7
00:00:39,759 --> 00:00:45,390
Now, about these libraries. Libraries are very
commonly used in Linux to make working with

8
00:00:45,390 --> 00:00:51,020
software easier because they provide common functionality
that may be used by multiple packages.

9
00:00:51,649 --> 00:00:58,403
If you want to analyze network packages, for instance,
there is the packet capture library libpcap. There's also libc,

10
00:00:58,403 --> 00:01:05,156
which is a more common library. This is the
C library that provides all the common functions in the

11
00:01:05,156 --> 00:01:11,909
Linux operating system and you will see it as
a dependency for all packages that you are using.

12
00:01:13,329 --> 00:01:18,590
When you are installing software packages, libraries
are installed as dependencies and the LDD

13
00:01:18,590 --> 00:01:23,849
command can can be used to find
out about libraries that are currently installed.

14
00:01:24,670 --> 00:01:29,030
Now, while working with libraries, there
is the issue of library versions.

15
00:01:29,950 --> 00:01:33,069
You can only have one version
of a library on a system.

16
00:01:34,010 --> 00:01:39,270
So how are you going to do
that if you want to run applications that

17
00:01:39,270 --> 00:01:44,530
require different versions on the same system?
Well, then you need to isolate the application.

18
00:01:45,510 --> 00:01:50,383
And there are two ways that you can
use isolation. Either you are going to run

19
00:01:50,383 --> 00:01:55,256
your application as a container, which we'll talk
about about in lesson 19, or you are

20
00:01:55,256 --> 00:02:00,129
going to use an isolated application using
Snap on Ubuntu or Flatpak on other distributions.

21
00:02:00,829 --> 00:02:05,150
Let's have a quick look at these libraries
before talking a bit more about package managers.

22
00:02:06,030 --> 00:02:12,810
So I am going to use sudo ldd LDD is
d command if you want to find out about libraries.

23
00:02:13,409 --> 00:02:18,879
And I'm going to do that on the result
of the command, which passwd Remember, if you put

24
00:02:18,879 --> 00:02:24,349
a command like this between dollar and parentheses,
you will work with the result of the command.

25
00:02:25,110 --> 00:02:30,944
And what do we see? Well, we see
all the libraries, including the C library libc

26
00:02:30,944 --> 00:02:36,779
so 6, but also other libraries that
define how this command is doing its work.

27
00:02:37,360 --> 00:02:43,853
Like libpam, which is for pluggable authentication modules.
That's a framework that is using authentication like

28
00:02:43,853 --> 00:02:50,346
lib audit, which means that you can audit
messages that are generated by this utility in

29
00:02:50,346 --> 00:02:56,840
lib SELinux, because this is a red hat
system where Selinux is used for more security.

30
00:02:57,699 --> 00:03:01,664
Now the issue about these libraries is
that they all need to be installed when

31
00:03:01,664 --> 00:03:05,629
you install your packages. And in the
next video you'll find out how that works.
