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(Yellow dog Updater,Modified):
基于RPM包构建的软件更新机制可以自动办理依赖关系所有软件包由集中到YUM软件仓库供应1.2 yum事情事理
yum依赖于环境,依赖于做事端和客户端,许可跨网络。
Yum基于C/S模式:
yum 做事器存放rpm包和干系包的元数据yum客户端访问yum做事器进行安装或查询等Yum实现过程:
先在yum做事器上创建 yum repository(仓库),在仓库中事先存储了浩瀚rpm包,以及包的干系的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在干系的包及依赖关系,自动从仓库中找到干系包下载并安装。
做事器(RPM包和元数据缺一不可):
RPM包 (存放在包文件夹Packages中)元数据(存放在元数据文件夹repodata中,个中包含:目录(软件的目录),软件的依赖关系,软件的分组) #查看光盘中自带的Yum仓库,可以看到Packages文件夹和repodata文件夹: [root@localhost ~]# mount /dev/sr0 /mnt //将光盘挂载到/mnt/目录下 mount: /dev/sr0 写保护,将以只读办法挂载 [root@localhost ~]# ls /mnt //查看光盘内的包文件夹和元数据文件夹 CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL
本地仓库类型:
光盘的仓库(基本仓库)epel 扩展仓库1.3 如何实现安装做事2 yum客户端配置yum客户端配置文件
/etc/yum.conf #为所有仓库供应公共配置 /etc/yum.repos.d/.repo #每个仓库的配置文件
2.1 yum主配置文件
位置:/etc/yum.conf
[root@localhost ~]# vim /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever //yum下载的RPM包的缓存目录, $basearch代表硬件架构,$releasever系统版本比如7 keepcache=0 //是否保存缓存 0代表不保存,1代表保存 debuglevel=2 //调试级别(0-10),默认为2 logfile=/var/log/yum.log //日志文件位置 exactarch=1 //是否许可不同版本的rpm安装 obsoletes=1 //这是一个update的参数,是否许可旧版本的运行 gpgcheck=1 //是否验证GPG(GNU Private Guard)密钥,1表示验证 plugins=1 //是否许可插件,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 # yum的repo配置文件中可用的变量: $releasever: 当前OS的发行版的主版本号,如:8,7,6 $arch: CPU架构,如:aarch64, i586, i686,x86_64等 $basearch:系统根本平台;i386, x86_64 $contentdir:表示目录,比如:centos-8,centos-7 $YUM0-$YUM9:自定义变量
位置:/etc/yum.repos.d/.repo
系统内默认的yum仓库,是centos官方的yum源(国外源),须要连通外网才可以利用。
[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 yuji.repo //yum仓库配置文件格式 [yuji] name=yuji #设置名称 baseurl=file:///mnt #设置链接地址,file://是本地源的固定格式 enabled=1 #开启此yum源 gpgcheck=0 #是否验证公钥,0表示无需验证
yum仓库配置文件中baseurl的几种形式:
# 本地源 本地目录 file:// # 网络源 FTP做事 ftp:// HTTP做事 http:// 外网环境 https://
2.2.2 baseurl 指向的路径
CentOS系统的yum源
#阿里云 https://mirrors.aliyun.com/centos/$releasever/
EPEL的yum源
#阿里云 https://mirrors.aliyun.com/epel/$releasever/x86_64
更新源
http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
2.3 日志文件
位置:/var/log/yum.log
[root@localhost yum.repos.d]# head -5 /var/log/yum.log //查看日志文件 Jan 19 10:55:29 Installed: tree-1.6.0-10.el7.x86_64 Feb 21 23:21:53 Installed: finger-0.17-52.el7.x86_64 Mar 19 17:10:29 Updated: 32:bind-license-9.11.4-26.P2.el7_9.9.noarch Mar 19 17:10:30 Updated: 32:bind-libs-lite-9.11.4-26.P2.el7_9.9.x86_64 Mar 19 17:10:30 Updated: 32:bind-libs-9.11.4-26.P2.el7_9.9.x86_64
3 yum命令详解
命令
不加关键字
加入关键词、软件包、软件包组
yum list
显示所有可用包
单个的可安装包
yum info
显示所有可用包的信息
单个详细的信息
yum search
\
模糊查找所有的干系信息
yum whatprovides
\
精确查找
yum install
\
安装详细软件包
yum update
所有软件升级,更新内核
详细软件升级
yum upgrade
只更新软件包,但不更新内核
详细软件更新
yum remove
\
卸载详细软件
yum history
查看当前yum操作历史
\
yum history info
\
加序号列出某次事务的详细信息
yum history undo
\
加序号卸载序号里安装的软件
yum history redo
\
加序号重新实行序号里的操作
包组:
命令
不加关键字
加入关键词、软件包、软件包组
yum grouplist
显示所有可用包组
显示详细的包组
yum groupinfo
显示所有的包组详细信息
显示详细的包组的详细信息
yum groupinstall
\
安装详细软件包组
yum group update
所有包组升级
详细包组升级
yum groupremove
\
卸载详细包组软件
小贴士:
当利用 “yum remove 软件名” 未将软件包卸载干净时,可以利用“yum history undo 序号”进行卸载,可以完全卸载全体软件包,没有残留。
4 yum仓库搭建办法软件仓库的供应办法:
本地目录:file://绝对路径FTP做事:ftp://ip地址/站点里的路径HTTP做事:http://域名或者ip地址/站点里的路径4.1 搭建本地yum仓库搭建步骤:
步骤1、挂载光盘(/dev/sr0或/dev/cdrom都可以,/dev/cdrom是/dev/sr0的软链接)
[root@localhost ~]# mount /dev/sr0 /mnt //将光盘挂载到/mnt目录下 mount: /dev/sr0 写保护,将以只读办法挂载 [root@localhost ~]# df -Th //查看挂载是否成功 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 10G 4.0G 6.1G 40% / devtmpfs devtmpfs 897M 0 897M 0% /dev tmpfs tmpfs 912M 0 912M 0% /dev/shm tmpfs tmpfs 912M 9.1M 903M 1% /run tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sdb5 xfs 2.0G 33M 2.0G 2% /data/bb /dev/sda1 xfs 1014M 179M 836M 18% /boot /dev/sdb1 xfs 10G 33M 10G 1% /data/aa /dev/mapper/vg01-lvmail xfs 13G 33M 13G 1% /data/mail tmpfs tmpfs 183M 12K 183M 1% /run/user/42 tmpfs tmpfs 183M 0 183M 0% /run/user/0 /dev/sr0 iso9660 4.3G 4.3G 0 100% /mnt
把稳:mount命令是一次性挂载,退出当前终端或重启后就不存在了。永久挂载须要修正配置文件/etc/fstab。
步骤2、切换到 /etc/yum.repo.d/目录,将自带的仓库文件移走。
[root@localhost ~]# cd /etc/yum.repos.d/ //切换至/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 aaa //创建一个名为aaa的新目录 [root@localhost yum.repos.d]# mv .repo aaa //将yum仓库中以.repo结尾的文件移动到aaa中 [root@localhost yum.repos.d]# ls aaa
步骤3、新建yum仓库文件。
[root@localhost yum.repos.d]# vim yuji.repo //新建yum仓库文件 [yuji] name=yuji #设置名称 baseurl=file:///mnt #设置链接地址,file://是固定格式,指向/mnt enabled=1 #开启此yum源 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测试是否成功
默认的仓库文件是国外云仓库,速率比较慢,可以利用阿里云仓库代替。
操作步骤:
步骤1、切换到 /etc/yum.repo.d/目录,将自带的仓库文件移走。
[root@localhost ~]# cd /etc/yum.repos.d/ //切换至/etc/yum.repos.d/目录 [root@localhost yum.repos.d]# mkdir aaa [root@localhost yum.repos.d]# mv .repo aaa //将yum仓库中以.repo结尾的文件移动到aaa中 [root@localhost yum.repos.d]# ls aaa
步骤2、新建阿里云仓库。
[root@localhost yum.repos.d]# vim ali.repo [ali] name=aliyun #baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/ //开启哪个版本都可以正常利用,这边紧张阐明变量的浸染 baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck=0 [epel] //epel源仓库 name=epel baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/ gpgcheck=0 [update] //更新包仓库 name=update baseurl=https://mirrors.aliyun.com/centos/7/updates/x86_64/ gpgcheck=0
步骤3、清理缓存并安装软件。
[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 tree -y //yum安装tree测试是否成功
4.3 http办法搭建云仓库
http办法搭建云仓库,在外网和内网的环境下都可以利用,但多用于内网。
做事端:192.168.72.10
客户端:192.168.72.129
搭建步骤:
步骤1、做事端安装hhtpd做事程序。
[root@localhost ~]# yum install httpd -y
步骤2、做事端切换到/var/www/html/ 目录,新建子目录centos7,并将光驱挂载到centos7目录下(也可以将光驱中的所有软件包拷贝到该目录下)。
[root@localhost ~]# cd /var/www/html //切换目录 [root@localhost html]# ls [root@localhost html]# mkdir centos7 //新建目录centos7 [root@localhost html]# mount /dev/sr0 ./centos7 //将光驱挂载到centos7目录下 mount: /dev/sr0 写保护,将以只读办法挂载 [root@localhost html]# ls ./centos7 CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL
步骤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@192 ~]# cd /etc/yum.repos.d //客户端切换目录 [root@192 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@192 yum.repos.d]# mkdir bak //新建文件夹 [root@192 yum.repos.d]# mv .repo bak //将默认的仓库文件移动到该文件夹下 [root@192 yum.repos.d]# ls bak [root@192 yum.repos.d]# vim http.repo //编写新的仓库文件 [http] name=http baseurl=http://192.168.72.10/centos7 enabled=1 gpgcheck=0
步骤5、清理yum缓存,重新建立元数据。并测试利用yum能否成功安装软件包。
[root@192 yum.repos.d]# yum clean all && yum makecache 已加载插件:fastestmirror, langpacks 正在清理软件源: ftp Cleaning up everything Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos Cleaning up list of fastest mirrors 已加载插件:fastestmirror, langpacks ftp | 3.6 kB 00:00:00 (1/4): ftp/group_gz | 156 kB 00:00:00 (2/4): ftp/primary_db | 3.1 MB 00:00:00 (3/4): ftp/other_db | 1.2 MB 00:00:00 (4/4): ftp/filelists_db | 3.1 MB 00:00:00 Determining fastest mirrors 元数据缓存已建立 [root@192 yum.repos.d]# yum install ftp -y //测试yum安装,可以成功安装。
4.4 ftp办法搭建云仓库
ftp办法搭建云仓库,在外网和内网的环境下都可以利用,但多用于内网。
做事端:192.168.72.10
客户端:192.168.72.129
搭建步骤:
步骤1、做事端安装vsftpd做事程序。
[root@localhost html]# yum install vsftpd -y
步骤2、做事端切换到 /var/ftp/ 目录下新建一个子目录centos,并将光驱挂载到centos目录下(也可以将光驱内的所有文件包复制到centos目录下)。
[root@localhost html]# cd /var/ftp //切换到/ftp/var/目录 [root@localhost ftp]# ls pub [root@localhost ftp]# mkdir centos //创建centos目录 [root@localhost ftp]# [root@localhost ftp]# mount /dev/sr0 ./centos //将光驱挂载到centos目录下 mount: /dev/sr0 写保护,将以只读办法挂载 [root@localhost ftp]# ls ./centos CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL
步骤3、做事端开启vsftpd做事,关闭防火墙和selinux。
[root@localhost ~]# systemctl start vsftpd [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0
步骤4、客户端安装ftp程序,测试ftp做事是否正常。
[root@192 ~]# yum install ftp -y //安装ftp程序 [root@192 ~]# ftp 192.168.72.10 //测试ftp做事能否正常访问做事端 Connected to 192.168.72.10 (192.168.72.10). 220 (vsFTPd 3.0.2) Name (192.168.72.10:root): ftp 331 Please specify the password. Password: 230 Login successful. //可以正常访问 Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (192,168,72,10,85,22). 150 Here comes the directory listing. drwxr-xr-x 8 0 0 2048 Sep 05 2017 centos drwxr-xr-x 2 0 0 6 Jun 09 2021 pub 226 Directory send OK. ftp> bye 221 Goodbye.
步骤5、客户端编写yum仓库文件。
[root@192 ~]# cd /etc/yum.repos.d //切换目录 [root@192 yum.repos.d]# ls bak2 CentOS-Debuginfo.repo CentOS-Sources.repo CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo CentOS-CR.repo CentOS-Media.repo [root@192 yum.repos.d]# mkdir bak1 //新建文件夹 [root@192 yum.repos.d]# mv .repo bak1 //将默认的仓库文件移动到该目录下 [root@192 yum.repos.d]# ls bak1 bak2 [root@192 yum.repos.d]# vim ftp.repo //编写新的仓库文件 [ftp] name=ftp baseurl=ftp://192.168.72.10/centos //路径指向做事真个/var/ftp/centos/目录 enabled=1 gpgcheck=0
步骤6、清理yum缓存,重新建立元数据。并测试利用yum能否成功安装软件包。
[root@192 yum.repos.d]# yum clean all && yum makecache 已加载插件:fastestmirror, langpacks 正在清理软件源: ftp Cleaning up everything Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos Cleaning up list of fastest mirrors 已加载插件:fastestmirror, langpacks ftp | 3.6 kB 00:00:00 (1/4): ftp/group_gz | 156 kB 00:00:00 (2/4): ftp/primary_db | 3.1 MB 00:00:00 (3/4): ftp/other_db | 1.2 MB 00:00:00 (4/4): ftp/filelists_db | 3.1 MB 00:00:00 Determining fastest mirrors 元数据缓存已建立 [root@192 yum.repos.d]# yum install httpd -y //测试yum安装,可以成功安装。
4.5 搭建本地epel源仓库
本地epel源仓库的运用处景:
在可以连外网的情形下,可以利用国外源或阿里云仓库等。但实际事情中,公司内网常常无法连接外网,这时可以提前搭建本地epel源仓库,即在一台可连通外网的做事器中提前下载好epel源的所有软件包,编写好仓库文件后,在离线的情形下也可以利用yum安装软件包。之后其他主机可以通过http办法或ftp办法利用做事真个epel源仓库。操作步骤:
步骤1、安装epel源,并下载epel源的所有软件包。
[root@localhost ~]# yum install epel-release //安装epel源 [root@localhost ~]# mkdir centos7 //新建centos7目录 [root@localhost ~]# reposync -r epel -p /centos7/ & //下载同步epel源软件包,下载到/centos7/目录下,&表示放到后台下载 [root@localhost ~]# ls /centos7 epel
步骤2、安装createrepo命令(建立元数据的命令),之后利用createrepo命令建立元数据。
[root@localhost ~]# yum -y install createrepo //安装createrepo命令 [root@localhost ~]# createrepo -v /centos7/epel //建立元数据(软件目录、依赖关系) [root@localhost ~]# cd /centos7/epel //切换到centos7/epel 目录下 [root@localhost epel]# ls //查看软件包和元数据 Packages repodata
步骤3、切换到/etc/yum.repos.d目录,移走默认仓库文件,编写新的仓库文件。
[root@localhost ~]# cd /etc/yum.repos.d/ //切换至/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 aaa //创建一个名为aaa的新目录 [root@localhost yum.repos.d]# mv .repo aaa //将yum仓库中以.repo结尾的文件移动到aaa中 [root@localhost yum.repos.d]# ls aaa [root@localhost yum.repos.d]# vim epellocal.repo //新建yum仓库文件 [epellocal] name=epellocal #设置名称 baseurl=file:///centos7/epel #设置链接地址,路径指向/centos7/epel目录 enabled=1 #开启此yum源 gpgcheck=0 #无需验证公钥
其他主机如果想利用这台机器中的epel仓库,可以在本地利用http或ftp办法搭建:
baseurl=http://192.168.72.10/centos7/epel //http办法 baseurl=ftp://192.168.72.10/centos7/epel //ftp办法
5 小贴士5.1 利用命令办法天生仓库文件
以上四种办法都是都是通过手动编写yum仓库文件来配置,也可以直接通过命令来搭建。
命令的办法配置事理和上面的文件配置事理一样,都是写入/etc/yum.repos.d中,只是命令行是自动天生仓库文件 。
1、外网环境搭建
命令格式:
wget -O /etc/yum.repos.d/name.repo(自定义以repo结尾的文件名) 源路径
wget 命令配置阿里云仓库:
wget -O /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2、内网环境搭建
命令格式:
yum-config-manager --add-repo=file:// yum-config-manager --add-repo=ftp://
示例:
yum-config-manager --add-repo=file:///mnt //利用本地源 yum-config-manager --add-repo=ftp://192.168.72.10/centos7 //ftp办法搭建
5.2 下载依赖包到本地(但不安装)
当内网的一台主机安装某个软件包却短缺依赖包时,可以先由一台可连接外网的做事器下载依赖包,之后共享给这台主机。
这时可以利用“yum install --downloadonly”命令,该命令可以仅下载所需软件及其依赖包、而不安装软件,大大减少了无外网安装时找依赖包的问题。命令格式如下:
yum install --downloadonly +软件名称 --downloaddir=指定rpm包存放路径
例如,下载nginx所须要的依赖包到/mnt/nginx目录内:
yum install nginx --downloadonly --downloaddir=/mnt/nginx
本文转自:https://juejin.cn/post/7078172295302217735