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.