软件安装
1、软件安装的方法
Linux下软件安装有几种方法。
第一种方法是直接用源代码 进行安装。但是会出现编译好的代码无法运行的问题。可能的原因是当前源代码调用了第三方库,而我们并没有一起下载安装下来。
第二种方法是使用rpm包 。rpm包一般是由别人提供的已经编译好的二进制文件,可能进一步做好了压缩工作,解压即可使用。使用rpm包也有缺点,首先rpm也可能出现上面直接用源代码的第三方库缺失 的问题;其次rpm包可能不是官方提供的,可能会出现一些意外软件恶意捆绑的情况(下了一个全家桶),甚至出现其它更严重的安全问题。
第三种方法,就是使用诸如yum, apt之类的包管理器。我们推荐使用包管理器下载软件。
2、什么是包管理器
Linux的包管理器,类似智能手机的应用商店。
以前智能手机刚流行的时候,我们通常要去浏览器上搜索软件并下载。在浏览器上下载软件,是有风险的,比如会感染病毒、下载到了恶意软件等。
后来,一些手机厂商开始在他们生产的手机上提供"应用商店"这样一类app/应用程序。应用商店本质上是一种客户端软件,应用商店连接着包含应用软件的后端服务器。用户使用时可以使用应用商店,连接后端服务器,进行软件的下载与安装。
包管理器,就像Linux下的应用商店,本质上也是一种客户端程序。包管理器连接了软件包(软件及第三方库的打包)的服务器。我们需要下载安装软件时就可以使用包管理器连接软件包服务器,从而下载安装我们需要的软件。
Linux那么多软件是怎么来的呢?我们就需要了解Linux的生态。
3、Linux生态
我们如何评价一款操作系统的好坏?
答案是看操作系统的生态是否完善。

如果一款操作系统:
- 内核稳定且功能完善
- 支持很多常用的软件及应用程序
- 定期维护和更新,出现问题能够及时解决
- 官方网站上有文档对操作系统功能和特性等进行详细介绍,并会随着操作系统的更新,及时更新文档
- 有社区论坛供使用者讨论当前出现的问题,及解决的方法
- 有一批数量较多的针对性的用户
那么我们就可以认为这款操作系统是一个好的操作系统。
一款操作系统诞生之后,最重要的事请就是有越来越多的人使用。开发者为了保证自己的操作系统被更多人使用,就必须参与维护操作系统的生态,比如定期维护和更新操作系统、更新文档、在社区论坛上交流收集问题并尝试解决,还有开发、维护和更新软件。
当然不仅仅是开发者自己去搞软件,一些爱好者,或者公司企业的工程师也可以进行软件的开发、维护和更新。

当开发软件的人员将软件研发出来后,一些服务器的厂商可能会提供服务器给他们,方便他们维护更新旧的软件,或者继续研发新的软件。
4、配置文件
软件被做出来放在软件包服务器上了。我们要想下载软件,那么我们的云服务器就要去软件包服务器中下载软件。那么我们的云服务器是如何找到对应的软件包服务器的?
我们的云服务器内部,有一个东西叫配置文件,配置文件保存了目标服务器的下载链接。

输入指令:cat /etc/apt/sources.list即可观察到下载链接。

5、镜像
软件包服务器是找到了,可是还有一个比较严肃的问题:软件包服务器,或者说包含最近新出来的一些软件的服务器,绝大多数都在国外。而我国是采取了相关的封控措施的,导致境外网站的响应时间很长,甚至不响应。
这时,一些高校、研究所,还有企业,就会干两件事:
- 将国外软件包服务器上的一些新式软件,经检测、审核和相关处理之后,拷贝到国内的软件包服务器上
- 将Linux服务器上原来的可能提供国外服务器链接的配置文件,替换 成提供国内服务器链接的配置文件
其中,拷贝软件到国内的软件包服务器上的行为,叫做镜像。

6、软件依赖
下载一个软件,可能依赖多个第三方库:

yum, apt包管理器就会将软件和软件依赖的第三方库一起"打包"下载,很好地解决了软件依赖的问题。
7、包管理器的使用
以当前的Ubuntu版本为例,Ubuntu的包管理器是apt。
查看系统版本:cat /etc/os-release
查找软件包:apt search [软件包名称]
给出详细信息:apt show [软件包名称]
安装:[sudo] apt install [-y] [软件包名称]
- 注意执行这条安装指令之后,软件包就可以直接使用了,这意味着包管理器apt同时完成了下载和安装,非常方便
- -y选项:无需询问直接执行
卸载:[sudo] apt remove [-y] [软件包名称]
而对于CentOS系统,可以将上面指令中的apt换成yum。如果报错,则可以借助其他工具查阅正确的指令。
8、关于包管理器使用的几个问题
如何知道自己想要安装什么软件包?
这个就要看情况了。
Linux上可以存在多个用户,那么需要下载多个相同的软件包吗?
不需要,只需要下载一个软件包。同时Linux下如果正在进行一个软件包的下载安装,那么就不能再去下载另一个软件包,否则会报错。
下载软件时,apt会去配置文件中寻找下载链接。
Ubuntu的配置文件是sources.list,可以使用指令cat /etc/apt/sources.list查看下载链接。
稳定软件源 vs 扩展软件源
一部分软件经过数年甚至数十年的迭代更新,其功能已经很完善,性能也已经很稳定,所以开发者将这些完善的软件专门放在一些服务器上,这些软件包服务器就是稳定软件源;而一些新开发的软件,功能还不是很完善,性能也不是很稳定,开发者就将这些软件放在另一些服务器上,这些服务器就叫做扩展软件源。
Ubuntu的稳定软件源是:source.list
Ubuntu的扩展软件源是:source.list.d(这其实是一个目录,在我的机器上是空的)
软件源更新
软件源更新,本质上就是在网络上获取最新的配置文件,然后更换旧有的配置文件。
如果我们使用的是云服务器,我们就不需要担心这些,因为云服务器厂商会帮我们做好。
而如果一些人使用的是虚拟机,可能就需要更新软件源。
结语
本文已结束。要点为:
- yum / apt的使用
- 软件包服务器
- yum / apt本质上是一个客户端
- yum / apt包含配置文件