文章目录
- 一、软件包管理器
- 二、Linux生态
- 三、yum、apt操作
- 四、扩展软件包服务器
- 五、软件源更新
一、软件包管理器
1.Linux下载软件应该安装到什么路径下?
Linux中下载软件可以安装到系统级目录下或者自己的家目录下
下载到系统级目录下就需要root或者在root的/etc/sudoers白名单当中可以进行sudo提权
来进行安装,好处是下载之后所有的用户都可以进行使用这一款软件
下载到自己的家目录下,结果就是该软件只可以自己去使用,不推荐
Linux下软件进行安装都是安装到系统级目录下
2.Linux下下载软件的常见方式
2.1源代码下载安装:将软件的源代码下载下来,然后进行编译,最终形成可执行二进制
文件,然后再将该文件拷贝到系统目录下,这样很麻烦,下载源代码时,还需要将对应的
依赖关系全部整理清楚,然后将依赖库手动进行下载,很可能在编译时就出现一堆报错
2.2rpm包安装
2.3包管理器安装(在Linux中安装软件,基本上都是使用包管理器进行安装)
2.4软件包:把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)
放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装
2.5软件包和软件包管理器,就好比"App"和"应用商店"这样的关系
例如:当我们想在手机上安装一些app时,是去应用商店中搜索这些软件,然后进行下载
安装,此时有一个问题,这些软件本身就是在我们的手机上吗?显然不是的,那么应用商店
是怎么知道去哪里获取到这些软件呢?那么当然是当我们使用应用商店搜索一款软件时,
应用商店就会从自己本身的程序中的配置文件获取到软件包服务器的ip地址,然后去对应的
软件包服务器中进行寻找,找到之后用户点击下载,那么应用上层就进行下载安装进行返回
Linux中下载软件时软件包和软件包管理器也是这个原理
3.软件包管理器
yum(Yellow dog Updater, Modified)是Linux下非常常用的⼀种包管理器.主要应用在
Fedora, RedHat,Centos等发行版上.
Ubuntu:主要使用apt(advanced Package Tool)作为其包管理器apt同样提供了自动解
决依赖关系、下载和安装软件包的功能.
软件包管理器一个突出的功能就是自动解决依赖关系,下述中会进行解释
二、Linux生态
1.一款操作系统被研发出来接下来最重要的事情是什么?
是让更多的人去使用这一款操作系统
分析:Linux是一款开源的操作系统,那么伴随着开源的特性:高效,安全,那么Linux
操作系统就会在各行各业中进行渗透,那么随着Linux在各行各业中的发展,不同的行业
就会形成不同的圈子,这是一个过程,此时目的的让更多的人去使用这一款操作系统,那么
在过程中形成的圈子就可以作为一种手段啊,让各行各业中形成的Linux圈子也就是生态变
的越来越好,那么不就会有更多的人被这个圈子吸引,那么不就会有更多的人使用Linux
如何评价一个操作系统的好坏?
分析:在上述中,我们提到Linux的发展会形成不同的圈子,只需要增强圈子,让圈子变得
越来越好就会有更多的人来使用Linux,此时注意,圈子越来越来越好会导致更多的人来
使用Linux操作系统,那么圈子不好生态不好不就没有人来使用这一款操作系统了,此时
评价一款操作系统的好坏,我们就可以从它的生态角度进行切入,评价它的好与坏
Linux生态(圈子)

结论:增强操作系统的影响力可以通过增强操作系统的生态以此来增加使用人数
评价一款操作系统的好与坏可以从操作系统的生态角度进行评价
2.Linux下载软件过程 
当我们使用yum/apt进行软件下载时,yum/apt首先会去配置文件中获取到软件包服务器
IP地址,然后通过这个IP地址找到软件包服务器,然后在其中找到对应的软件,下载返回
3.首先观看一张图片

此时我们可以发现一个问题,这些Linux操作系统配套软件都是别人写出来的,并且还
在服务器上进行了适应多种不同操作系统版本发布,那么为什么会有人免费写这些软件并
且发布多次而且还免费提供服务器呢?
首先上述中提到,Linux操作系统研发出来之后的目的就是为了使得更多的人去使用这一
款操作系统,那么操作系统配套的软件也必须有啊,一切那些免费写操作系统的工程师
肯定可以意识到,肯定就会库库的将操作系统所需要配套的软件编写出来,那么他既然将
软件编写出来了,他自己的软件也肯定想让更多的人去使用啊,那么肯定就会在不同的版
本的Linux进行发布啊,这样就可以使得软件促进操作系统被更多的人去使用,操作系统
本身也促进了这些软件的使用
此时可以理解为什么会有人去免费写软件并且在多个不同的操作系统版本下进行发布,那
么服务器怎么来呢?服务器是需要花钱的啊!
首先,Linux是一款开源的操作系统,它的特性就是:高效,稳定,安全,那么它就会在
各行各业去渗透,他在不停的为别人去创造价值,那么Linux操作系统的生态肯定也是有
对应的社区去维护的,那么此时它不停的为别人创造价值,不停的为更多人创造价值,
此时有一天对应的Linux社区说,我们不再更新维护了,我们要倒闭了,但是此时已经有
很多企业很多组织都在使用这一款操作系统,这一款操作系统在不停的为他们创造价值
此时社区要进行解散,那么只能那些企业和组织自己去维护,然后发现自己维护起来成本
高的离谱,肯定就会去问社区管理的原因,结果发现是因为没有钱,那么肯定接下来就会
有人掏腰包去解决这种经济问题,会收到全球性的捐助,因为它为别人创造了价值,别人
依赖它,它不能停止维护,它涉及到多方的核心诉求核心利益,就是需要它持续的输出
价值
4.软件源问题
我们当前所使用的Linux操作系统和其配套的软件都是由外国人开发出来的,那么他们将
配套的软件创造出来发布到对应的软件包服务器,那么这个软件包服务器就是外国的服务器
我们访问外国的服务器进行下载,下载速度是很慢很慢的,那么为了解决这个问题,国内
大型企业/高校/组织就会去做软件包服务器的镜像,其实就将外国服务器中的软件拷贝到
国内的服务器上,当我们使用云服务器的时候,操作系统中配置文件中的软件包服务器的Ip
地址就会被厂商替换为国内的软件包服务器的Ip地址
5.软件包依赖问题
我们在编写一个软件一个程序时,都会使用到别人的代码,即使我们写一个程序
hello world也会使用到printf使用到c语言库,这种会使用别人代码或者库的行为,我们
称作依赖关系

而Linux中的软件肯定也会使用别人的代码依赖别的库,那么如果我们使用源代码自己编译
安装就需要将这个软件的依赖关系梳理清楚然后在编译软件代码时就需要提前将依赖关系
全部下载处理好,很麻烦的,而且别人的代码或者库还会依赖其他人的代码/库,太麻烦
所以yum/apt额可以帮助我们解决依赖关系,开发者将软件发布到软件包服务器时,会将
所有的依赖关系全部上传上去,然后yum/apt在下载软件时会自动去识别这个软件所需要
的依赖关系,系统立马是否已经具有了这些依然关系有还是没有,yum/apt都会自己解决
三、yum、apt操作
1.软件搜索
1.1yum
sudo yum list可以罗列出软件包服务器中的所有软件
sudo yum list | grep xxx 可以进行查找软件
1.2apt
sudo apt list可以罗列出软件包服务器中的所有软件
sudo apt list | grep xxx 可以进行软件查找
2.下载软件
2.1yum
sudo yum install -y xxx 下载对应的xxx软件,之所以输入-y是因为如果没有就会提问是否
安装此软件
2.1apt
sudo apt install -y xxx 下载对应的xxx软件,之所以输入-y是因为如果没有就会提问是否
安装此软件
3.卸载软件
3.1yum
sudo yum remove -y xxx 卸载对应的xxx软件,之所以输入-y是因为如果没有就会提问
是否卸载此软件
3.2apt
sudo apt remove -y xxx 卸载对应的xxx软件,之所以输入-y是因为如果没有就会提问
是否卸载此软件
四、扩展软件包服务器
1.在Linux中软件分为常规稳定软件和新增软件,那么与之对应的就会有两种包服务器
一种是存储常规稳定软件的软件包服务器,一种是存储新增软件的软件包服务器
2.在软件包管理器配置文件中就会有对应的两个软件包服务器的的IP地址,一个是基础
软件包服务器IP,一个是扩展软件包服务器IP
3.在不断的发展中,Base软件包服务器中的软件可能会向扩展包中去迁移
扩展包服务器中的软件可能会向Base包服务器中去迁移

五、软件源更新
1.当我们在下载软件时,肯会遇到找不到该软件的问题,作这是因为对应的软件包服务器中
没有该软件
2.此时我们就应该去修改配置文件中存储的软件包服务器的IP地址,也就是更换一个软件包
服务器,称作更新软件源
3.软件源更新的3个步骤
3.1备份
3.2下载
3.3更新缓存
yum clean all
yum makecache