1 00:00:06,660 --> 00:00:09,840 - So software packages are a main thing in Linux. 2 00:00:09,840 --> 00:00:11,310 What is a package? 3 00:00:11,310 --> 00:00:13,380 Well a package basically is a tar ball 4 00:00:13,380 --> 00:00:15,270 with something in addition. 5 00:00:15,270 --> 00:00:18,120 And a something in addition is a script that copies files 6 00:00:18,120 --> 00:00:22,170 to the right location and also a database that is useful 7 00:00:22,170 --> 00:00:24,633 in the system to keep track of what is installed. 8 00:00:25,530 --> 00:00:29,070 Packages are cool because packages make that you can easily 9 00:00:29,070 --> 00:00:33,720 uninstall and update your information. 10 00:00:33,720 --> 00:00:36,150 But packages typically focus on the software 11 00:00:36,150 --> 00:00:37,680 that they want to install 12 00:00:37,680 --> 00:00:41,550 and they use dependencies for related software packages. 13 00:00:41,550 --> 00:00:44,459 These dependencies typically are libraries 14 00:00:44,459 --> 00:00:47,070 which deliver essential components 15 00:00:47,070 --> 00:00:49,593 needed for learning the software successfully. 16 00:00:51,435 --> 00:00:54,990 But it also means that the dependency needs to be installed 17 00:00:54,990 --> 00:00:57,570 before you can install the package. 18 00:00:57,570 --> 00:00:59,010 And if you just have a package 19 00:00:59,010 --> 00:01:01,290 and no real dependency handling, 20 00:01:01,290 --> 00:01:05,250 well that can bring you into a real dependency hell. 21 00:01:05,250 --> 00:01:08,760 I remember that once I tried to install a software package, 22 00:01:08,760 --> 00:01:11,730 was a long time ago so I found a software package, 23 00:01:11,730 --> 00:01:14,370 and I did my command to install the package 24 00:01:14,370 --> 00:01:17,880 and it was complaining, oh I need these four dependencies. 25 00:01:17,880 --> 00:01:21,120 So one hour later, I had downloaded the four dependencies 26 00:01:21,120 --> 00:01:23,490 and started installing the first dependency, 27 00:01:23,490 --> 00:01:26,700 it was complaining about 30 dependencies. 28 00:01:26,700 --> 00:01:29,250 Do you think that I ever installed that software? 29 00:01:29,250 --> 00:01:30,753 Answer should be obvious. 30 00:01:31,950 --> 00:01:36,950 That is why software packages by themselves are not enough. 31 00:01:37,050 --> 00:01:41,940 But they are still used and RPM is standard package format 32 00:01:41,940 --> 00:01:46,577 in Red Hat, DEB is the standard package format in Ubuntu. 33 00:01:48,441 --> 00:01:52,293 Let me do a quick demo about software packages. 34 00:01:54,840 --> 00:01:57,240 All right, let me show you what a dependency problem 35 00:01:57,240 --> 00:01:58,530 looks like. 36 00:01:58,530 --> 00:02:02,970 I'm using LS to check out on the files that I've got 37 00:02:02,970 --> 00:02:07,770 and this is file that we need, emacs auctex. 38 00:02:07,770 --> 00:02:12,770 So I am going to sudo rpm minus ivh on emacs auctex. 39 00:02:14,640 --> 00:02:17,850 This is how we would do it in the old days. 40 00:02:17,850 --> 00:02:20,550 So I'm trying to install this package 41 00:02:20,550 --> 00:02:24,360 and, oh no, we get an error failed dependencies. 42 00:02:24,360 --> 00:02:26,850 This is what a dependency problem looks like, 43 00:02:26,850 --> 00:02:29,160 this is what we call dependency hell. 44 00:02:29,160 --> 00:02:32,220 The thing is, packages have dependencies, 45 00:02:32,220 --> 00:02:34,720 and if you need to take care of these dependencies 46 00:02:35,730 --> 00:02:38,460 all by yourself, that's kind of undoable. 47 00:02:38,460 --> 00:02:40,830 And that is why we have software managers 48 00:02:40,830 --> 00:02:44,100 or package managers or whatever you want to call them. 49 00:02:44,100 --> 00:02:46,470 Like YUM, like DNF, like EPT, 50 00:02:46,470 --> 00:02:49,440 you learn about them in one of the next videos. 51 00:02:49,440 --> 00:02:52,353 But first in the next video we will talk about libraries.