# 操作系统

在新窗口观看视频

服务器一般都会选择使用 Linux 类型的操作系统,这是一种开源的操作系统,有很多发行版本,比如 Ubuntu,CentOS 都属于 Linux 类型的操作系统,不同的发行版本都有各自的一些特点。之前我们为服务器选择使用的是 CentOS 操作系统,后面我们会在这种操作系统上配置应用的生产环境,在这之前再花点时间了解一下这种操作系统的基本的用法,我们得知道怎么在系统上安装软件,管理系统里的服务,还需要理解目录与文件的权限。

# 系统的包管理工具

在新窗口观看视频

在 Linux 系统上安装软件,一般可以通过系统的包管理工具(Package Manager)。之前我们在开发 Node.js 应用的时候,经常会用到 Node.js 的包管理工具(npm),为项目安装一些包。在这里我们说的包管理工具是为操作系统准备的,在不同类型的 Linux 操作系统里面,这个包管理工具可能会不太一样。

我们的云服务器的操作系统是 CentOS 8,在这种操作系统上,有两个可用的包管理工具,一个是 yum,还有一个是 dnf。这个 dnf 以后可能会替代 yum,因为 yum 一直存在一些解决不了的问题。所以就又弄出来一个 dnf,准备替换掉之前的 yum

用包管理工具管理操作系统上的软件包非常简单,只需要一行命令,就可以把软件安装在系统上,安装的时候包管理工具会帮我们搞定软件包之间的依赖关系。就是如果你要安装的软件包,需要另外一些软件包提供的功能,这些软件包如果在系统上还不存在,包管理工具就会自动下载安装这些被依赖的软件包。

能用包管理工具安装哪些软件包,这取决于系统里的软件仓库。英文可以用 repo 表示,之前我们给应用做源代码管理的时候,也出现过 repo 这个词,全名是 repository。我们可以把它理解成是某种 “仓库”。在 Linux 操作系统里提到的 repo,指的就是软件仓库,用包管理工具安装软件包的时候,会查询系统里的这些软件仓库,这样包管理工具才知道怎么下载安装需要的软件包。在系统里自带了一些软件仓库,我们也可以额外再安装一些软件仓库。

# 任务:使用系统的包管理工具

在新窗口观看视频

1:远程登录服务器

在终端,使用 SSH,以普通用户的身份登录到服务器,执行:

ssh wanghao@47.111.228.140

2:查看仓库列表

dnf 这个包管理工具,查看系统里的仓库列表,执行:

dnf repolist

观察返回的结果:

仓库标识         仓库名称
AppStream       CentOS-8 - AppStream
BaseOS          CentOS-8 - Base
epel            Extra Packages for Enterprise Linux...
extras          CentOS-8 - Extras

AppStream,BaseOS,epel 这些就是系统里的一些软件仓库的名字,这些软件仓库里面都包含了它知道的软件列表。如果要安装的软件包在现有的软件仓库里找不到,或者软件的版本不合你的要求,我们可以去安装新的软件仓库。

3:搜索软件包

安装软件包之前可以先搜索一下:

dnf search nodejs

比如我想安装 nodejs,可以用 dnf search 命令搜索一下相关的关键词,包管理工具会列出找到的结果,你可以根据软件的名字,还有描述来判断是不是自己需要的软件包。

Last metadata expiration check
===== Name Exactly Matched: nodejs ======
nodejs.x86_64 : JavaScript runtime

+==== Name Matched: nodejs ==============
nodejs-docs.noarch : Node.js API documentation
nodejs-devel.x86_64 : JavaScript runtime - development headers
nodejs-nodemon.noarch : Simple monitor script ...
nodejs-packaging.noarch : RPM Macros ...

4:查看软件包信息

dnf info nodejs

结果:

名称: nodejs
时期: 1
版本: 10.19.0
发布: 2.module_el8...
架构: x86_64
大小: 9.0 M: nodejs-10.19.0-2.module_el8.1.0+296+bef51246.src.rpm
仓库: AppStream
概况: JavaScript runtime
URL: http://nodejs.org/: MIT and ASL 2.0 and ISC and BSD
描述: Node.js is a platform ...

上面列出的就是 nodejs 这个软件包的相关信息,注意它的 Version 与 Repo。根据上面的信息可以判断出要安装的 Node.js 的版本是 10.19.0,这也是一个长期被支持的 Node.js 版本。如果你要在系统上安装其它版本的 Node.js,需要想一些其它的办法,比如在系统上安装包含了更新版本的 Node.js 的软件仓库。

Repo 告诉我们这个软件包是在哪个软件仓库里,AppStream 是 CentOS 8 里面自带的一个软件仓库。

5:安装软件包

在系统里安装软件包可以使用 dnf install 这个命令,因为需要管理员的权限才能做这件事,所以要在命令的前面加上 sudo,执行:

sudo dnf install nodejs

执行 dnf install,后面加上要安装的软件包的名字,上面这条命令安装的是 nodejs 这个软件包。包管理工具会列出要安装的是什么,要安装的额外的依赖都有什么。这里我们要安装的是 nodejs 这个软件包,需要安装的依赖是 npm 。确定安装这些东西,可以输入 y,再按一下回车。

完成以后,确定是否正常安装了 Node.js,执行:node -v,返回: v10.19.0,说明已经成功的使用包管理工具,安装了 v10.19.0 这个版本的 Node.js。

6:移除软件包

移除已经安装在系统上的软件包,用的是 dnf remove 命令,后面加上要移除掉的软件包的名字。加上 -y 这个选项,表示确定移除,这样就不会提示我们是否要确定移除软件包了。执行:

sudo dnf remove nodejs -y
成为一名开发者,把想法变成现实
参加此次开发之旅
订阅