CentOS 7 离线安装软件(一)-- 操作系统

🌥在生产环境中,服务器因安全限制不可接入互联网。在这种环境下,想要安装软件,就需要提前将离线安装包及其依赖包下载下来,然后复制到服务器上执行安装。CentOS操作系统份额很高,这里做一下笔记,记录在CentOS7上离线安装的操作步骤,为今后积累经验。

下载地址

进入 官方网站 后,点击顶部导航菜单栏的Download后,显示页面如下:

CentOS 7 下载

点击x86_64链接即进入可下载的镜像站点列表页面:

CentOS 7 镜像站点列表

随便选一个(当然不是随便啦,哪个页面打开速度快就选哪个😉),至于选哪个版本下载,先别急,往下看。

注:之前的文章 《开源软件镜像站点列表》 就是以此列表为基础整理的。

版本选择

在官网的 安装指南下载页面 ,列出了三个版本的说明,实际上在镜像站下载时可以看到第四个版本NetInstall。以下为各个版本的区别:

  • DVD ISO: 此映像包含安装程序以及一组可在交互式安装期间安装的所有包。这是大多数用户的推荐下载
  • Everything ISO: 包含CentOS可用的安装程序和所有包。此ISO映像可用于安装带有额外软件包的系统(使用Kickstart文件并在%packages部分中指定额外软件包);它还可以用于为下载包设置本地镜像。注意,这个映像非常大,需要至少 16GB 的闪存驱动器或其他存储空间。
  • Minimal ISO: 包含安装程序和一组最小包,可用于安装非常基本的CentOS系统。然后可以使用Yum从更新存储库下载其他包。
  • NetInstall ISO: 顾名思义,就是通过网络安装,是这四者中最小的安装包。

根据以上列出的区别,再结合实际情况,一般服务器选择安装的版本可能是首选DVD ISO,其次Minimal ISO。为了照顾自己喜欢用最新软件包的习惯,就选择下载Minimal ISO版本吧😜。

在镜像站点的下载页面,始终只能下载最新的版本 7.9 系列。实际上,客户的服务器根本达不到这个版本。没办法,既然是离线安装,那么只能尽可能选择可下载的最低版本7.9(2009)了😢,也就是CentOS-7-x86_64-Minimal-2009.iso

当然,为了安全起见,校验一下下载的文件。Linux可以使用sha256sumWindows可以在Git Bash中使用sha256sum.exe

安装环境

为了方便,当然首选在虚拟机中安装。手头现有的环境如下:

  • 操作系统:Windows 10 专业版 64 位 22H2
  • 处理器:Intel(R) Core(TM) i7-6770HQ CPU @ 2.60GHz (4C8T)
  • 内存:32 GB
  • 虚拟机:Hyper-V

安装步骤

Hyper-V 管理器界面中,虽然可以使用类似于远程桌面的形式操作虚拟机,但是还是没有自己常用SSH工具界面好看、顺手。所以,我对虚拟机的网络有如下要求:

  • 可以通过宿主机SSH工具(如MobaXterm)连接到具有固定 IP 地址的虚拟机;
  • 虚拟机可以连接互联网,用于执行yum命令安装软件;

通过百度,在网上找到类似需求的经验分享 《关于Hyper-V网络设置经验总结(Default Switch/固定IP/SSH)》 ,按照其中的方法完成虚拟机网络和虚拟机两个网卡的设置。

创建新的虚拟网络交换机

  • 名称:Internal LAN
  • 类型:内部

为新建的虚拟网络交换机指定固定 IP 地址

任务栏上的网络图标右键 -> 点击打开“网络和 Internet”设置 -> 在弹出的状态窗口中点击更改适配器选项 -> 在弹出的网络连接窗口中即可看到新的网络图标vEthernet(Internal LAN) -> 在其上右键打开其属性窗口如下进行设置。

  • 地址:192.168.xxx.1(网段xxx自己随意定,不要与已有的有线或无线网络重复就行)
  • 掩码:255.255.255.0

创建自己所需的虚拟机

  • 指定名称:输入有意义的简短名称,如CentOS7
  • 指定位置:默认的虚拟机存贮位置即可,可自定义
  • 指定代数:为了兼容性,选择默认的第一代
  • 分配内存:根据自己的需要定即可,保持动态内存选项的默认勾选
  • 配置网络:选择连接到默认的Default Switch
  • 连接虚拟硬盘:默认的创建虚拟硬盘即可
  • 安装选项:注意选择以后安装操作系统,这样做的目的是还需要额外的配置
  • 完成配置:点击完成按钮保存配置

设置虚拟机

虚拟机列表 -> 右键虚拟机 -> 点击设置...

  • 添加第二块网卡:左侧点击添加硬件 -> 右侧选择网络适配器 -> 点击添加按钮 -> 选择连接到Internal LAN -> 点击右下方应用按钮保存设置
  • 配置启动选项:左侧点击选中IDE 控制器 1下的DVD 驱动器 -> 右侧指定映像文件选择之前下载好的 ISO 文件 -> 点击右下方保存按钮保存设置并关闭设置窗口

最终设置截图如下: Hyper-V 中 CentOS7 的设置

正式安装

  • 右键虚拟机点击连接...菜单项进入虚拟机连接界面
  • 点击启动按钮根据屏幕提示按个人喜好完成操作系统安装

在虚拟机内配置两块网卡的参数

  • 第一块:编辑配置文件/etc/sysconfig/network-scripts/ifcfg-eth0
    ......
    BOOTPROTO=dhcp # 改为 dhcp,动态获取 IP
    ONBOOT=yes     # 改为 yes,启用该网卡
    
  • 第二块:编辑配置文件/etc/sysconfig/network-scripts/ifcfg-eth1
    ......
    BOOTPROTO=static       # 改为 static,静态固定 IP
    ONBOOT=yes             # 改为 yes,启用该网卡
    IPADDR=192.168.xxx.2   # 与新建的虚拟交换机 Internal LAN 的网段相同,且 IP 不重复
    NETMASK=255.255.255.0  # 同上
    #GATEWAY=192.168.xxx.2 # 不需要设置
    

应用网卡参数

  • 重启网络服务
    systemctl stop network
    systemctl start network
    
  • 或者重启虚拟机
    reboot
    

这样,后续的离线安装工作就可以通过SSH工具连接到虚拟机(IP 地址为 192.168.xxx.2,称之为内网)进行。可以根据需要先启用连接默认交换机Default Switch的网卡eth0(连接互联网,称之为外网),完成软件离线安装所需依赖包的下载,然后再禁用该网卡,模拟内网离线安装,验证这些额外下载的依赖包在未连互联网的环境下的可用性


“踩坑”记录

为了后续的操作,必须保证操作系统做好以下两点准备工作:

  1. 可通过SSH工具连接到内网的虚拟机
  2. 为加速外网的依赖包下载速度,需要将yum 源切换为国内源

SSH 连不上

确定配置后的两张网卡工作正常: Hyper-V 中 CentOS7 的设置 在多次操作(启停)虚拟机的过程中,发现偶尔出现虚拟机中的内网出现异常,即无法获取到 IP 地址。简单粗暴的方法是reboot,如果还不行,那就关闭虚拟机,禁用启用Hyper-V 默认的虚拟交换机vEthernet(Default Switch),再次启动虚拟机后就可以看到能够获取到 IP 地址了。

💣遇到的第一个问题:使用SSH工具连不上虚拟机!

我下载的这个版本,SSH服务和firewall防火墙服务是默认启用的,执行以下命令发现系统没有开放SSH服务所用的默认端口22

firewall-cmd --state
firewall-cmd --zone=public --query-port=22/tcp

难怪啊!😢 那就添加、重新载入,开放这个端口:

firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --query-port=22/tcp

OK!再次连接,搞定!

yum 源切换

其实,不切换的使用官方默认源的话,也可以进行后续的操作,只是可能会出现下载慢,等待时间长。所以,为了加快后续进度,还是切换为国内源。

💣遇到的第二个问题:选择哪个国内源以及如何切换?

既然是切换,肯定要备份现有的:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

网上搜索了一番,经研究后选择三个有代表性的国内源:

  1. 网易: https://mirrors.163.com 网易开源镜像站 CentOS 使用帮助,按说明下载指定 repo 文件: 网易开源镜像站 CentOS 使用帮助
  2. 中科大: https://mirrors.ustc.edu.cn 中科大开源镜像站 CentOS 使用帮助,按说明修改虚拟机中的 repo 文件: 中科大开源镜像站 CentOS Help
  3. 阿里云: https://mirrors.aliyun.com/repo ,镜像站首页没找到入口,百度搜索得到这个地址,直接下载对应的 repo 文件: 阿里云开源镜像站 仓库

至于用哪个,看自己的喜好了!😄

常用命令

# 查看 netstat 是由 net-tools 包提供的功能
yum provides "*/netstat"

# 如果已安装了 netstat,那么可通过以下命令快速查找
rpm -qf `which netstat`

# 查看包的依赖包
yum deplist xxx

# 查看已安装包的依赖关系
rpm -qR xxx
# 查看未安装包的依赖关系
rpm -qpR xxx

# 将安装包及其依赖包下载到指定目录,但不执行安装
yum install xxx --downloadonly --downloaddir=./rmps

# 安装本地的包及其依赖包
yum localinstall ./rpms/*.rpm

# 安装指定目录下所有 rpm 包
# -i, --install: 安装软件包
# -v, --verbose: 提供更多的详细信息输出
# -h, --hash:    软件包安装的时候列出哈希标记
rpm -ivh ./rpms/*.rpm

# 更新指定目录下所有 rpm 包
# -U, --upgrade: 升级软件包
rpm -Uvh ./rpms/*.rpm