# 03、Linux安装软件的几种方法

> Linux 安装软件的几种方法与最小安装整改：rpm -ivh/-Uvh/-Fvh 与 rpm -qa/-ql/-qi 查询、yum/dnf install/update/history 与本地仓库配置、dpkg -i 与 deb 包安装、apt install/remove/purge 与 apt-cache policy、源码编译 tar/configure/make/make install 与 make uninstall、免安装解压即用软件的登记管理，以及 rpm -e --test 与 apt-get -s remove 依赖预演、包签名校验、与「最小安装」控制点的关联说明。

---

LLMS index: [llms.txt](/wikis/llms.txt)

---

> 定位：等保「入侵防范——最小安装」控制点的配套参考。测评整改中经常需要在现场装卸软件包（清理多余组件、部署扫描 Agent、离线安装补丁），本文汇总各包管理器的常用操作。
> 配套文章：[11、Linux操作系统加固手册](../11linux操作系统加固手册/)（见"入侵防范-最小安装"节）。
>
> 使用说明：
>
> - 本文为**加固操作手册**：所有命令都会修改配置，可能中断服务、断开当前会话或需要重启。实施前必须完成变更审批、确认业务窗口、备份原配置（设备 `save` 与 `copy running-config`／`backup startup-configuration`，主机备份 `/etc`、注册表与关键业务数据），并准备**可执行的回滚预案**。
> - 先在测试环境或单台设备灰度验证，确认无业务影响后再批量推广；每完成一项立即用文中「验证」命令核验生效——配置已下发不等于策略已生效（如 H3C 未 `password-control enable`、Linux 未对存量账户 `chage`、Windows 未 `gpupdate /force`）。
> - 示例中的地址、账户名、口令、路径均为演示值（如 `PleaseChange@123`、`192.168.10.20`、`admin123`），现场须替换为符合本单位口令策略与网络规划的真实值，**严禁直接沿用文中示例口令**；对外发布或归档时须对个人信息与内网管理地址脱敏。
> - 命令不存在、视图名或参数与本文不一致时，先用 `display version` / `show version` / `winver` 确认版本与部署形态，再查阅对应版本官方文档换用等效命令；**版本差异不得直接作为「无法整改」的结论**，须给出替代措施并评估其实际效果。
> - 涉及账户、锁定、超时、防火墙与端口收敛的变更存在锁死自身风险：务必保留一条已验证的恢复通道（Console 口、带外管理口、堡垒机会话或另一管理员账户）后再实施。
> - 加固完成后按「16、安全评估加固记录表3.0」逐项留痕（整改前后回显、操作人、时间、验证结论、回退情况），并纳入复测；测评判定口径以 GB/T 28448-2019 与《高风险判定指引》为准，本文的「加固要点」不构成最终测评结论。
>
> 不适用标识说明：
>
> - 使用 `【不适用】` 明确标记现场可判定为不适用的控制点，并写明判定依据与承载该能力的上位组件。
> - 依据 GB/T 28448-2019「按测评对象实际承载功能与数据处理范围判定」原则：控制能力由统一认证平台、堡垒机、日志审计系统、终端管理系统、虚拟化平台或云托管平台承载时，应注明测评单元边界后判定不适用或转由上位组件核查，不得机械按缺失判不符合。
> - 产品版本确实不提供该能力（如老旧设备无 SNMPv3、无可信根、社区版无审计模块、已停止官方支持的操作系统）时，须核查替代措施并按替代措施的实际效果定档，不得直接判不适用；已停止支持的版本应同时提出升级或补偿控制建议。

## 一、rpm 包（RHEL / CentOS / openEuler / 麒麟等 RPM 系）

```bash
rpm -ivh soft-1.2.3-1.el7.x86_64.rpm     # 安装（i=install, v=详细, h=进度）
rpm -Uvh soft-1.2.3-2.el7.x86_64.rpm     # 升级安装
rpm -e soft                              # 卸载（用软件名，不是包文件名）
rpm -qa                                  # 查询所有已安装软件包
rpm -qa | grep -i openssh                # 按关键字查询
rpm -ql soft                             # 查看某包安装了哪些文件
rpm -qf /usr/bin/ssh                     # 反查文件属于哪个包
rpm -K soft-1.2.3-1.el7.x86_64.rpm       # 校验包签名（防加固时引入被篡改的安装包）
rpm -e soft --nodeps                     # 忽略依赖强制卸载（慎用，可能连带破坏其他组件）
rpm -e soft --test                       # 卸载预演，不实际执行
```

## 二、yum / dnf（在线仓库，自动解决依赖）

```bash
yum list installed                       # 已安装清单（最小安装清点常用）
yum provides /usr/bin/ssh                # 查询命令由哪个包提供
yum -y install soft                      # 安装
yum remove soft                          # 卸载
yum install --downloadonly --downloaddir=/tmp/pkg soft
                                         # 仅下载不安装，用于内网离线加固场景
```

RHEL 8+ / openEuler / 银河麒麟 V10 服务器版使用 `dnf`（命令与 yum 兼容）：

```bash
dnf install soft
dnf remove soft
dnf history                              # 查看事务历史（出问题可回滚）
dnf history undo 12                      # 回滚某次事务
dnf autoremove                           # 清理无用依赖
```

## 三、deb 包与 dpkg（Debian / Ubuntu / 统信 UOS 桌面系）

```bash
dpkg -i soft-1.2.3-1.deb                 # 安装
dpkg -r soft                             # 卸载（保留配置）
dpkg -P soft                             # 卸载并删除配置文件
dpkg -l | grep -i soft                   # 查询
dpkg -L soft                             # 查看包文件清单
```

## 四、apt（在线仓库，Debian 系）

```bash
apt-cache search soft                    # 搜索
apt-get install soft                     # 安装
apt-get remove soft                      # 卸载（保留配置）
apt-get --purge remove soft              # 卸载并删除配置
apt-get autoremove                       # 清理无用依赖
apt-get autoclean && apt-get clean       # 清理缓存包
apt-get upgrade                          # 更新已安装包
apt list --installed                     # 已安装清单
```

简言之：dpkg 只能安装本地 deb 包；apt 能在线下载安装并自动处理依赖，二者关系同 rpm 与 yum/dnf。

## 五、源码编译安装（tar.gz / tar.bz2）

```bash
tar -xzvf soft.tar.gz                    # 解压解包（bz2 用 tar -xjvf）
cd soft
./configure                              # 检查编译环境，生成 Makefile
make                                     # 编译
make install                             # 安装（通常在 /usr/local 下）
make clean                               # 清理编译临时文件
```

卸载：仅当软件提供 `make uninstall` 时可用，否则需按 `INSTALL/README` 手工删除安装文件——这也是测评不建议生产环境使用源码安装的原因之一（升级与卸载不可控）。

## 六、免安装软件（解压即用）

```bash
tar -xzvf soft.tar.gz
chmod +x soft/bin/soft
ln -s /opt/soft/bin/soft /usr/local/bin/soft   # 可选：加入 PATH 方便调用
```

## 七、与"最小安装"的关联（测评视角）

> **对应控制点**：GB/T 22239-2019 8.1.4.4 入侵防范 a)（遵循最小安装原则，关闭不需要的系统服务与默认共享）、e)（应能发现可能存在的已知漏洞并及时修补，补丁与软件来源须可控）
>
> **加固要点**：按业务需要最小化安装组件，卸载或禁用与业务无关的软件包与服务；软件与补丁来源必须可控——优先使用发行版官方仓库或厂商签名包，离线环境搭建本地镜像仓库并校验签名/GPG，禁止从不可信站点下载二进制直接部署；源码编译安装须留存来源、版本与编译参数记录并纳入资产与漏洞台账。卸载前先用 `rpm -e --test` / `apt-get -s remove` 预演依赖影响，避免连带移除业务组件。
>
> **验证方法**：`rpm -qa` / `dpkg -l` 导出已安装清单并与业务需要清单比对；`yum repolist` / `apt-cache policy` 确认仓库来源；`rpm -K 包名` 校验签名；`yum history` / `dnf history`、`/var/log/apt/history.log` 查看安装与回滚记录；卸载预演输出与变更记录归档。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


主机安装了与业务无关的高风险组件（编译工具链、FTP/Telnet 服务、示例与测试程序），或软件与补丁来源于不可信站点且无签名校验，导致 8.1.4.4 入侵防范 a) 最小安装与 e) 漏洞修补同时失效，按高风险线索记录。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


- **核查方法**：`rpm -qa | wc -l` 或 `apt list --installed | wc -l` 清点软件包数量，对照部署方案与业务清单，识别多余组件（如图形界面、编译工具链、示例程序）；
- **整改方法**：卸载多余组件优先用包管理器（yum remove / apt purge）；`--nodeps` 强制卸载前先 `--test` 预演，避免连带破坏依赖；
- **离线加固**：隔离网环境用 `yum install --downloadonly` 或官方离线包，安装前用 `rpm -K` 校验签名；
- **判定口径**：仅安装业务必需组件、无业务无关的应用程序即为符合；单纯"数量少"不是目的，关键是无多余可被利用的组件。

## 参考依据

- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》（8.1.4.4 入侵防范 a) 最小安装、e) 已知漏洞修补与软件来源可控）：[http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF)
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》（测评对象边界认定、单元测评实施与结果判定：符合/部分符合/不符合/不适用）：[http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C)
- GB/T 22240-2020《信息安全技术 网络安全等级保护定级指南》、GB/T 25070-2019《安全设计技术要求》、GB/T 28449-2018《测评过程指南》，可在全国标准信息公共服务平台检索：[http://openstd.samr.gov.cn/bzgk/gb/](http://openstd.samr.gov.cn/bzgk/gb/)
- Red Hat Enterprise Linux 官方文档入口（Security Hardening / PAM / SELinux）：[https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/)
- Linux man-pages（man7.org，rpm/yum/pam/sshd/auditctl 手册页）：[https://man7.org/linux/man-pages/](https://man7.org/linux/man-pages/)
- 《网络安全等级保护测评高风险判定指引》（中关村信息安全测评联盟团体标准）——高风险情形判定口径，站内对照表：[22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)
- 命令核验说明：包管理命令以 man7.org（rpm/yum/dnf/apt/dpkg 手册页）与各发行版官方文档核验（核验日期 2026-09-02）。五处须留意：① RHEL 8+/Fedora 中 `yum` 为 `dnf` 的兼容软链，`yum history` 与 `dnf history` 行为基本一致但插件与配置路径不同，Debian/UOS 系则完全没有 `yum`；② `rpm -e 包名` 会因依赖关系失败，须先 `rpm -e --test` 或 `rpm -q --whatrequires 包名` 预演，**禁止用 `--nodeps` 强行卸载**（会破坏业务组件且难以恢复）；③ Debian 系 `apt-get remove` 保留配置文件、`purge` 一并清除，整改留痕须写明所用动作；④ 源码编译安装不进入包管理数据库，漏扫与资产台账无法自动发现，须手工登记来源、版本、编译参数与安装路径，并确认是否提供 `make uninstall`；⑤ 离线环境安装前须校验包签名与摘要（`rpm -K 包名`、`dpkg-sig --verify` 或 `debsig-verify`、`sha256sum` 比对官方值），从不可信来源获取的二进制不得直接部署到生产主机。

## 关联文章

- 本板块相关篇：[11、Linux操作系统加固手册](../11linux操作系统加固手册/)、[04、Linux主机加固操作手册](../04linux主机加固操作手册/)、[05、Windows操作系统安全加固](../05windows操作系统安全加固/)、[07、CentOS操作系统安全加固](../07centos操作系统安全加固/)
- [Linux 操作系统测评命令（现场取证速查）](../../../gradeprotection/服务器/16linux操作系统测评命令/)
- [通用-服务发现与软件排查命令单](../../../gradeprotection/服务器/三级现场测评命令单/通用-服务发现与软件排查命令单/)
- 板块目录：[服务器](/wikis/docs/reinforce/%E6%9C%8D%E5%8A%A1%E5%99%A8/)
- 通用加固方案：[17、加固方案总纲](../../其他系统或设备/17网络设备安全设备服务器数据库和应用系统的加固方案/)
- 取证记录模板：[16、安全评估加固记录表3.0](../../其他系统或设备/16安全评估加固记录表3.0/)
- 高风险判定口径：[22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)
