00:00
那咱们这张呢,又是非常基础非常重要的一章。那这张呢,咱们主要给大家讲一讲在Linux中如何来管理软件啊,比方说如何安装软件,如何卸载软件,如何查询相关的软件。这是我们这章重点的内容。那学习这章。重点要掌握以下这些内容。先来了解一下软件的运行环境。在Linux中,之所以程序运行起来。它背后需要有你的一些依赖关系。是不是依赖一些相关的文件?另外软件的在那中如何来安装,它是利用了一种叫包的机制来实现。
01:08
这点呢,和Windows有比较大的差别,在三系列中,它的包叫RPM包。在。底变系统,比方说乌邦兔,那它用的这个包名是不一样的。叫deb。所以他们的包管理工具不同。所以我们会介绍一下RPM这个包它的管理方式。但是这种R分包的管理方式。并不是很方便,会因为包的依赖关系导致我们使用安装方法会失败。所以渗透里面也提供了更加方便的解决包依赖关系的方法,就是亚M和DM。
02:03
啊,但是这个要实现的话呢,功能强大,所以就依赖于要配置,所以我们要修改。定制相关的配置文件。那在公司内部呢,往往都会自己搭建一个属于自己的包管理的这样的一个仓库啊,我们叫样子仓库,存放了我们公司。企业内部经常使用的各种包。那到目前来讲呢,我们用的这些包都是从。官方或者从第三方得到的,人家已经给你做好的包二进制文件,现成的直接发给你。但是在更多的生产环境中,我们用到的软件很多都是需要自己去进行编译安装。
03:00
也就意味着,你拿到的只是源码。源代码,拿到源代码之后,根据自己的生产需要,在它的基础之上进行编译安装。这个编译安装过程。在这章我们就要重点介绍,当然我们编译安装的过程是稍微复杂一点。后续我们再学习很多软件,有的时候也会用到编译安装。所以这个过程我们会反复用啊,用的多了,大家慢慢可能就比较熟悉了,初期大家会觉得这个边沿安装比较麻烦。那另外呢,就是ubtu的软件安装方法和森豆S不太一样,所以我们在这呢单独来给大家说一说U邦tu的软件管理方式。好,这就是我们这一章大概要介绍的内容啊。在最早的时候呢,我们在讲计算机基础的时候呢,提到过ABIAPI的概念。
04:05
Abi叫任应用程序的二进制接口,就是当我们的一个软件想在某个操系统上运行,它是需要有一个叫。一个运行的接口的。那这个运行接口就是这样,比方说我们的操系统是Windows好,那么你的应用程序要运行在Windows上,应该要符合Windows的abi的接口标准。啊,你的文件必须要按照一定的格式。比方说前多少个字节放什么,后多少个字节放什么,这个都是有标准格式的。Windows有自己的API标准,Linux也有自己的API标准。那换句话说,我们现在是Windows。那如果我将来还有Linux,那么Linux呢,也有自己专有的API,不一样。
05:06
啊,他有自己的API。每个应用程序要运行在各自的操统上。都要符合对应超系统的API接口。所以这就意味着我们不同的软件在不同的操场运行。它的接口是不一样的。啊,这个A是Windows的API。这个是Linux的一边。接口不同,这个接口呢,你可以把它想象成我们电源插座。大家用过没有用过?比方说这个香港买回来的电器啊,或者什么美洲买回来的电器,什么英国买回来的电器,你发现他们的电源插座那个插头和咱们大陆不一样。
06:01
它那个也是圆头的,我曾经买过一个那个香港的,这个从香港带回来一个ipad。它那个电源插座那个三个头啊,它是圆的。它这个圆的很粗,它插不到咱们电源插座里啊,那为了插到我们家里的电源插座里,我就转那个转换头。把它转换一下才行,就是它这个接口标准各个国家不一样。啊,美国的电压是要110伏嘛,对吧,咱们中国是二百二电压都不一样,所以有的时候你拿一些电器到美国用不了。啊。在点就是各个超系统都有自己的API标准,那换句话说我在我的Windows里面。装一个浏览器,Firefox。那么你这个软件文件。现在在window上能运行,但是我能不能把它拷到Linux里运行firefox呀?
07:02
你原封不动的拿过来是不行的。因为它的abi标准不同,你在Windows上的abi标准和这边不一样,所以你这边也虽然是firefox,那你应该是for linus版是不是啊,你这边装的firefox是不是,当然就是for Windows版是不是?哎,肯定版本是不一样的,因为他要遵守各个操系统的API标准。所以我们在网上下载文件的时候啊,下载这些软件的时候,它都有各种不同操运的版本啊,都是有的啊,不知道fair box啊,我们来看看fair boxx它的官方网站在哪啊,找一找。Fair are?啊,哪个是他的官网呢。
08:01
这个是这个Mo了,这应该是。Mo Mo呢,就是这个firefox的组织开发组织Mo。这是它的浏览器,这个网站还挺慢的,国外的网站啊。太慢了。算了,不看了啊,总之各操一种都不一样。那比方说我们随便打一开一个比较熟悉的。二进制程序文件,比方说我们天天都在用的LS,这个LS呢,它的文件格式大家看它是基于elf。这种格式。这个是Linux的可执行文件格式。这种格式它和Linux Windows这个并不相同,因为API标准不同。那么在Windows里面。如果你把一个可执行文件。
09:03
比方说Windows可视文件,很多都是放在Windows目录下。大家看这里面有很多,比方说记事本,大家看这不是有个点EE嘛,这是个Windows可执行程序,对不对啊,那我给它放到咱们的linus里去啊,你看放到Linux去,你看一下在这也能判断一下它的这个文件格式,什么格式,你看是P32格式是不是不一样。所以格式不同,你不可能在Windows里直接去运行Linux命令,也不可能在Linux里面直接运行Windows的程序。那格式不一样,跑不起来。啊,你加上执行权限没有用啊,你给他加上执行权限,比方说CMD加上执行权限,Notepad好不起来。他告诉你了,说什么format是不是格式的问题。不兼容啊,A标准不一样啊啊,就像你把美国的那个电器,你升的升的要插到中国的插座上,插不上去,那110电压和咱们二百二电压不一样啊,你跑不起来呀。
10:13
啊,那另外要想实现也不是说完全做不到,我们可以来实现一些虚拟化功能,比方说在Linux里,我们可以装一个叫V。然后在Windows里装一个这样的软件,它可以让我们挑一些软件来运行,比方说我们装上win以后呢,可以运行Windows一些程序了,那这个里面装上以后呢,我可以运行另程序了,不过呢,有些还是运行不了,因为它对依赖性还有关系的。那除了API这个概念,还有叫API的概念,API呢,叫应用程序的开发接口,开发开发接口那就是程序员。程序员写代码的时候,虽然说我们程序员好像写了一个程序,但是大家不要神话程序员。
11:05
不是程序员所有的东西都是他做的。程序员和我们运维工程师。都一样,都是建立在别人的基础之上。用别人的写好的一些东西做了整合而已,只不过就是程序员,他整合的是别人开发好的库,而我们直接把别人的程序拿过来用而已。啊,所以程序员他们在写程序的时候,并不是全都由他们自己独自完成。他是把别人写好的一些功能模块做了一个整合,形成了一个所谓的软件。比方说有些程序员会写一些。这个应用程序,这应用程序里面用到了图形处理。他不可能把图形功能处理的所有功能都自己完成的都实现,因为图形处理说实在的,涉及到大量的数学计算公式啊,模式建模啊,这东西不是程序员他一个人能搞定的。
12:09
所以那怎么办呢?那没关系,有人做好了,你拿过来用就行了。啊,就像我们生活中,我们想做一些,比方说我就想在家里头。做个小玩具,那你做个小玩具用到的工具不可能从头自己做吧,比方说用到一些什么钳子呀,锤子呀,刀啊,这些改锥呀,这这些东西不都是别人做出来的吗?你只不过利用这些工具来。做出一个自己的小玩意来。所以呢,实际上程序员也是一样,他们都是用一些别人别人开发好的现成的库做了整合而已,比方说涉及到一些加密呀,涉及到一些压缩呀,这些实际上背后都有大量的数学在里面,所以每个程序员如果真的要是从头写,那他每个人都得说数学家。
13:00
事实上是不可能的啊,所以他们就要调用别人写好的程序代码,那调用的话就要用到所谓的第三方的库,那么调用的时候要符合人家调用的接口,所以这个接口呢,就叫API,叫应用程序的开发接口,这个应用程序的开发接口是处在什么位置呢?是在这个位置。啊,那现在我们刚才说这有个API,那API在哪呢?API在这儿就是我们有一个操作系统。啊,这个操一统呢,这是Windows或者Linux操一。那有个软件要运行,它不是说自己就能独立运行的,它要依赖于一些库,那么依赖一些库,比方说fire要运行。它要运行的话呢,它是依赖于一些什么图形处理的界面的,因为fire是图形界面,图界面呢,它要调用一些图形的显示,所以这时候它要调用库,那调用库库在哪呢?库在这,这就是一些library库啊,我就缩写成。
14:14
Lab,那这些库呢,它是被很多应用程序共用的,不是说你自己用。啊,比方说我这儿还有别的应用程序,这些应用程序呢,他们都要去调用这个库,所以这个库呢,可以说是被很多应用程序共享的。啊,我去实现功能,我去调这个库,你去实现,我也需要用到类似的库,哎,都要去调,要调这个库,这个库里面实现了很多功能,一些共用功能,比方说实现了加密功能,实现了压缩功能,实现了图形处理功能,总之很多软件共用的功能,我们就做成,做成通用模块,你用我也用,大家都用就可以了,哎这样的话呢,就减轻了每个程序员写代码的工作量。
15:05
当然,这个要调人家的库,就要遵守人家的API的开发接口标准。对吧,你要调用人家的库,要遵守人家这个库的API的开发接口叫API。就像我们平时使用一个工具,你是不是要参考人家的说明书啊,那说明书让你怎么用你就怎么用呗,你不能瞎用是吧?哎,否则你没法用啊,啊,这就是API。啊,那当然,因为Windows和Linux呢,终究来讲是不同的操系统,所以它们各自的库并不完全一样,那不完全一样的话,那这时候就产生了一个问题,就是我们一个程序员在Windows的写了一个软件,将来我可能也希望在那上运行。呃,也希望在Li上开发一个软件,那这时候如果用的库都不统一,将来就麻烦大了啊,什么大了,就是我在Windows里面开发了一个软件,他用到了某个库,结果跑到Linux里也想开发的时候,发现Linux没这个库,没这个库的话,是不是我就这个代码,那我就得完全重新写了。
16:20
那这个开发量就太大了。所以为了统一,减轻程序员的负担,所以国际组织认为我们的库应该统一。比方说大家都有图形处理库,都有加密库,都有压缩解压缩库,那么你这个软件只要用到这些库,Windows也提供,LIS也提供,都一样,这样的话呢,我们程序员是不是就不需要再。不同操系统之间去。开使用不同的库减少了工作量,那么这时候要遵守这种库的标准,让Windows linus都标准遵守这种库,那么国际组织就定义了关于库的标准叫什么呢?叫抛标准,P呢?叫可移植的超系统接口。
17:11
也就定义了各个创意统都要符合程序库的开发标准。那因此Windows和Linux都实现了这个标准,这样的话呢,带来的好处就是Windows的程序开发了它调的库,将来在Linux调的库基本上一样,差别不大。啊,源代码一样,但是我们真要跑起来的话,你要把它编译成Linux操系统和Windows操系统各自适合的格式,这个要单独编译,但是但是写代码上呢,就没有大变化,写代码的话,那个库是一样的,这个程序的修改上就不至于从头重写了。啊。啊,这就是API。那咱们之前学脚本编程的时候提到过开发语言,在这我就不说了,那么由于历史的原因,C语言和Linux是天生一对。
18:08
CP是吧?为什么说Linux和C语言是天生一对啊?知道原因吗?这不是我们讲过Linux的起源吗?Linux的前身实际上是unix。Unix最早的时候是用汇编员B元写的,后来被C元支付。用C语言重新写了。从而实现了跨平台,也就是说各种操硬件上都可以运行unix系统。随着优的发展。那么C语言也非常流行,很多开源软件都是用C写的,建立在UNI基础之上。所以我们现在看到的互联网上的很多软件都是用C写的,当然也有一些不是用C写的啊。
19:03
C程序写好以后,他跟我们其他的语言写出来的都一样,都是文本文件,在上次我们讲脚本时候,让大家看过那些hello文件,什么hello.c hello.java是吧,hello.python hello,什么PP啊,反正都是文本文件。但是我们都知道,文本文件那东西给人看,计算机是不是根本就执行不了,计算机它只能直接机器语言二进制,所以用C语言写写的hello,比方说我们上次曾经给大家说过hello.c那个C文件,一个C文件呢,我在这让大家再瞅一眼hello.c。啊,在咱们那个服务器上是吧。啊,服务器上,那我打开咱们这个服务器。FTP。
20:03
在这啊,Fair。对。啊,这边有个hello啊,这边有一个hello.c对吧,那这个hello.c就是用C写的。嗯。直接打开了。哦,他下载下来了。好,然后呢,我们直接诶已经看到了,然后用notepad把它打开,这就是hello.c这个文件,这不都是英语单词吗?啊,只不过它有一定的格式要求啊,那实际上呢,所谓的码农不就是写这些按照格式写这些所谓的哎代码吗?对吧,码字嘛,天天就码字。啊,无非就是按格式写就好了,按格式写。
21:03
好,那这个hello文件我们刚才也看到了,它不可能直接能够在系统中运行啊,那么你要想运行就必须要把它转化成机器语言,转化成机器语言,这个C语言呢,它是一种编译性语言,编译语言的话,要想运行是不是就必须要把它编译成二进制才可以,它不是解释性语言,它是编译性语言。编弦要想运行,那这个过程是比较复杂的,需要经过预处理、编译、汇编、链接,最终才能执行。这个过程需要经过一系列复杂的过程,预处理呢,比方说把里面的一些啊,Include文件,如果包含,把它加进去,删除,如果有注释,去掉加行号之类的,那么这个预处理,预处理完了以后,它会生成一个新的文本文件,叫hello点。就是I文件,然后接着我们进入到下一个阶段,就是编译,编译呢就是它会做一些语法检查,语义分析优化,最终生成一个叫汇编代码。
22:10
汇编代码仍然是文本文件,它是S结尾的。然后接着进入到汇编这个过程,汇编就是把汇编语言转化成二进制语言啊,那么它会进行转换,转换成机器能执行的语言。然后最终因为我们。光一个文件是无法完成所有工作的,所以它会把其他相关的程序链接在一起,构成一个统一的文件,要链接,最终生成一个可执行文件。所以这个过程是比较麻烦的,那这个过程每一个过程都需要用到一些工具,比方说第一个工具,第一个过程把C变成预处理的,这个结果叫I文件,那么怎么做呢?就是这个这个命令你就可以做到。不过GCC这个工具呢,默认没有安装啊,我们需要去安装一下,应该我们看一下GCC啊,没有装,没有装的话呢,我们就装一下啊,把这个命令一直写就装上了。
23:14
好,那么GCC我们可以来执行一下刚才我们说的这个预处理这个过程,Hello这个点C文件呢,我们已经看到了它的内容,现在我们要预处理,那么就执行这个命令就好了,那这就是hello文件,预处理以后最终生成的文件就是I文件,那这个I文件呢,大家看一下,你看这就是预处理完了的结果。预处理。看它里面加了好多东西。哎,但是加完的结果仍然是个文本文件,然后接着汇编,汇编呢是用这个把它变成汇编语言啊,这是应该是编译过程啊,编译编译把它变成汇编。好,那这时候呢,我们再来看一下这个文件,它仍然是个文本文件,但是它已经成了汇编语言。
24:01
对,这就是汇编语言啊,汇编语言。然后接着再把。汇编的文件,用汇编命这个相关的过程,把它生成一个目标文文件,目标文件已经是二进制文件了,这时候呢,已经是不是一个文本文件了,这时候呢,你看一下你hello的话,这个看你没法看了,因为它已经不是一个文本文件了。大家看了吗?它已经是个elf的可执行文件了,实际上啊,当然这个文件呢,我们现在可以把它啊,你直接看的话,你看就是乱码了,乱七八糟的啊。那接着最后一步就是链接。链接呢,就把它真正的把一些必要的依赖库给它生成链接在一起。啊,当然我们具体来看。这个O文件,现在我们用这个方法就生成了最终的文件,那这个生成的文件呢,大家看,这就是它最终把必要的资源都连接在一起,生成一个最终的可执行文件,这个文件就可以执行了啊。
25:10
所以我们发现,要真的把一个C文件生成一个可执行的二进制文件,竣工建设过程还是比较繁琐的。啊。当然在这个过程中并不是程序员,比如说我这个程序员就写个hello.c就是写下解放代码,实际上你大家发现没有这个文本文件,实际上这个程序员写的才66个字节,真正生成完了以后,这个hello文件你看多大,是不是添加了很多东西啊,哎。所以这个二进制完了以后,它编译成一个可执行文件以后,它这个格格式会重新整理生成一个新的符合Linux执行格式的API标准的这样的一个二进制文件,那这个二进制文件,那你要想研研究格式,你可以把这个文件打开,你可以看这里面就有它的各种内容,你看它这全是字都加的。
26:12
你看没有,那是自己家的。好,当然刚才我们也提到了,任何一个二进制程序运行并不是孤立的,它依赖于很多的第三方的库。那这个库呢,就是我们说的一些通用功能,比方说我们有些程序需要调用加密,调用压缩啊,调用图形处理,他们都需要有些库,这些库有两种。和你的程序结合在一起的方法,一种呢叫静态链接,一种叫动态链接。静态链接说的就是把库和你的源代码程序整合在一起,形成一个新的文件。比方说我们这个程序依赖于三个库,依赖三个库,那么三个库对应的三个库文件静态编译呢,就是把这个原始程序和库呢整打包在一起。
27:10
形成了一个新文件,这个新文件里面会包含你的程序本身和依赖的库。当然这种方式呢,会带来一个问题,就是你这个程序会把很多库都加进去,会比较大。啊,而且呢,如果你这有掉了三个库,另外又有一个程序又掉了我们的其中的三个库,大家想这时候这三个库和你的程序成了一个文件了,那么这一个程序运行的时候,它会把这个库加到内存里面,当你运行第二个程序的时候,它也会把这个库怎么样加载到内存里面,它会占用双倍的空间。内存空间就会占更多啊,那如何来节约空间呢?因为这个库都是一样的,干嘛非要都放在一起,都刻自拷一份呢?哎,那我们可以用动态链接,动态链接就是我这个库啊,就放一份就行了,然后呢,你这个程序和库之间不是绑在一起的,库是库,程序是程序。
28:12
当我的程序运行的时候呢,发现它依赖库,那就调用入库就好了。啊,如果他需要调哪个库就临时调用,那比方说我这还有个程序,这个程序也是动态连接,那么他想运行的时候用哪个库,它就去保这个库就好了,那么这样的话呢,是不是就需要。的时候加入到内存里面不需要,这个库是不需要在内存里的。从而是不是节约了内存?你看,第一个程序假设用到了两个库,那么他把这两个库加到内存里面,如果第二个程序也用到两个库,但是这两个库是不是已经被第一个程序加到内存里了,它就不需要再反复加载,继而节约了内存。所以我们在生产中用到的程序大部分都是用的是动态链接,当然动态链接有一个缺点,就是万一库坏了。
29:02
是不是依赖人家的程序全完蛋了,哎,你依赖它,这还有个程序也依赖它,因为库丢了,这两个程序都不能运行,哎,所以这个影响力就比较大,那么事实上呢,我们怎么去查看一个程序它依赖于哪些库呢?非常简单,我们有一个这样的命令叫LDD命令,LDD命令可以查询某个程序所依赖的库,大家看,这就是它依赖的库列表,这是它依赖的库,依赖的库,依赖的库,一个库实际上就是个文件嘛。实际上就是一个文件,明白了吧,这个LS平时我们运行的LS实际上都是依赖这些库的。那当然说了,那你这个LS依赖,那别的程序依赖不依赖呢,那也可能会依赖,比方说我们啊,这个这个呃,RM。RM,你看它依赖的库是这个库,这个库这个这是内存不用管了啊,那当然还有就是你看CP是不是也依赖于,我们发现这三个命令好像都有一些共同依赖的库,比方说这个库,比方说LD Linux叉八六叉8664,你看是不是他们都依赖于这个库啊,都依赖了啊,那大家大家马上想到了,如果我不小心把这个库给干掉了,如果我把这个库文件给破坏了,比方说我们把它移走吧,也别删。
30:30
好,我把这个库给他移走,移到贝塔下,我也没删他,这时候是不是就意味着LS这个命令运行可能就有问题了。看见了没,根本就运行不巧了啊,那R'M能运行吗?啊,比方说RM,我把a.T删了得完蛋了啊,所以库坏了,它影响的范围比你删一个程序还要严重的多。
31:07
相当于把基础设施给破坏了,因为库是好多程序所依赖,那怎么办呀,咱把它移回来,我移哪去了?移到这了是吧?LD移他原来在哪啊?原来在LAB64对不对。尴尬了,因为MV也依赖他,MV也遇着他,你把这个核心库文件破坏了,MV也搞不定了,对吧,这时候咋办啊,下一个去哪下。你说靠呗,靠行不行,能行吗?拷贝行不行,拷贝也依赖呀,发现了吧,我们不不经意中破坏了一个。
32:17
大家都依赖的哭。这麻烦大了。所以你宁愿破坏单个程序也不能破坏库啊,这个库的重要性就像我们平时生活中的水和电一样,大家都依赖,没有这些东西,大家都玩不转了,对吧?那机器重启一下呀,重启命令都不好使了,好吧,重启命令都不好使了啊啊,所以呢,我们就来个断电嘛,断电是不是就用不着命令了,直接插电嘛,啊插电那我们就来个强行的断电。
33:03
直接断电,那看一看如果重启的话,有没有什么自动安装吗?要自动装那就省事了,这个系统能这么聪明的修复吗?看到没挂了兄弟,机器完全起不来了,你看我就破坏了一个小小的文件,这个世界就完蛋了,所以这个说明一个啥道理呢?说明Linux呢,就怕这个半懂不懂的人完全不懂,他不知道咋删呢。是吧,完全懂了你也不会删。啊,就怕那个半懂不懂完蛋了,崩了,当然这个现象那对于我们来讲那不是超easy吗?
34:00
但这就显不出你的水平来,对吧?那生产之后你不能说恢复快照吧,呼里呼气哪来的快照吧,所以我们那就得想办法解决这个问题,怎么解决呢?像Windows一样解决方案,重装重启是吧,重启开来不好使了,重装重装那就显不出你的水平来了,那不就跟Windows管员一样了吗?啊,那我们就来做修复,怎么修复呢?那我们有一种Windows PE,大家用过没?Windows PE是不是可以拿光盘启动做一些修复啊,那咱们这也支持啊,在Linux里也有这个类似的功能,那就是救援光盘出现,那光盘我已经插进来了啊,我的光盘就有看到没有,好,那现在我们需要考验手速的时候到了,这个过程瞬间只给你一秒的时间,就这个进度条就只有一秒,在这个一秒的时候,鼠标首先要掌握两点,第一鼠标必须在里面,不能鼠标在外面,外面点不起作用,一定鼠标确定在这个框里面。
35:18
鼠标一定在框里面,而且在这个短短一秒之内按一次E一点,两个要点做到了才行,缺一不可,所以好多同学刚开始抓不到样点,点半天不起作用,你看我现在手速都不快,100%的成功率是吧?搞it的手速都快是吧,你们喜欢左手右手,哪个手速快就来哪个啊,那现在我就用第三个,第三个就是调出光盘,启动光盘,因为我光盘插着的嘛,是吧,当然生产中可能是U盘嘛。
36:00
因为有些企业里面,它那个已经没光驱了,都是U盘,那U盘你就调U盘是吧?啊,那你可以把那个IO文件刻到U盘里面啊可以的好,那光盘这个光盘进来以后,S87都有一个叫第三项的串体。如果是六的话呢,直接就有一个那个界面,六的话呢,这个界面就简直接了,你看我这个是有这个六啊,我这个六呢,六在这,你看如果是六的话啊,怎么弄六的话也支持也是,不过它的界面不太一样。六的话,你看ec,然后选中光盘以后,它直接就有一个救援模式,就不用再再去选了啊大家看手速呀,这个手速慢了,你看诶看光盘好呀,没选中啊,啊光盘没插,这你看光盘是灰的。连上,哎,好了,走光盘。
37:03
哎,这有一个第三项叫救援模式,看到没有叫救援,哎,这就是ICU啊。知道ICU吧,有没有武汉的同学啊,ICU吗?重症病冠那个啊,这是修系统啊,这个是已经濒临完蛋了啊,咱们要修复它,那么在森S6就选这一项,森S8的话呢,我们还得单选一下,它有个trouble包shooting插包shooting选中以后这个就是第三项回车,大家看第二项就是一个救援。看到了吧,救援救援,当我们选中救援以后,它会利用光盘加载一个简单的小的运输环境,就像Windows p一样,因为它是用光盘启动,所以你的系统再损坏和它也没关系,所以它能启动起来,但是启动起来以后,我们是不是把它。
38:07
通过这个简化版的小滤镜,系统再进入到我们的硬盘里面去把那些破坏的文件修复不就得了?好,那大家看着怎么修复啊。啊,慢慢的咱们就开始接触一些故障排错了啊。好,那么在这我们选择一,一是继续,二是只读,三是忽略,四是跳退出,我们选一回车。然后在这我们看到他这完了,这报了一个什么错误,这是说PYTHON3第三行出错啊,第三行出错,他说什么当啊,直接出了个错,直接出了个错啊,那我们选二,大家看这二呢,是是,那我们就选二,看底下有一个提示啊二。
39:11
他有没有问题,能执行了,他说执行SH。报错,哎,我救援光盘。光盘挂挂对了没有,我看看啊,光盘应该是没没问题的呀,挂的是八点的那个是不是版本对上了吗。我看一下啊。呃,八点,哎,这个对的了呀。看这个文件是对的呢O。那这个这个文件哈,有问题了。光盘应该是没问题的呀,当然也许这光盘坏了啊,考的时候是不是下载坏了呀,这个也保不齐啊,光盘坏了那就不行了,呃,光盘就这个,我是放在C盘上了吗,这个。
40:19
这这里面有。这个文件不对呀,是不是坏了呀,怀疑。这个文件八个G,看着大小差不多,哎呀,那这个文件还有问题了。啊,那我这样吧,我换一个,因为我这个文件还得重考啊,线下太慢了,我换一个吧,我换我换8.8.1的看行不行啊,八点的牌之前那个8.2的只有这一个,呃,8.2在我的地盘上有没有8.2还没有8.2都是8.1的。
41:10
没有8.2,那我就重新来一下吧,我换个8.1试试啊,你正常应该是什么版就应该是什么版啊,你是8.2就用一个8.2,你8.1的话呢,这个不一定兼容啊,不过呢,因为我们现在没有,那所以我们就临时先凑一下吧。那我们就重新挂一下。哦,我选一下这个8.1的盘,看行不行。好,那我这选一下找这个8.1的。啊,然后呢,我们重新起一下。
42:02
好,再进救援模式。然后第二项。啊,所以大家注意到没有这个山文件,你要是山对了是吧?啊,这个严重的结果甚至比我们三单个程序都要严重,要这还是不行,你看他这儿还是报一样的问题,这调用了Python什么什么什么程序出错了啊,进不去了。
43:10
那我执行一进来,那你们你们可以是吧,那我这个这个系统有问题了呀。我用光盘启动和那个硬盘损坏没有关系,这个O文件都有问题了。那我换成我的地盘啊,我我这个我这儿有个D盘,我不用C盘的那些了,用D盘这些文件换个D盘的试试啊,啊D盘的比方说我这只有8.1的。
44:14
啊,你们可以试试啊,啊,这个救援模式光盘应该是可以正常起来,起来以后呢,我们可以在它的提供的一个简化版的Linux里做一些修复啊。
45:07
二一。啊,这还是有问题,我直接选二试试,这个二直接选二。啊,救源模式呢,他现在去寻找我的Li安装,然后他如果能找到的话,会挂到这个mnt的S下面啊,然后你可以去执行一些修复修修改选一的话,那就执行这一步了,如果你是以指数方式挂载,那就二。
46:27
啊,然后如果你想忽略进入到share,那你第三第四项呢是退出,那我们刚才进那个里面直接过不去,那我们就选三,是指看三能不能过去。制作一个菜单,我选的就是三呢。进来,然后这销推车,那我们就用三的方式来进行修复啊,那三的方式呢,就是我们没有去挂,然后我们这个地方来看一下地步啊,大家看这里面呢,我们看到的就是我们硬盘的分区情况啊,当然我们现在因为没有把硬盘挂上去,所以这个地方是空的啊,那我们现在用这个命令看能执行到这是我们原来的硬盘情况。
47:18
那这个硬盘情况呢,我们刚才是把人家那个LAB64以下的目录的数据给移到了贝塔下,贝塔那个分区在哪啊,贝塔是个独立的分区,对吧?贝塔你们看看你们贝塔是分到第几个了,应该是SDA3嘛,50G嘛啊所以呢,我们现在就可以这么来改,我们先建一个临时文件夹啊,叫什么呢?叫随便写个名字啊,叫S啊,就叫data吧。然后我们把DVSDA3挂的这个目录里,这时候我们就能看到我们刚才删掉的那个一导的文件了,然后还有一个是根,根的话呢,对应的应该是SD啊,所以我们这建一个文件夹叫根,就叫根文件系统就叫root FS,然后呢,我们手工去把SD挂上来,挂上来,然后现在呢,我们就可以这么玩了,就是把刚才说的那个CP入,呃,应该是data塔下的这个被你移走的那个文件,那个文件名叫什么来着。
48:30
啊,这不就是LD那个设计东西吗?然后放到入下的FS,然后LAB64下的这个目录对吧。你看这里面有一大堆文件,诶你看放进去他是什么呀,他说没有这个文件。没有这个文件啊,那我们来看一下它这个文件怎么做的,那我们就用GA保留它的属性,哎,移过去了,这就拷过去了啊,考过去以后呢,我们来确认一下,为什么我们直接考考不了,就是因为。
49:15
它里面是个特殊文件,这个文件它不是一般的文件,直接拷的话呢,拷的有问题,然后用LD Linux,哎,你看这个文件是不是过来了。过来了吧,好,那这就行了,好了,那我们千辛万苦终于可以了,然后我们退出来重新启动,看能不能起来了。直接退出来就行了啊。因为把文件给恢复了嘛,然后我们直接重启。好,那大家刚才那个工作呢,你暂时先了解一下就行啊,我们后面还会给大家讲这个救援模式,现在大家看已经成功修复了,现在呢,我们的系统终于可以正常使用了,那这就是我们有的时候可能会用这种所谓的救援模式来做一些故障排除。
50:21
啊,当然有说了,这个这个排错的话,这个呃过程我们后面还会给大家讲一些Linux的启动流程,在启动流程那个过程中,我们会讲的更加详细啊,每个过程到底出故障是哪个阶段造成的,到时候我们都会给大家讲这样的话呢,我们。在生产中万一遇到服务器故障起不来了,我们也用不着非得自己去是吧,重装系统了啊,这样就可以了,要提高效率啊,重装系统你想这这跟这Windows运维工程师一个水平了。是吧?Windows运维工程师工资低,你是不是也参考那个价价格给你发工资啊?
51:02
好,这就是我们刚才给大家讲的啊,那这个库呢,需要大家注意,不要随便破坏了,我们刚才那库啊,基本上大家发现没有都在哪啊啊比方说你随便找一个程序啊,啊,发现这些程序呢,他们基本上都在哪。都在LAB664目录下看了吗?因为我们现在都是64位的系统,就是这个项,所以不要小看LAB64哦,LAB64这些东西不要破坏,破坏了就起不来了,破坏了就完了。啊。所以可以说Linux里的什么不懂的文件别乱动啊。好了,那Java程序这个过程咱们这暂暂时就不用说了,因为我们后面讲那个他再回来说啊,Java程序比较特殊一点啊,那么我们现在呢,已经了解了lix里面一个程序的从源代码到可执行过程,这个过程似乎有点繁琐。
52:05
大家记得大体上分成了若干个阶段,比方说一个C文件,要把它真正运行起来,先经过预处理。汇编啊,那个编译汇编是吧,链接才能运行。这还是一个hello.c文件而已。那如果文件一多,你上我们从互联网上下载那些源代码,在上我们看到一些官网的源代码啊,比方说这个这个。NGX呀,或者是内核,我们就下载内核一下吧,内核内核的最新版已经是5.8版的。是吧,这不看到了吗?这个内核文件呢啊,你把它下下来,你看这里面有多少。C文件呢?
53:01
你们猜猜有多少行多少C文件,这个这个下不了。页面不让访问。复制一下链接,我这直接去下一下,直接下一下看下。这解析有问题了。这个地址解析不了。嗯,解析不了导致。
54:01
DS的问题。哎,通了,太慢了。那。太慢了,这个这个这个网站太慢了,太长了,这半天连不上去,算了,放弃了,太难了,可能要翻墙这个啊,或者是通过这个点这个吧,HTV这个页面能不能打开。这个国外的网站就是慢。太慢了,算了。啊,这网站太慢了。打不开,你们那儿能打开吗?
55:03
呃,我这看看事先有没有下载过的一些内核文件。Unfair。这里面没有提前下载的源代码那盒。没有内核网站都不能访问了这个网站。行了,那我们就先不下了啊,已经下完了是吧。你传到那个服务器上,传到服务器上,我这样我从这就可以直接拿下来了。不去。我们要一点。
56:06
放到那个咱们上课的那个班级,就是42期不是有个共享文件夹吗。你看你能不能放进去,那那你就放到那个fdp服务器上。你建个文件夹就叫你就叫可就行了,就放在那面不是有一个那个不是好多文件夹吗?就叫克诺尔内核传上就行了,那这里面呢,它的源代码全大部分都是用C写的啊。C的程序呢,非常多啊,那接下来那么你要真的把这些C文件一个一个的去进行编译安装,那这个是不现实的啊,因为上万个文件,上万个C文件,我们刚才只是做了一个文件,对吧,那你要是上万文件怎么弄啊,对不对,太多了啊,所以为了减轻这种工作量,所以很多程序开发者干脆就帮你制作出来一个编译完了的程序,你直接拿过用就好了。
57:27
啊,这样的话就省得你再去手工去编译,尤其对于大部分的用户来讲,不是程序员,不是程序员你让他编译安装他也不会呀。那大家都知道,Windows的程序安装多省事啊。拿拿一个Windows的安装程序来讲,是不是双击下一步,下一步查挂式就装完了啊,那为什么Windows安装就这么方便?那因为Windows它是商业软件,所以它上面的所有软件都是商业软件,商业软件的特点就是你给你编辑完了,你拿过来用就行了。
58:03
啊,不需要再去自己编译安装。而Linux里面呢,很多都是开源软件,开源软件那就意味着人家给你的都是源码,就直接就是C源编好的程序源码,那这样的话呢,我们显而易见拿到源码,你自己要去进行编译,那这个自己编译的话,这个过程我们刚才已经演示了后点C的编译过程。但是不是觉得很繁琐啊,用一个hello.c就打一个hello word还整那么复杂,更别说编一个复杂的软件,那我们直接就从入门可以放弃了。所以为了减轻减少使用软件的难度,所以各大厂商就干脆把源代码拿过来帮你编译成二进制。就相当于Windows里面现成的程序,你用就行了,那么这个做好的,现成的编好的程序,我们叫软件包。这个软件包。
59:01
他已经帮你在官方出来的时候给你编译成二进制,并且还给你打好包。而且打好包以后,每个文件它的后缀都是统一后缀。那这个统一后缀,它都是给你打包成好多,把好多文件集成在一起,然后你利用一些针对这个包的管理工具,就可以实现软件的自动安装。你不需要去,甚至比Windows安装还方便,因为Windows安装是不是还得下一步还得选到底装在哪,我是装在C盘装的地方,那Linux用不着,因为这些事他都给你在包里面定义好了,说你装在哪那个路径是吧,他都给你约定好了,所以你只需要运行一条meeting这个包就装完了,所以非常方便。这样就大大的减轻了咱们用户使用Linux程序的难度。最早的时候,这个包的管理思想是底变系统诞生出来的,开发出来的。
60:04
它的工具。对应的包是deb后缀,所有的文件都是deb后缀。然后它对应的软件管理工具叫BP配G,这个工具呢,它可以把这些所谓的DB后续的文件进行安装,哎,你不需要去记多太多东西了,你就一个命令就行了,它就可以把所有的DB后缀的文件都给你装上。那么这一点和Windows不一样,大家都知道Windows的软件,一个安装程序是不是什么后缀的文件都有,杂七杂八的什么都有,在Linux中所有打好的包后缀都是统一的,比方说乌邦兔都有DB,而Linux如果是红帽系列的都是RPM啊,比方说我们就以RPM红帽的光盘,我们打开光盘,这个光盘在哪呢?在这,这就是光盘,光盘这个地方有一个特殊的地方就是啊。
61:00
大家看到我这个光盘现在有没有显示光盘设备呢?光盘的设备名叫DV下载SR,大家看SR0,大家注意到没有,这有没有挂载点呢?没有,但是我们可以进这个目录,这个目录呢有一个隐藏的文件夹,这个文件夹你只要一访问,它就自动挂光盘到这个目录里,这个文件夹叫CD啊,你只要LSCD就可以了,诶成了同时大家看光盘自动挂在这儿了,而且呢,你会发现这里面就自动出了一个CD。这个文件夹你不访问不会出现,一访问自动出现,所以我们把这个文夹可以理解成一个神奇的文件夹,自动出现,那个文件夹看到没有?哎,那这个文件夹呢,它能够自动的生成,并且把光盘挂上去,那换句话说,你进到CD这个文件夹里面,看到的不就是光盘内容了吗?那其中呢,光盘里面在CS系列中都有专门放各种R分包的文件。
62:09
那在哪呢?实际上很简单,你就看看哪个目录最大就行了,哪个目录最大呀,那大家看它有一个APC,还有被子OS,这两个目录是最大的,实际上在三八上呢,它把安装的软件分成两大类,一类呢叫基本程序,基本程序放在basic OS里面,而另外一部分是和常见的软件放在PC里面。而森豆S7它没有升豆七都放在一块,就是升豆八它分成两类啊,分成两类,那不论是哪一个地方它都有,比方说我们进到APP里面,APP string里面呢,它放的是一些这个软软件,但是它不是属于Linux最常用的,大家看这里面有一个叫target的文件夹,这里面就有大量的以RPM为后缀的文件,看到了吗啊。
63:11
那如果你是安装的是乌邦兔,乌邦兔呢,它的文件后缀都是以第1B为后缀的啊第1B,那我们这看一下乌邦兔啊,啊,我把乌帮兔也起来。那这个3S全是红帽系列,全是RP往后缀,这个底变乌邦兔系列的,他们是第一笔啊,你刚才那个文件传上来了没有。啊。张老师,你那个传上来了吗?在哪呢?哪哪有K开头的呀。放放哪了?放哪个目录下了,放在这儿了。我看看K开头的。
64:00
你刷新一下。刷一下。没有没有K开头的,这不是有刷新了吗?哎,出来了啊,就是这啊就刷一下啊这哎你这个好呀,你你这是翻翻墙翻的吗?这还得翻墙啊,这个啥时候内核都给封了,太过分了吧,内核都不让我们访问了,还让我们干嘛呀,这个这个国家管的太过分了。这个太太过分了啊,我表示严重愤慨啊。啊,这个这个好,那我把这个路径呢,呃,传一下载一下,这都得翻墙了,这以后就麻烦了。
65:09
好像传完了啊,正在传还没传完啊,怎么这么慢呢,20多分钟啊,100兆传20分钟这个这个是不是有点过分呢?你们在干嘛呢?是不是上网下片呢,我下个100兆的东西还需要这么长时间。好看完了啊还行,好,那那我现在来放到这来,你们不要不要上网下东西啊,和学习无关的不要去啊。
66:01
啊,咱们可以可以监控看看谁的那个网络利用率比较高,就把它封了是吧,咱们到时候到时候会讲啊,到时候我们会讲一下,比方说怎么去监控网络连接啊,到底谁的网络连接比较大,到时候我们逮住他就封了,好那你看我这个文件已经下来了,那盒这个文件呢,有100兆,也不是特别大,100兆你看这个文件我们要解包怎么解。XEF是吧?那解到哪去呢?我找到一个对的目录来解吧。现在是100兆,你猜猜减完了多大?你们感觉有多大呢?啊,这写完了,看看Linux这个目录有多大啊。
67:17
看到没有一个G看到吗?啊十倍的,那现在问大家一个问题,不是好多人都特别关心啊,这个Linux源代码,这就是源代码,这个传说中的源代码就在这里面的,那它的这个好多文件都是C文件,你看没有全是C,那C语言,比方说这个控制CPU的。啊,这是CPC。啊,C语言看起来也没什么难的是吧?那不都是英语单词吗?啊,这不有CPU控制的吗?这不是include的呀?啊,这些东西哎,这些代码啊,这是数据结构,哎,这里面我们有看得懂的呀,比方说if是不是if,这不都能看懂吗?还有return返回这C语言不过尔尔嘛,对吧?啊,当然呢,现在我们非常关心的就是有多少个C文件,这个怎么查呀?我这个Li Linux内核源代码里面有多少个C文件,怎么查?
68:35
我刚学过,刚学过find么搜吧,我就看C后缀的文件怎么搜,是不是新点C。然后统计一下个数,两万多个,3万个,你说你还用make make,就是还有那个前面那个GCC1点点编译,没法没法做太多了啊,那当然这个C文件这么多,我想知道它到底有多少行。
69:13
咋知道有多少行C代码,这个怎么查呀,就是你看这个文件有多少行,这个文件有多少行,加起来有多少行怎么查呀。我们统计一个文件会吧,一个文件好统计啊,比方说这个文件有多少行,那是不是就是前面跟上个WC-L,但是问题是我要把这3万个文件全统计一下,总共有多少行GS?然后呢,在干啥?
70:07
然后在WC。你这个是传一个文件过来,然后他就统计一个一个文件,你这个它是一个一个的,一个一个的。它是每个文件单独统计,我现在要统计的是总共又加起来多少行。啊,所以怎么办呢?哎,我们传过来,整个传过来发出去,然后统计一下多少。2000万是不是2000万号,所以你要把内核研究透了。2000万行什么概念?你们每天研究100行,你能研究不?每天研究100行,那你就出100,就算出多少天来了。
71:15
看来这辈子不不行了呀,这是以天为单位,除以365,不就算成年了吗?每天研究100行,你要连续研究500年。再给你500年,再活500年,而且你是研究了一遍是吧,所以内核这东西不是一人就能写出来的,那一定是一个团队啊,所以操一董啊,到现在中国还发明不了,原因这个这个确实难度大,当然这个不是说最核心的,主要是这个操统本身实际上都好说,两千二行不知道不算大Windows的那个操系统,它已经达到多少亿行。
72:01
多少亿行代发,那都是多少千的工程师一块合作开发,没那么简单,那我现在已经把乌兔起来了啊,看看乌帮兔的这个这个后缀啊,乌邦兔的后缀,乌邦兔的后缀,我来看一下乌帮兔的文件后缀啊,再看看乌邦兔啊,乌邦兔的地址不对吗?看吴光兔的地址怎么不对呢?101怎么换成101了?101,哎,这还只有100,就缺101。好然上来了,然了以后呢,我们看一下它的光盘啊,那光盘现在也是没有挂的啊,然后呢,我们去挂一下光盘吧,把它挂到一个目录里,然后这个就是光盘里内容了,大家看这个光盘里目录里面,我想知道那个它的包放哪,你就看最大的空间,哪个文件夹最大呢?库这个文件夹是不是最大呀,所以就进到库里面,然后进到库里面呢,我们看到这里面有密,大家注意到这里面有abcd开头,啥意思啊,是不是就是以A开头的软件。
73:50
哎,比方说我们这有O。FS啊,你看这里面它的后缀都是统一的。
74:02
Deb后缀啊,那实际上你在这也可以用同样的方法来搜出所有的deb后缀啊这么多。啊,多少个,1000多个。全都是第1B后缀,所以现在呢,可以说咱们的A子发新版,他们的所有的程序包统一后缀了,这一点和Windows不一样,大家应该打开过Windows当中光盘吧,是不是里面杂七杂八什么文件都有,它没有包的概念,只有Linux有啊。当然实际上这个包实际上它就跟踏类似,踏式不就是打包文件吗?这实际上都是打包文件,它里面有好多文件组合成一个完整的包文件,这叫包文件啊,De呢,实际上deb这个包的后缀,对于红帽系列呢,都是R屏幕后缀,知道吧?当然咱们现在看到的是APP stream,刚才我们说了还有一个被子OSB,所以我们也可以用同样的方法来看一看咱们symbols的它的这些包有多少个。
75:20
啊,应该就是RPM后缀。啊,这么多,那看看有多少个呢?7000个啊,7000个全是二篇,好,那现在我想问大家一个问题啊,你像这些包文件格式都是一样的,都是后缀,但是我们发现前面的好像它的包文件命名还是有规律的啊。那什么规律呢?就是前面这个呢,就是包的软件名,这个是什么东西,是不是就是个软件的版本。这个是什么东西啊?
76:01
这个六表示的是红帽或者深色,这个组织对这个软件的自己加的编号。EL8就是红帽的企业版八的意思,R178,因为我们都知道3S8实际上是从红帽的企业版八来的。知道吧,那后面这个是什么呢?这个就是CPU架构。就是你适合于哪种CPU,大家看有I686H叉8664,看到没,这就是CPU架构,哎,我现在很想知道咱们这个包支持几种CPU架构,这个怎么查。怎么查呀,就是几种啊,比方说I3I686的有几个。叉八六的有几个,然的现在有几个,那就想查查这个,那这个怎么查几,就是把这个这个处于倒数第二个位置。
77:06
怎么取正好用我们刚刚学过的怎么取,怎么把这段取出来。的命令吗?想想在的,先把我们要摆正姿势吗?姿势不就是这套姿势嘛,对不对,叉叉叉啥呀,不就把这个文件路径一匹配吗,点星,然后一直到这个地方对吧,这什么哎呀这这这有的不是,哎呀你别写哎呀。那前面是个点是吧,这不到这了吗?那后面这个都不能是点了,不能是点,那就是不是点的其他字符一个以上,然后再敲个点RPM是不是就匹配出来了,然后呢,再把它做一个。
78:10
是吧,哎,分组之后留下谁呀?留下他是不是就你想留谁留谁吗?哎,当然我们看看这中间少了少了什么东西了,这少了个转意,呃,还少了啥啊,少了个屁,少了个屁,呃,还有啥点心小括号,除了点以外的其他符号,哎,这个这个加号应该在这是吧?这样诶可以了,然后接着它没有提示出什么东西。啊,看看搜索对不对啊,搜索井号,然后N忽略哪哪都有写斜线呀,啊加号都用不着了,因为我们是扩展的那个表达式对不对,哎出来了,出来以后呢,我们再去四的排序一下,再去unique统计一下UN-C是吧,看同学。
79:26
啊,纳米排就三种分别,我们发现叉八六十四是最多的是吧,这不就是用S,我们又复习了一遍。分组看出来了吧,发现是不是晒得还挺好用啊。那有了分组以后没说吗?你想取那部分都能取好了,那讲完这点呢,咱们包算起个头,那我们下次呢,再来讲软件的管理啊,今天的课程重点知识是什么,今天重点知识什么重点知识面试宝典呀,在的肯定是,另外我们学了各种压缩工具,那我们把这个压缩工具来总结总结吧。
80:24
今天学了不少压缩搜索呀什么的。啊,看看有哪些我们新天新学的啊,首先学了坏的命令吧,坏的这一个命令我们就学了半天的啊,Find find配合xa as是天生一对,这已经写过了。还有就是命令,命令要lock,它是要配合那个数据库的,所以要有一个叫阿的DB阿的DB啊。
81:04
接着我们就是各种压缩打包文件了啊,那压缩我们学过什么com吧?Compress,当然这个压缩比比较差,所以这个呢,了解一下就行了。还有一个是oncompress,就是解压缩的嘛,Oncom on on开头的好像也不少,比方说on VIP是吧,On X z还有啥没了啊,接着还有什么Z开头的,比方说VIP是吧。还啥Z,对,还有啥,还有X1开的吧,是不是还有这开头的GGVIPGZZ82。
82:17
是吧?D块是鸡块吗?Busy busy,还有个busy看看。BCBBB开头的。BZ2还有bc bc cat。还逼吧。嗯。
83:03
还有啥?还有CP是吧,还有差T。还有split是不是有一个切割是吧,Split。还有啥LDD,就是那个查库的,那个查依赖库的LDD还有啥。还有吗?哎呀,我们已经学了快200条命令了,是不是感觉进步很快啊,啊,今天实际上重点的就是这些压缩工具,尤其搜索替代那个find find啊,包括常见的那些T命令的压缩打包用法,再就是S,就是这就是今天我们重点讲的东西啊,下来大家好好练一练好吧,难度不大,慢慢消化好了,今天课咱们就上到这儿啊,下课。
我来说两句