第1章 动手部署一台 Linux 系统
章节简述
本章将从虚拟机软件的安装讲起,完整演示在 VMware 虚拟机上安装和部署 RHEL 10 系统的全过程,并翔实地记录每一步的配置步骤(想出错都难),确保大家能从 0 到 1 地拥有一台属于自己的 Linux 系统。
本章还详细介绍了源代码包、RPM、Yum 及 DNF 等安装方式及其差异,讲解了各种常用的安装命令及其格式,并深入探讨 RHEL 10 系统中 systemd 初始化系统的特性与操作技巧,让你学完就能上手使用。
最后,提醒首次阅读本书或没有任何 Linux 系统学习经验的同学仔细阅读本章中的所有提示信息,避免因操作细节问题导致实验出错。
1.1 准备你的工具
俗话说,“工欲善其事,必先利其器”。在开始学习本书内容之前,首先需要有一台 Linux系统。不过请放心,我们不需要为了练习实验而特意购买一台新计算机,下文会讲解如何通过虚拟机软件模拟一整套的硬件平台,以满足本书中所有实验的需求。虚拟机软件能够让用户在一台真实的物理机上同时模拟出多个操作系统,既省钱又方便。
一般来讲,当前主流的硬件配置足以胜任虚拟机的工作需要,并且根据刘遄老师十多年来的运维及教学经验来看,大家无论经济条件是否允许,都不应该在学习期间把 Linux 系统部署到真实的物理机上面。因为在学习过程中免不了每天要“折磨”我们的系统,由此带来的数据丢失或者系统的重装会让人相当头疼,而且还会浪费我们的宝贵时间。通过 虚拟机软件安装的系统不仅可以模拟出硬件资源,把实验环境与物理机上的文件分离以保证数据的安全,更酷的是,当操作失误或配置出错导致系统异常的时候,能够快速把系统还原到出错前的快照状态—大约只需要 5~10s,远比在物理机上重装系统(至少需要20min)来得高效。
最近几年在讲课时,总会发现同学们使用的实验环境五花八门,有 CentOS Stream、Debian,还有老版本的 RHEL 系统等,这导致每次排查问题时都异常费力。尽管 RHEL 系统的知识在多数 Linux 发行版中是通用的,但由于大家在初次学习时还不具备排错能力,在这样的情况下,一定要尽量保持实验环境相同。就像我们去报名学习日式寿司的制作,老师用专业柳刃刀,学生非要用普通切菜刀,结果寿司肯定会被切得稀巴烂。聪明的学生在学习时一定要采用跟老师一样的工具和环境,这样在后续出现问题时可以首先排除外在干扰因素, 更快地定位并解决问题。等技术学得足够扎实了,自然也就具备了在生产环境中随心选择工具和环境的能力。
Tips :
本书配套的软件资源可通过 https://www.linuxprobe.com/tools 下载。
VMware Workstation 17—虚拟机软件(必需):这是一款功能强大的桌面虚拟机软件,能够让用户在单台物理机上同时运行多个不同的操作系统。
Red Hat Enterprise Linux (RHEL) 10—红帽操作系统(必需):由全球领先的开源软件及企业级服务提供商红帽公司出品,是一款相当稳定、出色的 Linux 系统。
对了,说来也很郁闷,其实我在初中时就有学习 Linux 系统的打算,但那时上网还不便捷,想要安装系统就必须去买光盘,而在那个时候安装 Linux 系统至少要 6 张 CD-ROM(每张容量大约 700MB)。我狠下心买回家尝试安装了几次却一直报错,因为搞不懂报错原因就只能放弃了。2015 年春节前,我在打扫屋子时无意中翻出了这些光盘,这次终于找到了当年安装失败的原因—第五张光盘被刮花了,导致某些依赖软件包无法正确安装。原本可以早几年就接触到 Linux 系统,结果因为这个原因而耽搁,真的是既郁闷又尴尬,所以这里必须狠狠地提醒各位同学:“工具准备齐全后请一定要校验完整性,不要重蹈我的覆辙。”
1.2 安装配置 VMware 虚拟机
VMware Workstation 是一款高效的桌面虚拟机软件,能让用户在单台物理机上同时运行多个不同的操作系统。每个虚拟的系统都拥有独立的磁盘分区和数据配置,因此完全不用担心会影响到自己真实物理机中原本的数据。此外,通过 VMware Workstation 创建的虚拟机(简称为 VMware 虚拟机)还支持实时快照、虚拟网络、文件拖放传输以及网络安装等方便实用的功能。用户还可以将多台虚拟机连接成一个专用的局域网,使用起来方便极了。
就硬件要求而言,Linux 系统并不需要很高端的配置,使用虚拟机也能轻松满足它的需求。准备好就开始吧!
先将上面提到的 VMware Workstation 17 虚拟机安装包下载到计算机中,用鼠标双击该软件包,大约等 1~3s,就能看到如图 1-1 所示的初始界面啦。
图1-1 安装向导初始界面
在接下来出现的虚拟机安装向导界面中,单击“下一步”按钮,如图 1-2 所示。
图1-2 安装向导界面
在最终用户许可协议界面选中“我接受许可协议中的条款”复选框,然后单击“下一步” 按钮,如图 1-3 所示。
图1-3 接受许可条款
在安装虚拟机软件时,一般无须修改安装路径。如果你担心 C 盘容量不足,则可以考虑修改安装路径,将其安装到其他位置。然后选中“将 VMware Workstation 控制台工具添加到系统 PATH”复选框,这样可以直接在命令行中调用 VMware 命令工具,而不用写完整路径了, 然后单击“下一步”按钮,如图 1-4 所示。
图1-4 指定虚拟机软件的安装路径
根据自身情况适当选择“启动时检查产品更新”与“加入 VMware 客户体验提升计划” 复选框,然后单击“下一步”按钮,如图 1-5 所示。
图1-5 用户体验设置
为了方便今后更便捷地找到虚拟机软件的图标,建议选中“桌面”与“开始菜单程序文件夹”复选框,然后单击“下一步”按钮,如图 1-6 所示。
图1-6 创建快捷方式
一切准备就绪后,单击“安装”按钮,如图 1-7 所示。
图1-7 准备开始安装虚拟机
进入安装过程,此时要做的就是耐心等待虚拟机软件的安装过程完成,如图 1-8 所示(全程大约需要 3~5min)。
图1-8 等待安装完成
虚拟机软件安装完成后,再次单击“完成”按钮,结束整个安装工作,如图 1-9 所示。
图1-9 安装向导完成界面
双击桌面上生成的虚拟机快捷图标,在弹出的如图 1-10 所示的界面中,选择“将 VMware Workstation 17 用于个人用途”后单击“继续”按钮。
图1-10 许可证密钥验证界面
在弹出“欢迎使用 VMware Workstation 17”界面后,无须任何犹豫,直接单击“完成” 按钮,如图 1-11 所示。
图1-11 虚拟机软件的欢迎界面
再次在桌面上双击快捷方式图标,此时便看到了虚拟机软件的管理界面,如图 1-12所示。
图1-12 虚拟机软件的管理界面
注意,在安装完虚拟机软件后,还不能立即安装 Linux 系统,因为还缺少重要的一步—设置硬件信息。设置硬件信息相当于为 Linux 系统设置一个硬件牢笼,限定它能够使用的最大磁盘和内存容量、CPU 内核数量、系统镜像位置、网络模式等硬件信息。大家可以想象成自己去组装一台电脑,只有把虚拟机内系统的硬件资源都模拟出来(组装完毕)后才能正式步入 Linux 系统的安装之旅。
VMware Workstation 的强大之处在于不仅可以调取真实的物理设备资源,而且还能模拟出多块磁盘或网卡设备,即便使用五六块磁盘也不用担心(详见第 7 章),我们弹指间就能创建出来,完全能够满足大家对学习环境的需求。因此再次强调,真的不用特意购买 新计算机。
在图 1-12 所示的管理界面中,单击“创建新的虚拟机”按钮,并在弹出的“新建虚拟机向导”界面中选择“自定义(高级)”单选按钮,然后单击“下一步”按钮,如图 1-13 所示(这样我们能够更充分地了解这个新系统)。
图1-13 新建虚拟机向导
由于这是一个全新安装的系统,所以不必担心虚拟机的兼容性问题,这里直接在“硬件兼容性”下拉列表中选择 Workstation 17.5 or later,然后单击“下一步”按钮,如图 1-14 所示。
图1-14 设置硬件兼容性
进入如图 1-15 所示的界面,选中“稍后安装操作系统”单选按钮,然后单击“下一步” 按钮。
在近几年的讲课过程中,我遇到了很多不听话的学生,明明要求选择“稍后安装操作系统”,结果非要选择“安装程序光盘映像文件”,并把下载好的 RHEL 10 系统的镜像选中。这样一来,虚拟机会通过默认的安装策略部署最精简的 Linux 系统,而不会再向你询问安装相关的配置信息,导致最终系统与实验环境有很大的差别。
图1-15 设置系统的安装来源
在本书写作时,RHEL 10 刚刚正式发布(2025 年 5 月 20 日),VMware 虚拟机软件中还未有该与该版本对应的系统选项,因此需按如图 1-16 所示,将客户机操作系统的类型选择为Linux,再把版本选择为“Red Hat Enterprise Linux 9 64 位”,最后单击“下一步”按钮。这样的选择仅作为系统类型标识,不会对后续实验的操作步骤、执行过程及结果产生任何影响, 主要是为了便于在软件中对不同系统进行分类管理。
Tips :
如果你在阅读本书时,发现最新的VMware 虚拟机软件已经有了“Red Hat Enterprise Linux 10 64 位”选项,则选择这个 RHEL 10 版本。
图1-16 选择操作系统的版本
填写“虚拟机名称”字段,名称可以自行发挥。建议为“位置”字段选择一个大容量的磁盘分区,最少要有 20GB 的空闲容量。然后单击“下一步”按钮,如图 1-17 所示。
图1-17 命名虚拟机及设置安装路径
设置“处理器数量”和“每个处理器的内核数量”,请大家根据自身计算机的情况进行选择。可以在网络上搜索一下自己的 CPU 处理器的型号信息,或者在 Windows 系统中打开“任务管理器”,然后访问“性能”选项卡,该选项卡右下侧的逻辑处理器数量就是你的 CPU 内核数量。如果上述方法都不奏效,那就暂时将处理器和内核数量都设置成 1(见图 1-18),后期再随时修改,不影响实验。搞定后单击“下一步”按钮。
图1-18 设置CPU处理器信息
设置分配给虚拟机的内存值。如果物理机的内存小于 8GB,则建议分配给虚拟机 2GB; 如果物理机的内存大于 8GB(不论是 16GB 还是更大),则建议分配给虚拟机 4GB,如图 1-19 所示。为虚拟机分配过多的内存不会对实验结果有直接影响,而且超过 4GB 就可能存在浪费现象了。
图1-19 设置内存分配量
VMware Workstation 虚拟机软件为用户提供了 3 种可选的网络模式,分别为“使用桥接网络”“使用网络地址转换(NAT)”与“使用仅主机模式网络”。
使用桥接网络:相当于在物理机与虚拟机网卡之间架设了一座桥梁,从而可以通过物理主机的网卡访问外网。
使用网络地址转换(NAT):让 VMware 虚拟机的网络服务发挥路由器的作用,使得通过虚拟机软件模拟的主机可以通过物理主机访问外网;在物理机中对应的网卡名称是 VMnet8。
使用仅主机模式网络:仅让虚拟机的系统与物理主机通信,不能访问外网;在物理机中对应的网卡名称是 VMnet1。
由于当前还不需要将虚拟机内的系统连接到互联网,所以这里将网络连接的类型设置为“使用仅主机模式网络”,然后单击“下一步”按钮,如图 1-20 所示。
图1-20 设置网络类型
图 1-21 所示为选择 SCSI 控制器的类型,这里使用“LSI Logic(推荐)”值,然后单击“下一步”按钮。
图1-21 设置I/O控制器类型
接下来设置新安装系统的磁盘类型,这里我们选择工作中更常使用的 SCSI 类型,然后单击“下一步”按钮,如图 1-22 所示。此处请尽量与刘遄老师保持一致,如果选择了 IDE 与NVMe 类型的磁盘,则在第 6 章的实验中磁盘名称不是/dev/sda。
图1-22 设置虚拟磁盘类型
由于这是一台全新安装的系统,不存在已有数据需要恢复的问题,所以直接选择“创建新虚拟磁盘”单选按钮,然后单击“下一步”按钮,如图 1-23 所示。
图1-23 创建新虚拟磁盘
将虚拟机系统的“最大磁盘大小”设置为 20.0GB(默认值),这是限定系统能够使用的最大磁盘容量,并不是立即占满这部分空间。如果想让磁盘拥有更好的性能,则选中“立即分配所有磁盘空间”复选框。另外,如果同学们后续不会经常移动这台虚拟机的话,则可以选中“将虚拟磁盘存储为单个文件”单选按钮,以获得更好的性能体验。然后单击“下一步” 按钮,如图 1-24 所示。
图1-24 设置最大磁盘容量
指定磁盘文件的名称,这里不作任何修改,直接单击“下一步”按钮,如图 1-25 所示。
图1-25 指定磁盘文件名称
当虚拟机的硬件信息在基本设置妥当后,安装向导程序会向我们进行确认。由于还有几处信息需要修改,所以这里单击“自定义硬件”按钮,如图 1-26 所示。
图1-26 配置信息总览
单击“新 CD/DVD(SATA)”选项,在右侧“使用 ISO 映像文件”下拉列表中找到并选中此前已经下载好的 RHEL 10 系统镜像文件(即.iso 结尾的文件),不要解压,直接选中即可, 如图 1-27 所示。
Tips :
本书不包含实体光盘,系统镜像(映像)文件指的是通过本书配套站点下载的系统软件包。
图1-27 选中RHEL 10系统映像文件路径
顺手把 USB 控制器、声卡设备统统移除。移除声卡后可以避免在输入错误时让蜂鸣器发出提示音,确保自己在实验中思绪不被打扰。然后单击“确认”按钮,最终的虚拟机配置情况如图 1-28 所示。
图1-28 最终的虚拟机配置情况
再次回到图 1-26 的配置信息确认界面,单击“完成”按钮,接下来新系统硬件会进行初始化,大概需要 1min 的时间。
当看到如图 1-29 所示的界面时,说明虚拟机已经配置成功。稍微休息一下,接下来准备步入属于你的 Linux 系统之旅吧。
图1-29 虚拟机配置成功的界面
1.3 安装你的 Linux 系统
在安装 RHEL 10 时,确保你的计算机 CPU 支持 VT(Virtualization Technology,虚拟化技术)。这是一种能够让单台计算机分割出多个独立资源区,并让每个资源区根据需要模拟出系统的技术,其本质就是通过中间层实现计算机资源的管理和再分配,让系统资源的利用率最大化。
其实有个简单的方法来判断 CPU 是否支持 VT—只要你的计算机不是五六年前购买的,或者只要价格不低于 3000 元,那么就肯定支持 VT。大多数情况下,CPU 对 VT 的支持默认都是开启的,只有当系统安装失败时才需要在物理机的 BIOS 中手动开启(一般是在物理机开机时多次按下 F2、F12 或 Del 键进入 BIOS 设置界面),如图 1-30 所示。
图1-30 在物理机的 BIOS 设置界面开启虚拟化
在虚拟机管理界面中单击“开启此虚拟机”按钮后数秒就可以看到 RHEL 10 系统安装界面了,如图 1-31 所示。在界面中,Test this media & install Red Hat Enterprise Linux 10.0 和Troubleshooting 的作用分别是校验镜像文件(或光盘)完整性后再安装以及启动救援模式。此时通过键盘的方向键选择Install Red Hat Enterprise Linux 10.0 选项后按回车键,直接安装Linux 系统。
图1-31 RHEL 10系统安装界面
接下来按回车键后开始加载安装镜像,所需时间为 20~30s,请耐心等待,如图 1-32 所示。
图1-32 安装向导的初始化界面
选择系统的安装语言后单击Continue 按钮,如图 1-33 所示。
请读者不必担心英语的问题,因为在 Linux 系统中使用的命令具有特定的功能和意义, 而非英语单词本身的意思。比如 free 的英文意思是“自由”“免费”,而 free 命令在 Linux系统中的作用是查看内存使用量情况。因此即便英语水平很高,只要没有任何 Linux 基础知识,在看到这些 Linux 命令后也需要重新学习。再者,把系统设置成英文后还可以锻炼一下英语阅读能力,不知不觉地就把 Linux 系统和英文一起学了,岂不是更好?!如果你执意选择中文安装语言,可在图 1-33 中进行选择。
图1-33 选择系统的安装语言
INSTALLATION SUMMARY(安装概要)界面是 Linux 系统安装所需信息的集合之处,如图 1-34 所示。该界面包含如下内容:Keyboard、Language Support、Time & Date、Connect to Red Hat、Installation Source、Software Selection、Installation Destination、KDUMP、Network & Host Name、Root Account 和 User Creation。
图 1-34 安装概要界面
同学们稳住,不要慌,这里选项虽然多,但并不是全都需要我们手动配置一遍。其中的Keyboard 和 Language Support 分别指的是键盘类型和语言支持,这两项默认都是英文的,不用修改(除非想换成中文界面)。
首先单击 Time & Date 按钮,设置系统的时区和时间。在Region(地区)中选择 Asia, City 中选择Shanghai。确认后单击左上角的 Done 按钮,如图 1-35 所示。
图1-35 设置系统时区
返回安装概要界面后,右侧第一个 Installation Destination 指的是想把系统安装到哪个磁盘。此时仅仅是让我们进行确认,不需要进行任何修改,单击左上角的 Done 按钮,如图 1-36所示。
图1-36 设置系统安装设备
读者可能会有这样的疑问:“为什么我们不像其他 Linux 图书那样,讲一下手动分区的方法呢?”原因很简单,因为 Linux 系统根据 FHS(Filesystem Hierarchy Standard,文件系统层次标准)为不同的目录定义了不同的功能,这部分内容会在第 6 章详细介绍。从刘遄老师最近几年的教学经验来看,即便现在写出了操作步骤,各位读者大多也只是点点鼠标, 并不能真正理解其中的原理,效果不一定好,更何况在接下来的实验中,手动分区相对于自动分区来说也没有明显的好处。所以读者大可不必担心学不到,本书的内容安排是非常科学的。
接下来进入 KDUMP 服务的配置界面。KDUMP 服务用于收集系统内核崩溃数据,但是考虑到短时间内我们并不打算调试系统内核参数,所以这里建议取消选中 Enable kdump 复选框,这可以节约 160MB 左右的物理内存占用。随后单击左上角的 Done 按钮,如图 1-37 所示。
图1-37 关闭KDUMP服务
接下来进入 Network & Host Name 配置界面。首先单击右上角的开关按钮,设置成Connected(已连接)状态。然后在左下角将 Host Name(主机名称)修改为 linuxprobe.com 并单击右侧的 Apply 按钮进行确认,这样可以保证后续的命令提示符具有一致的前缀,以免产生学习上的歧义。最后单击左上角的 Done 按钮,如图 1-38 所示。
图1-38 配置网络信息
在RHEL 10 系统的软件环境选择(Software Selection)界面中,可以根据用户的需求调整系统的基本环境。例如,如果想把 Linux 系统用作基础服务器、文件服务器、Web 服务器或工作站等,那么在系统安装过程中就会额外安装一些基础软件包,以帮助用户尽快上手。这里首先单击 Software Selection 按钮,进入配置界面,如图 1-39 所示。
图1-39 设置系统默认环境
RHEL 10 系统提供 6 种软件基本环境,依次为 Server with GUI(带图形用户界面的服务器)、Server(服务器)、Minimal Install(最小化安装)、Workstation(工作站)、Custom Operating System(自定义操作系统)和 Virtualization Host(虚拟化主机)。只要检查当前环境是默认的Server with GUI 即可,界面右侧额外的软件包不要选择,可以在后续学习过程中慢慢安装, 这样才有乐趣。单击左上角的 Done 按钮。
之前看过一个新闻,说是苹果公司某员工在 iOS 系统的用户说明书末尾加了一句“反正你们也不会去看”。其实这件事情也可以用来调侃部分读者的学习状态,刘遄老师绝不会把没用的知识写到本书中,但就是这样一张如此醒目的截图也总是有读者视而不见,结果采用了 Minimal Install 单选按钮来安装 RHEL 10 系统,最终导致很多命令不能执行,服务搭建不成功。请一定留意!
返回安装概要界面,接下来继续单击 Root Account 按钮,设置管理员的密码,如图 1-40 所示。首先选中 Enable root account 单选按钮,启用 root 管理员账户,随后输入两次相同的密码。这个操作非常重要,密码马上会在登录系统时用到。这里需要多说一句,当在虚拟机中做实验的时候,密码无所谓强弱,但在生产环境中一定要让 root 管理员的密码足够复杂,否则系统将面临严重的安全问题。最后再选中 Allow root SSH login with password 复选框,允许root 用户通过 SSH 协议访问本机(第 9 章会讲到),确认完成后单击左上角的 Done 按钮。
图1-40 设置管理员密码
继续单击 User Creation 按钮,为 RHEL 10 系统创建一个本地的普通用户。该账户的名字叫 linuxprobe,密码统一设置为 redhat,这个账户将在第 5 章用到。确认后单击 Done 按钮,如图 1-41 所示。
图1-41 创建普通用户账户
全部设置妥当后,返回安装概要界面,如图 1-42 所示。然后单击界面右下侧的 Begin Installation 按钮正式安装Linux 系统。整个安装过程大约持续 20~30min,安装完成时如图 1-43所示。
图1-42 准备开始安装系统
图1-43 系统正在安装中
单击 Reboot System 按钮,系统将会进行最后一轮的重启。在大约 2min 的等待时间过后, 便能够看到如图 1-44 所示的登录界面了。为了保证在学习到第 5 章前不受权限的牵绊,请同学们务必单击用户下方的“Not listed?”,手动输入管理员账户(root)以及设置的密码,如图 1-45 和图 1-46 所示。
图1-44 选择用其他用户登录
图1-45 输入管理员账号
图1-46 输入管理员密码
敲击回车键顺利进入系统,终于看到了系统界面,如图 1-47 所示。至此,便完成了 RHEL 10 系统的全部安装和部署工作。
图1-47 正式开始使用系统
真棒!准备开始学习 Linux 系统吧。
1.4 安装软件的方法
在 20 世纪 90 年代初,Linux 系统还处于早期阶段,根据 GNU 开源计划和大多数开源许可协议的要求,软件发布者只需要提供自身的源代码即可,余下的编译软件和解决软件间依赖关系的任务则全由运维人员负责。这一过程不仅烦琐,而且极易出错。要想顺利安装一个服务程序,运维人员不仅需要具备丰富的知识和高超的技能,还得有良好的耐心,本书第 20 章将让读者亲身实践这一过程,体验其中的艰辛。
到了 1995 年,为了降低软件的安装难度,红帽公司推出了 RPM(Red Hat Package Manager, 红帽软件包管理器)。RPM 通过建立一个统一的数据库来管理软件包信息,它自带安装规则的脚本, 并自动处理软件之间的依赖关系。这种方式有点类似于Windows 系统中的控制面板,极大地简化了Linux 系统中软件包的安装、升级和删除过程。RPM 软件包示意图如图 1-48 所示。
图1-48 RPM软件包技术示意图
表 1-1 所示为一些常用的 RPM 软件包命令,此时还不需要记住它们,大致混个“脸熟” 就足够了。
表1-1 常用的RPM软件包命令
常用命令搭配 | 功能作用 |
---|---|
rpm -ivh filename.rpm | 安装软件 |
rpm -Uvh filename.rpm | 安装或升级软件 |
rpm -e filename.rpm | 卸载软件 |
rpm -qpi filename.rpm | 查询 RPM 软件包(未安装)的描述信息 |
rpm -qpl filename.rpm | 查询 RPM 软件包(未安装)包含的文件 |
rpm -qc filename | 查询已安装软件包的配置文件 |
rpm -qR filename | 查询软件依赖关系 |
rpm -qf /path/to/file | 查询文件属于哪个已安装的 RPM 包 |
rpm -V filename | 验证软件包是否被修改 |
rpm -qa | 列出所有已安装的 RPM 软件包 |
尽管RPM 能够帮助用户查询软件之间的依赖关系,但安装期间出现的问题还是需要运维人员自己解决,而有些大型软件可能与数十个甚至数百个程序都有依赖关系,这使得安装过程仍然十分烦琐。为了进一步降低安装软件的复杂度,2002 年 6 月,基于 RPM 的 YUM(Yellowdog Updater, Modified)初始版本发布。
YUM 能根据用户需求分析所需软件包及其相关的依赖关系,然后与软件仓库进行交互,实现软件包的安装、更新、删除等功能,非常类似于苹果 iOS 系统的 App Store 软件商店。用户只需要提供软件名称,YUM 软件仓库便会找到它,并自动搜集整理其关联的依赖软件服务,进行分析、下载、部署操作。YUM 软件仓库的技术示意图如图 1-49 所示,技术拓扑图如图 1-50 所示。
图1-49 软件仓库的技术示意图
用户只需要通过 HTTP、FTP 或本地挂载方式(FILE)连接到软件仓库即可从 YUM 仓库自动下载软件并安装。
图1-50 Yum软件仓库的技术拓扑图
YUM 软件仓库中的RPM 软件包既可以是由红帽官方发布的,也可以是由第三方发布的, 当然也可以是自己编写的。本书配套的系统镜像(非实体光盘,需从本书配套网站https://www.linuxprobe.com/tools 下载)内已经包含了大量可用的 RPM 红帽软件包,既用于安装系统,也用于配置软件仓库,后面会详细说明。表 1-2 所示为一些常见的YUM 命令,当前只需对它们有一个简单印象即可。 表1-2 常见的Yum命令
命令 | 作用 |
---|---|
yum repolist all | 列出所有仓库 |
yum list all | 列出仓库中所有软件包 |
yum info 软件包名称 | 查看软件包信息 |
yum install 软件包名称 | 安装软件包 |
yum reinstall 软件包名称 | 重新安装软件包 |
yum update 软件包名称 | 升级软件包 |
yum remove 软件包名称 | 移除软件包 |
yum clean all | 清除所有仓库缓存 |
yum check-update | 检查可更新的软件包 |
yum grouplist | 查看系统中已经安装的软件包组 |
yum groupinstall 软件包组 | 安装指定的软件包组 |
yum groupremove 软件包组 | 移除指定的软件包组 |
yum groupinfo 软件包组 | 查询指定的软件包组信息 |
再用生活中的例子进行类比。YUM 软件仓库就像个菜品齐全的餐厅。用户不需要自行购买鸡胸肉、黄瓜、花生米(RPM 软件包),也不需要知道先放老抽还是料酒(依赖关系),只需要告诉厨师(YUM 软件仓库)自己想吃的菜是宫保鸡丁(软件包名),其他就什么都不用管了,耐心静等几分钟,一切都会自动完成。
原本以为故事到此就要结束了,可是人们发现尽管 YUM 解决了软件的依赖关系问题, 但是存在分析不准确、内存占用量大、不能多人同时安装软件等硬伤。终于在 2015 年,随着Fedora 22 系统的发布,红帽又给了我们一个新的选择—DNF(Dandified YUM)。DNF 实际上就是解决了上述问题的 YUM 软件仓库的改良版,业内称之为 YUM v4,它显著提升了依赖关系的分析能力和处理速度。
作为 YUM v3 的接替者,DNF 特别友好地继承了原有的命令格式,且在使用习惯上也保持了一致,老玩家可以无缝过渡到新安装方式,完全不必担心不会操作。我们来看一个例子。以前,安装软件用的命令是“yum install 软件包名称”,那么现在则是“dnf install 软件包名称”(也就是说,将 yum 替换成 dnf 即可)。
当然,RHEL 10 系统也照顾到了老用户的习惯问题,同时兼容并保留了 yum 和 dnf 两个命令,大家在实际操作中可以随意选择。甚至这两个命令的提示信息都基本一样,感知不到什么区别。
1.5 系统初始化进程
Linux 系统的启动过程包括几个关键步骤:首先是启动 BIOS/UEFI,随后进入 Boot Loader(如 GRUB),然后加载和初始化系统内核,最终启动初始化进程。初始化进程是 Linux 系统启动后的第一个进程,它负责完成系统中的相关初始化工作,为用户提供一个合适的工作环境。可以简单地将这一过程理解为“从按下开机键到看到系统桌面”的整个过程。
在RHEL 10 系统中,传统的 System V init 已经成为历史,取而代之的是systemd 初始化进程服务,对应的管理命令则是 systemctl。原本以为这对大家的日常使用影响不大, 但实际情况并非如此。随着RHEL 10 的更新,众多服务管理命令发生了替换。因此,对于之前学习并熟悉老版本系统,且习惯使用 service 和 chkconfig 命令进行服务管理的读者来讲,这种转变可能会带来一定困扰,估计需要一些时间来适应新的 systemctl 命令了。
表 1-3 和表 1-4 所示为新老版本系统的对比。
表 1-3 与服务的启动、重启、停止、重载、状态查看等相关的常用命令(sshd 为示例服务)
老系统命令(RHEL 6) | 新系统命令(RHEL 10) | 作用 |
---|---|---|
service sshd start | systemctl start sshd | 启动服务 |
service sshd restart | systemctl restart sshd | 重启服务 |
service sshd stop | systemctl stop sshd | 停止服务 |
service sshd reload | systemctl reload sshd | 重新加载配置文件(不终止服务) |
service sshd status | systemctl status sshd | 查看服务状态 |
表 1-4 用于服务开机启动、不启动、查看各级别下服务启动状态等相关的命令(sshd 为示例服务)
老系统命令 | 新系统命令 | 作用 |
---|---|---|
chkconfig sshd on | systemctl enable sshd | 开机自动启动 |
chkconfig sshd off | systemctl disable sshd | 开机不自动启动 |
chkconfig sshd | systemctl is-enabled sshd | 查看特定服务是否为开机自启动 |
chkconfig --list | systemctl list-unit-files --type=sshd | 查看各级别下服务的启动与禁用情况 |
此外,systemd 不仅替代了传统的System V init,它还引入了“目标”(target)这一概念替换原来的运行级别(runlevel)。这样一来,系统可以更灵活地管理服务和进程了。表 1-5 详细地展示了 System V init 运行级别与 systemd 目标之间的对应关系以及它们的作用。
表 1-5 systemd 与 System V init 的区别以及作用
System V init 运行级别 | systemd 目标名称 | systemd 目标作用 |
---|---|---|
0 | poweroff.target | 关机 |
1 | rescue.target | 救援模式 |
2 | multi-user.target | 多用户的文本界面 |
3 | multi-user.target | 多用户的文本界面 |
4 | multi-user.target | 多用户的文本界面 |
5 | graphical.target | 多用户的图形界面 |
6 | reboot.target | 重启 |
emergency | emergency.target | 救援模式 |
在RHEL 10 系统中,由于对系统初始化和服务管理命令进行了全面革新,因此服务管理变得极为便捷,用户无须像之前那样在不同命令间切换,而是仅使用 systemctl 命令就能一站式完成所有服务管理工作。之所以能实现如此高效的管理体验,其根源在于系统底层采用了systemd 初始化进程。该进程采用了并行启动服务的模式,打破了传统启动流程中,因等待网络服务启动或系统自检完成等特定服务,而导致后续服务启动受阻的瓶颈,从而充分释放硬件性能潜力。这一优化在开机速度上体现得尤为明显,若将安装老版本系统(如 RHEL 5/6)的服务器与之对比,会发现RHEL 10 的开机速度几乎提升了一倍。
复习题
-
为什么建议读者在下载系统文件后先进行校验而不是直接安装呢?
答:为了保证系统和软件包的安全与完整性,避免因为外部因素导致安装失败—磨刀不误砍柴工。
-
使用虚拟机安装 Linux 系统时,为什么要先选择稍后安装操作系统,而不是去选择 RHEL 10 系统镜像文件?
答:在配置界面中若直接选择了 RHEL 10 系统镜像文件,则VMware Workstation 虚拟机会使用内置的安装向导自动进行安装,最终安装出来的系统与我们后续进行实验所需的系统环境会不一样。
-
在安装系统时,如果出现类似于“CPU 不支持虚拟化”这样的报错信息,该怎么解决?
答:遇到此类报错,最可能的原因是BIOS 中没有开启VT 功能,手动开启后重启即可。
-
RPM(红帽软件包管理器)只有红帽企业系统在使用,对吗?
答:RPM 已经被 CentOS Stream、Fedora、openSUSE 等众多 Linux 系统采用,它真的很好用!
-
简述RPM 与软件仓库的作用。
答:RPM 通过将源代码与安装规则打包在一起,降低了单个软件的安装难度。YUM 与DNF 软件仓库则是将大量常用的RPM 软件包打包到一起,解决了软件包之间的依赖关系问题,这进一步降低了软件的整体安装难度。
-
RHEL 10 系统采用 systemd 作为初始化进程,那么如何查看某个服务的运行状态呢?
答:可执行命令“systemctl status 服务名”查看服务的运行状态。
-
在 RHEL 10 中执行service sshd restart 命令时出错,应怎么办?
答:在 RHEL 10 中,服务管理命令是 systemctl,因此应替换为 systemctl restart sshd 命令。
-
VMware Workstation 虚拟机的 3 种网络连接模式,哪种肯定无法访问互联网?
答:“使用仅主机模式网络”肯定无法访问互联网,而“使用桥接网络”和“使用网络地址转换(NAT)”可以访问互联网。
-
为什么要在安装系统时关闭 KDUMP 服务?在什么情况下不要关闭?
答:关闭 KDUMP 服务能够节约 160MB 左右的物理内存占用,但当用户需要分析内核报错信息进行排错时,不需要关闭。
-
选择 Server with GUI 软件基本环境,是否意味着只有图形用户界面,没有命令终端了?
答:不是。图形用户界面和命令终端都可以使用,并且该软件环境会默认安装很多常用工具和命令,例如 ifconfig、tar 命令等。这样一来,即使是习惯纯命令行操作的运维人员,也能借助 Server with GUI 环境中默认安装的常用工具和命令,高效完成系统初始化配置工作。