使用 YUM/DNF 包管理器(推荐方式)
对于绝大多数用户而言,使用 YUM(Yellowdog Updater Modified)或其后续版本 DNF(Dandified YUM)是安装、更新和管理软件的首选方法,在 CentOS 7 及更早版本中使用 YUM,而在 CentOS 8 及 Stream 版本中则默认使用 DNF,二者在常用命令上基本兼容。
这种方式的核心优势在于自动化依赖关系解决,当您安装一个软件时,YUM/DNF 会自动从配置好的软件仓库中下载并安装该软件所需的所有依赖包,极大地简化了操作流程。
常用命令示例:
命令 | 描述 |
---|---|
sudo yum install <package_name> | 安装指定的软件包(sudo yum install nginx ) |
sudo yum remove <package_name> | 卸载指定的软件包 |
sudo yum update <package_name> | 更新指定的软件包 |
sudo yum update | 更新系统中所有可更新的软件包 |
yum search <keyword> | 根据关键词搜索可用的软件包 |
yum info <package_name> | 查看指定软件包的详细信息,如版本、大小等 |
操作流程:
- 搜索软件:在安装前,通常会用
yum search
确认软件包的确切名称。 - 执行安装:使用
sudo yum install <package_name>
命令进行安装,系统会列出需要安装的软件包及其依赖项,并询问您是否确认(输入y
并回车)。 - 验证安装:安装完成后,可以通过
which <command_name>
或rpm -q <package_name>
来验证软件是否已成功安装。
这种方式是管理 CentOS 系统最规范、最安全、最高效的方法,强烈推荐在所有可能的情况下优先使用。
使用 RPM 包进行本地安装
RPM(RPM Package Manager)是 YUM/DNF 的底层工具,它负责实际安装、查询和卸载 .rpm
格式的软件包文件,与 YUM/DNF 不同,RPM 不会自动处理依赖关系。
适用场景:
- 当您无法通过 YUM 仓库安装某个软件,但能从官方网站获取到其
.rpm
安装包时。 - 在没有网络连接的离线环境中进行软件部署。
常用命令示例:
命令 | 描述 |
---|---|
sudo rpm -ivh <package_file.rpm> | 安装一个 RPM 包(i =install, v =verbose, h =hash) |
sudo rpm -Uvh <package_file.rpm> | 升级一个 RPM 包,如果未安装则进行安装 |
sudo rpm -e <package_name> | 卸载一个已安装的软件包 |
rpm -qpi <package_file.rpm> | 在安装前查询 RPM 包的信息 |
操作流程与注意事项:
当您使用 rpm -ivh
安装一个包时,如果它依赖其他未安装的库或软件,安装过程会失败并报错,您需要手动找到并安装所有缺失的依赖包,这个过程可能非常繁琐,除非必要,否则应尽量避免直接使用 RPM 进行复杂的安装操作。
从源码编译安装(高级方式)
对于需要高度定制化的场景,或者当某个软件没有提供预编译的 RPM 包时,从源代码编译安装是最终极的解决方案,这种方式提供了最大的灵活性,允许您根据系统环境和个人需求选择编译选项(如启用/禁用特定功能、优化性能等)。
基本编译步骤(经典的“三部曲”):
- 准备编译环境:首先需要安装编译所需的工具链,如
gcc
、make
等,可以通过sudo yum groupinstall "Development Tools"
来安装整个开发工具组。 - 配置:进入解压后的源码目录,执行
./configure
脚本,该脚本会检查您的系统环境,并生成适合当前系统的Makefile
文件,您可以通过添加参数(如./configure --prefix=/usr/local/app
)来指定安装路径等功能。 - 编译:执行
make
命令,该命令会根据Makefile
文件的指示,调用编译器将源代码编译成可执行文件和库。 - 安装:执行
sudo make install
命令,该命令会将编译好的文件复制到configure
阶段指定的系统目录中(默认通常是/usr/local
下的子目录)。
优点与缺点:
- 优点:高度可定制,能获取到最新版本的软件。
- 缺点:过程复杂、耗时,且对用户的技术要求较高,最大的问题是难以管理和卸载,编译安装的软件不会被 YUM/DNF 识别,升级和卸载通常需要手动处理,或者回到源码目录执行
sudo make uninstall
(如果开发者提供了该功能)。
方法对比小编总结
为了更直观地理解这几种方式的差异,下表对它们进行了小编总结:
安装方式 | 易用性 | 依赖关系处理 | 灵活性/定制性 | 管理与卸载 | 推荐用户 |
---|---|---|---|---|---|
YUM/DNF | 自动处理 | 低 | 极其方便 | 所有用户,尤其是初学者和生产环境 | |
RPM | 需手动处理 | 低 | 方便 | 需要安装本地 .rpm 文件的特定场景 | |
源码编译 | 需手动处理 | 极高 | 困难 | 需要高度定制或无法获取预编译包的高级用户 |
相关问答 FAQs
Q1: 我应该使用 YUM 还是 RPM?它们有什么根本区别?
A: 根本区别在于依赖关系的管理,YUM(或 DNF)是一个智能的包管理器,它工作在软件仓库的更高层面,能够自动分析并安装软件所需的所有依赖项,让安装过程变得简单可靠,而 RPM 是底层的包安装工具,它只负责处理单个 .rpm
文件,不会去寻找或安装依赖,如果您使用 RPM 安装一个有依赖的包,它会因依赖缺失而失败,在 99% 的情况下,您都应该优先使用 yum install
或 dnf install
,只有当您手头有一个独立的 RPM 文件且确信其依赖已满足时,才考虑使用 rpm -ivh
。
Q2: 我从源码编译安装了一个软件,现在该如何彻底卸载它?
A: 从源码编译安装的软件卸载起来确实比较麻烦,有几种方法可以尝试:
- 最佳情况:如果您还保留着当初的源码目录,并且该软件的
Makefile
提供了uninstall
目标,只需回到该目录执行sudo make uninstall
即可,这是最干净、最推荐的方法。 - 使用 checkinstall:如果在
make install
之前,您使用了checkinstall
工具(一个能将编译安装过程打包成 RPM 包的实用工具),那么卸载就变得和普通 RPM 包一样简单,使用sudo rpm -e <package_name>
即可。 - 手动删除:如果以上两种方法都不可行,就只能手动删除了,这需要您根据
make install
时的输出(或查看install.log
文件,如果有的话),找到所有被复制到系统中的文件和目录,然后逐一手动删除,这个过程非常繁琐且容易出错,不推荐,这也凸显了使用包管理器进行软件管理的巨大优势。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复