YUM简介
CentOS使用yum和dnf 解决rpm的包依赖关系。
YUM:rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具,CentOS 8 使用dnf代替了yum,不过保留了和yum的兼容性,配置也是通用的。
YUM 的前身是 YUP(Yellow dog Updater,Yellow dog Linux 的软件更新器),最初由 TSS 公司(Terra Soft Solutions,INC.)使用 Python 语言开发而成,后来由杜克大学(Duck University)的 Linux 开发队伍进行改进,命名为 YUM(Yellow dog Updater,Modified)。 要成功使用 YUM 机制来更新系统和软件,需要有一个包含各种 rpm 安装包文件及其依 赖软件的软件仓库(repository),提供软件仓库的服务器也称为“源”服务器。在客户机中只 要正确指定软件仓库的地址等信息,就可以通过对应的“源”服务器来安装或更新软件。
YUM:
- 基于RPM包构建的软件更新机制
- 可以自动解决依赖关系
- 所有软件包由集中到YUM软件仓库提供
工作原理
基于C/S模式:
- yum 服务器存放rpm包和相关包的元数据
- yum客户端访问yum服务器进行安装或查询等
实现过程:
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
服务器:
- RPM包
- 元数据
[root@localhost ~]# mount /dev/sr0 /mnt //将光盘挂载到/mnt/目录下
mount: /dev/sr0 写保护,将以只读方式挂载
本地仓库类型:
- 光盘的仓库(基本仓库)
- epel 扩展仓库
如何安装服务
yum客户端配置
/etc/yum.conf #为所有仓库提供公共配置
/etc/yum.repos.d/*.repo #每个仓库的配置文件
yum主配置文件
文件位置:/etc/yum.conf
[root@localhost ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
# This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
# It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
yum仓库配置文件
2.2.1 仓库配置文件说明
文件位置:/etc/yum.repos.d/*.repo
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@localhost yum.repos.d]# vim yum.repo //yum仓库配置文件格式
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
日志文件
文件位置:/var/log/yum.log
[root@localhost yum.repos.d]# head -5 /var/log/yum.log
Sep 21 08:42:17 Installed: tree-1.6.0-10.el7.x86_64
yum命令详解
| 命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
|---|---|---|
| yum list | 显示所有可用包 | 单个的可安装包 |
| yum info | 显示所有可用包的信息 | 单个具体的信息 |
| yum search | \ | 模糊查找所有的相关信息 |
| yum whatprovides | \ | 精确查找 |
| yum grouplist | 显示所有可用包组 | 显示具体的包组 |
| yum groupinfo | 显示所有的包组具体信息 | 显示具体的包组的具体信息 |
| yum install | \ | 安装具体软件包 |
| yum groupinstall | \ | 安装具体软件包组 |
| yum update | 所有软件升级 | 具体软件升级 |
| 命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
|---|---|---|
| yum group update | 所有包组升级 | 具体包组升级 |
| yum remove | \ | 卸载具体软件 |
| yum groupremove | \ | 卸载具体包组软件 |
| yum history | 查看当前yum操作历史 | \ |
| yum history undo | 加入序号卸载序号里安装的软件 | \ |
| yum history redo | 加入序号重新执行序号里的操作 | \ |
查询
##### yum list [软件名]
[root@localhost ~]# yum list httpd
已加载插件:fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Determining fastest mirrors
* base: mirrors.ustc.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
可安装的软件包
httpd.x86_64 2.4.6-97.el7.centos.5 updates
显示安装包详情
[root@localhost ~]# yum info httpd
已加载插件:fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
* base: mirrors.ustc.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
可安装的软件包
名称 :httpd
架构 :x86_64
版本 :2.4.6
发布 :97.el7.centos.5
大小 :2.7 M
源 :updates/7/x86_64
简介 : Apache HTTP Server
网址 :http://httpd.apache.org/
协议 : ASL 2.0
描述 : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
yum仓库搭建
搭建本地yum仓库
1.挂载
[root@localhost ~]# mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# df -Th //查看下挂载
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 37G 7.5G 30G 21% /
devtmpfs devtmpfs 977M 0 977M 0% /dev
tmpfs tmpfs 993M 0 993M 0% /dev/shm
tmpfs tmpfs 993M 9.1M 984M 1% /run
tmpfs tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 161M 854M 16% /boot
tmpfs tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs tmpfs 199M 52K 199M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /mnt
mount命令是一次性挂载,退出当前终端或重启后就不存在了。永久挂载需要修改配置文件/etc/fstab
2.移走自带的仓库文件
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo
CentOS-Vault.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv *.repo bak/
[root@localhost yum.repos.d]# ls
bak
3.新建yum仓库文件
[root@localhost yum.repos.d]# vim yum.repo //yum仓库配置文件格式
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
4.清理缓存并安装文件
[root@localhost yum.repos.d]# yum clean all //清理yum缓存
[root@localhost yum.repos.d]# yum makecache //重新建立元数据
[root@localhost yum.repos.d]# yum list //查看可安装的软件列表
[root@localhost yum.repos.d]# yum install dhcp -y //yum安装dhcp测试是否成功
http搭建云仓库
1.安装服务端的httpd程序
[root@localhost ~]# yum install httpd -y
2.切换至/var/www/html/ 目录,新建子目录centos7,并将光驱挂载到centos7目录下
[root@localhost ~]# cd /var/www/html //切换目录
[root@localhost html]# mkdir centos7 //新建目录centos7
[root@localhost html]# mount /dev/sr0 ./centos7 //将光驱挂载到centos7目录下
mount: /dev/sr0 写保护,将以只读方式挂载
3.关闭防火墙和selinux,启动httpd服务
[root@localhost html]# systemctl stop firewalld
[root@localhost html]# setenforce 0
setenforce: SELinux is disabled
[root@localhost html]# systemctl start httpd
4.客户端切换到/etc/yum.repos.d/目录,新建文件夹,将默认的yum仓库文件移动到该目录下。编写新的仓库文件
[root@localhost ~]# cd /etc/yum.repos.d //客户端切换目录
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@localhost yum.repos.d]# mkdir bak //新建文件夹
[root@localhost yum.repos.d]# mv *.repo bak //将默认的仓库文件移动到该文件夹下
[root@localhost yum.repos.d]# ls
bak
[root@localhost yum.repos.d]# vim http.repo //编写新的仓库文件
[http]
name=http
baseurl=http://192.168.10.90/centos7
gpgcheck=0
5.清理yum缓存,重新建立元数据。并测试使用yum能否成功安装软件包
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum install tree -y