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):

phpprojectfromLinux收集办事之安排YUM仓库 Java

基于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:自定义变量

2.2 yum仓库配置文件2.2.1 仓库配置文件解释

位置:/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_643 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测试是否成功

4.2 搭建阿里云仓库(http办法外网环境)

默认的仓库文件是国外云仓库,速率比较慢,可以利用阿里云仓库代替。

操作步骤:

步骤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