活动公告

系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

CentOS使用yum安装软件的实用教程 掌握这些技巧让你轻松管理软件包

SunJu_FaceMall

3万

主题

2697

科技点

3万

积分

执行版主

碾压王

积分
32881

塔罗立华奏

执行版主 发表于 2025-8-28 11:50:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. yum的基本介绍

1.1 什么是yum

Yum(全称为 Yellowdog Updater, Modified)是CentOS、RHEL等基于Red Hat的Linux发行版中默认的软件包管理器。它是一个基于RPM包管理的交互式、自动化更新程序,能够自动解决软件包之间的依赖关系问题,使得系统管理员能够更加方便地管理系统中的软件。

1.2 yum的优势

与传统的rpm命令相比,yum具有以下显著优势:

• 自动解决依赖关系:yum能够自动计算软件包的依赖关系并下载安装所需的依赖包,无需手动处理复杂的依赖问题。
• 软件包组管理:支持软件包组的概念,可以一次性安装多个功能相关的软件包。
• 仓库管理:支持从多个仓库中搜索和安装软件,便于管理不同来源的软件。
• 简单易用:命令语法简单直观,易于学习和使用。
• 事务历史:记录所有软件包的安装、更新和删除操作,支持回滚功能。

1.3 yum的工作原理

yum的工作原理主要包括以下几个步骤:

1. 读取配置文件:yum首先会读取/etc/yum.conf配置文件和/etc/yum.repos.d/目录下的所有仓库配置文件。
2. 下载元数据:从配置的仓库中下载软件包的元数据(包括软件包信息、依赖关系等)并缓存到本地。
3. 解析依赖关系:当执行安装、更新等操作时,yum会解析软件包之间的依赖关系。
4. 执行事务:计算需要执行的操作(安装、更新或删除哪些软件包),并提示用户确认后执行。

2. yum的基本命令和使用方法

2.1 安装软件包

使用yum安装软件包非常简单,基本命令格式为:
  1. yum install 软件包名称
复制代码

例如,安装Apache Web服务器:
  1. yum install httpd
复制代码

如果要安装多个软件包,可以在命令中列出所有要安装的软件包名称:
  1. yum install httpd mysql php
复制代码

yum会自动检查并安装这些软件包所需的所有依赖包。

2.2 卸载软件包

卸载软件包使用以下命令:
  1. yum remove 软件包名称
复制代码

例如,卸载Apache Web服务器:
  1. yum remove httpd
复制代码

同样,也可以一次性卸载多个软件包:
  1. yum remove httpd mysql php
复制代码

2.3 更新软件包

更新系统中已安装的软件包,可以使用以下命令:
  1. yum update 软件包名称
复制代码

例如,更新Apache Web服务器到最新版本:
  1. yum update httpd
复制代码

如果要更新系统中所有已安装的软件包,可以使用:
  1. yum update
复制代码

2.4 搜索软件包

当不确定软件包的确切名称时,可以使用search命令搜索软件包:
  1. yum search 关键词
复制代码

例如,搜索与Web服务器相关的软件包:
  1. yum search web server
复制代码

这将显示所有名称或描述中包含”web”和”server”的软件包。

2.5 查看软件包信息

要查看某个软件包的详细信息,可以使用以下命令:
  1. yum info 软件包名称
复制代码

例如,查看Apache Web服务器的详细信息:
  1. yum info httpd
复制代码

这将显示软件包的版本、大小、仓库来源、描述等详细信息。

2.6 列出软件包

要列出系统中已安装的所有软件包,可以使用:
  1. yum list installed
复制代码

要列出所有可用的软件包,可以使用:
  1. yum list available
复制代码

要列出所有可更新的软件包,可以使用:
  1. yum list updates
复制代码

2.7 清理缓存

yum会将下载的软件包和元数据缓存到本地,随着时间的推移,这些缓存可能会占用大量磁盘空间。可以使用以下命令清理缓存:
  1. yum clean all
复制代码

这将清理所有类型的缓存,包括软件包、头文件和元数据。

如果只想清理软件包缓存,可以使用:
  1. yum clean packages
复制代码

3. yum的高级技巧

3.1 使用yum仓库

yum仓库是存储软件包和元数据的服务器。CentOS默认配置了一些官方仓库,但有时需要添加第三方仓库来获取更多软件。

要查看当前系统配置的所有仓库,可以使用:
  1. yum repolist
复制代码

这将显示所有已启用的仓库及其状态。

要查看所有仓库(包括已禁用的),可以使用:
  1. yum repolist all
复制代码

3.2 管理yum仓库

添加新的yum仓库通常需要在/etc/yum.repos.d/目录下创建一个新的仓库配置文件。例如,添加EPEL(Extra Packages for Enterprise Linux)仓库:
  1. yum install epel-release
复制代码

这将自动下载并安装EPEL仓库的配置文件。

手动创建仓库配置文件的示例:
  1. vi /etc/yum.repos.d/custom.repo
复制代码

在文件中添加以下内容:
  1. [custom-repo]
  2. name=Custom Repository
  3. baseurl=http://example.com/repo/$releasever/$basearch/
  4. enabled=1
  5. gpgcheck=0
复制代码

其中:

• [custom-repo]是仓库ID,必须唯一
• name是仓库的描述性名称
• baseurl是仓库的URL地址
• enabled设置为1表示启用该仓库,0表示禁用
• gpgcheck设置为1表示检查GPG签名,0表示不检查

临时禁用某个仓库,可以在yum命令中使用--disablerepo参数:
  1. yum --disablerepo=epel install 软件包名称
复制代码

临时启用某个已禁用的仓库,可以使用--enablerepo参数:
  1. yum --enablerepo=custom-repo install 软件包名称
复制代码

3.3 使用yum组安装

yum支持软件包组的概念,允许用户一次性安装多个功能相关的软件包。要查看所有可用的软件包组,可以使用:
  1. yum grouplist
复制代码

安装一个软件包组,例如”开发工具”:
  1. yum groupinstall "Development Tools"
复制代码

这会安装包括gcc、make、automake等在内的一系列开发工具。

查看软件包组中包含哪些软件包:
  1. yum groupinfo "Development Tools"
复制代码

3.4 历史记录查看和回滚

yum会记录所有软件包的安装、更新和删除操作。要查看历史记录,可以使用:
  1. yum history
复制代码

这将显示所有历史事务的ID、操作类型、日期和影响的软件包数量。

查看特定历史事务的详细信息:
  1. yum history info 事务ID
复制代码

撤销特定历史事务:
  1. yum history undo 事务ID
复制代码

重做特定历史事务:
  1. yum history redo 事务ID
复制代码

3.5 下载但不安装

有时需要下载软件包但不安装,例如用于离线安装。可以使用以下命令:
  1. yum install --downloadonly 软件包名称
复制代码

默认情况下,下载的软件包会保存在/var/cache/yum/目录下。要指定下载目录,可以使用--downloaddir参数:
  1. yum install --downloadonly --downloaddir=/path/to/directory 软件包名称
复制代码

3.6 排除特定软件包更新

在更新系统时,有时需要排除某些软件包不更新。可以使用--exclude参数:
  1. yum update --exclude=kernel*
复制代码

这将更新系统中除内核外的所有软件包。

如果需要永久排除某些软件包,可以在/etc/yum.conf文件中添加exclude配置:
  1. [main]
  2. exclude=kernel* php*
复制代码

3.7 只下载依赖关系

要查看安装某个软件包需要哪些依赖关系,但不实际安装,可以使用:
  1. yum deplist 软件包名称
复制代码

3.8 使用插件增强yum功能

yum支持插件机制,可以通过安装插件来增强其功能。例如,安装yum-plugin-fastestmirror插件,它会自动选择最快的镜像:
  1. yum install yum-plugin-fastestmirror
复制代码

安装yum-plugin-security插件,用于安装安全更新:
  1. yum install yum-plugin-security
复制代码

使用security插件只安装安全更新:
  1. yum update --security
复制代码

4. 常见问题解决

4.1 依赖关系问题

有时在安装软件包时会遇到依赖关系问题,例如:
  1. Error: Package: package-name
  2.            Requires: dependency-package, but dependency-package is not installed
复制代码

解决方法:

1. 确保所有仓库都已正确配置并启用:yum repolist
2. 尝试清理yum缓存并重新生成:yum clean all
yum update
3. 如果依赖关系仍然无法解决,可能需要手动查找并安装所需的依赖包,或者考虑使用--skip-broken参数跳过有问题的软件包:yum update --skip-broken

确保所有仓库都已正确配置并启用:
  1. yum repolist
复制代码

尝试清理yum缓存并重新生成:
  1. yum clean all
  2. yum update
复制代码

如果依赖关系仍然无法解决,可能需要手动查找并安装所需的依赖包,或者考虑使用--skip-broken参数跳过有问题的软件包:
  1. yum update --skip-broken
复制代码

4.2 网络连接问题

如果yum无法连接到仓库,可能会出现以下错误:
  1. Could not resolve host: mirrorlist.centos.org
复制代码

解决方法:

1. 检查网络连接:ping mirrorlist.centos.org
2. 检查DNS配置:cat /etc/resolv.conf
3. 检查代理设置(如果使用代理):echo $http_proxy
echo $https_proxy
4. 尝试使用不同的镜像或仓库:yum --disablerepo=* --enablerepo=base update

检查网络连接:
  1. ping mirrorlist.centos.org
复制代码

检查DNS配置:
  1. cat /etc/resolv.conf
复制代码

检查代理设置(如果使用代理):
  1. echo $http_proxy
  2. echo $https_proxy
复制代码

尝试使用不同的镜像或仓库:
  1. yum --disablerepo=* --enablerepo=base update
复制代码

4.3 GPG密钥问题

当安装软件包时,可能会遇到GPG密钥相关的错误:
  1. warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID keyid: NOKEY
  2. Public key for package-name is not installed
复制代码

解决方法:

1. 导入正确的GPG密钥:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
2. 如果信任该软件包,可以临时禁用GPG检查:yum install --nogpgcheck 软件包名称
3. 如果是第三方仓库,需要导入该仓库的GPG密钥:rpm --import https://www.example.com/RPM-GPG-KEY-example

导入正确的GPG密钥:
  1. rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
复制代码

如果信任该软件包,可以临时禁用GPG检查:
  1. yum install --nogpgcheck 软件包名称
复制代码

如果是第三方仓库,需要导入该仓库的GPG密钥:
  1. rpm --import https://www.example.com/RPM-GPG-KEY-example
复制代码

4.4 仓库配置问题

如果仓库配置错误,可能会导致以下问题:
  1. Cannot retrieve repository metadata (repomd.xml) for repository: repository-name
复制代码

解决方法:

1. 检查仓库配置文件:cat /etc/yum.repos.d/repository-name.repo
2. 确保baseurl正确且可访问:curl http://example.com/repo/repodata/repomd.xml
3. 检查仓库是否适用于当前系统版本:cat /etc/centos-release
4. 如果仓库不再需要,可以禁用或删除它:yum-config-manager --disable repository-name

检查仓库配置文件:
  1. cat /etc/yum.repos.d/repository-name.repo
复制代码

确保baseurl正确且可访问:
  1. curl http://example.com/repo/repodata/repomd.xml
复制代码

检查仓库是否适用于当前系统版本:
  1. cat /etc/centos-release
复制代码

如果仓库不再需要,可以禁用或删除它:
  1. yum-config-manager --disable repository-name
复制代码

4.5 磁盘空间不足

在安装或更新软件包时,可能会遇到磁盘空间不足的问题:
  1. Not enough disk space for repair
复制代码

解决方法:

1. 检查磁盘空间使用情况:df -h
2. 清理yum缓存:yum clean all
3. 删除不需要的软件包:package-cleanup --leaves
package-cleanup --oldkernels
4. 清理日志文件:find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
5. 扩展磁盘空间(如果可能)。

检查磁盘空间使用情况:
  1. df -h
复制代码

清理yum缓存:
  1. yum clean all
复制代码

删除不需要的软件包:
  1. package-cleanup --leaves
  2. package-cleanup --oldkernels
复制代码

清理日志文件:
  1. find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
复制代码

扩展磁盘空间(如果可能)。

5. 实际案例演示

5.1 安装LAMP环境

LAMP(Linux, Apache, MySQL, PHP)是一种流行的Web开发环境。使用yum安装LAMP环境非常简单:

1. 安装Apache Web服务器:yum install httpd
2. 启动Apache并设置为开机自启:systemctl start httpd
systemctl enable httpd
3. 安装MariaDB(MySQL的分支):yum install mariadb-server mariadb
4. 启动MariaDB并设置为开机自启:systemctl start mariadb
systemctl enable mariadb
5. 运行MariaDB安全安装脚本:mysql_secure_installation
6. 安装PHP及相关模块:yum install php php-mysql php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel
7. 重启Apache以加载PHP模块:systemctl restart httpd
8. 创建一个PHP测试文件:echo "<?php phpinfo(); ?>" > /var/www/html/info.php
9. 在浏览器中访问http://服务器IP地址/info.php,如果看到PHP信息页面,说明LAMP环境安装成功。

安装Apache Web服务器:
  1. yum install httpd
复制代码

启动Apache并设置为开机自启:
  1. systemctl start httpd
  2. systemctl enable httpd
复制代码

安装MariaDB(MySQL的分支):
  1. yum install mariadb-server mariadb
复制代码

启动MariaDB并设置为开机自启:
  1. systemctl start mariadb
  2. systemctl enable mariadb
复制代码

运行MariaDB安全安装脚本:
  1. mysql_secure_installation
复制代码

安装PHP及相关模块:
  1. yum install php php-mysql php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel
复制代码

重启Apache以加载PHP模块:
  1. systemctl restart httpd
复制代码

创建一个PHP测试文件:
  1. echo "<?php phpinfo(); ?>" > /var/www/html/info.php
复制代码

在浏览器中访问http://服务器IP地址/info.php,如果看到PHP信息页面,说明LAMP环境安装成功。

5.2 安装开发工具

开发人员通常需要安装一系列开发工具,可以使用yum组安装功能一次性安装:

1. 查看可用的开发工具组:yum grouplist | grep -i development
2. 安装”Development Tools”组:yum groupinstall "Development Tools"
3. 安装其他常用的开发库和工具:yum install git wget curl nano vim openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
4. 验证开发工具是否安装成功:gcc --version
make --version
git --version

查看可用的开发工具组:
  1. yum grouplist | grep -i development
复制代码

安装”Development Tools”组:
  1. yum groupinstall "Development Tools"
复制代码

安装其他常用的开发库和工具:
  1. yum install git wget curl nano vim openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
复制代码

验证开发工具是否安装成功:
  1. gcc --version
  2. make --version
  3. git --version
复制代码

5.3 系统更新维护

定期更新系统是保持系统安全和稳定的重要措施:

1. 检查可用的更新:yum check-update
2. 只显示安全更新:yum list-security
3. 安装所有安全更新:yum update --security
4. 安装所有更新:yum update
5. 查看更新历史:yum history list all
6. 如果更新后出现问题,可以回滚到之前的状态:yum history undo 事务ID
7. 设置自动更新(可选):yum install yum-cron
systemctl enable yum-cron
systemctl start yum-cron

检查可用的更新:
  1. yum check-update
复制代码

只显示安全更新:
  1. yum list-security
复制代码

安装所有安全更新:
  1. yum update --security
复制代码

安装所有更新:
  1. yum update
复制代码

查看更新历史:
  1. yum history list all
复制代码

如果更新后出现问题,可以回滚到之前的状态:
  1. yum history undo 事务ID
复制代码

设置自动更新(可选):
  1. yum install yum-cron
  2. systemctl enable yum-cron
  3. systemctl start yum-cron
复制代码

然后编辑/etc/yum/yum-cron.conf文件,根据需要配置自动更新选项。

5.4 管理第三方软件

有时需要安装不在默认仓库中的软件,例如Nginx:

1. 添加EPEL仓库(如果尚未添加):yum install epel-release
2. 添加Nginx官方仓库:rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
3. 安装Nginx:yum install nginx
4. 启动Nginx并设置为开机自启:systemctl start nginx
systemctl enable nginx
5.
  1. 验证Nginx是否正常运行:systemctl status nginx
  2. curl http://localhost
复制代码

添加EPEL仓库(如果尚未添加):
  1. yum install epel-release
复制代码

添加Nginx官方仓库:
  1. rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
复制代码

安装Nginx:
  1. yum install nginx
复制代码

启动Nginx并设置为开机自启:
  1. systemctl start nginx
  2. systemctl enable nginx
复制代码

验证Nginx是否正常运行:
  1. systemctl status nginx
  2. curl http://localhost
复制代码

6. 总结

yum是CentOS系统中强大而灵活的软件包管理工具,通过掌握本文介绍的基本命令和高级技巧,你可以轻松管理系统中的软件包。主要要点包括:

1. 使用yum install、yum remove和yum update来管理软件包。
2. 利用yum search和yum info来搜索和查看软件包信息。
3. 通过配置和管理yum仓库来扩展可用的软件包。
4. 使用组安装功能一次性安装多个相关软件包。
5. 利用历史记录功能查看和回滚软件包变更。
6. 了解并解决常见的yum问题,如依赖关系、网络连接和GPG密钥问题。
7. 通过实际案例掌握yum在不同场景下的应用。

通过熟练运用这些技巧,你可以更加高效地管理CentOS系统中的软件包,提高工作效率并确保系统的稳定性和安全性。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则