Linux网络服务之YUM仓库

109 阅读6分钟

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中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。

image-20220320175916048.png

服务器:

  • RPM包
  • 元数据
[root@localhost ~]# mount /dev/sr0 /mnt   //将光盘挂载到/mnt/目录下  
mount: /dev/sr0 写保护,将以只读方式挂载

本地仓库类型:

  • 光盘的仓库(基本仓库)
  • epel 扩展仓库

如何安装服务

image-20220320204127781.png

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 写保护,将以只读方式挂载

image.png

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

image.png

5.清理yum缓存,重新建立元数据。并测试使用yum能否成功安装软件包

 [root@localhost yum.repos.d]# yum clean all
 [root@localhost yum.repos.d]# yum install tree -y

image.png