Linux网络——Yum仓库

一、 yum简介

1. yum概述

Yum (Yellow dog Updater, Modified) 是一个基于rpm包构建的软件更新机制,能够自动解决软件包之间的依赖关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。节省了日常工作中的大量查找安装依赖包的时间。

2. yum工作原理

yum依赖于环境,依赖于服务端和客户端,允许跨网络。

Yum实现过程:

先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。

.

3. 实现安装服务

.

二、 yum配置文件

1. 主配置文件

主配置文件位置: /etc/yum.conf

js 复制代码
[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密钥,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. 仓库配置文件

yum仓库配置文件位置:/etc/yum.repos.d/*.repo

Yum客户端配置文件通常位于 /etc/yum.repos.d/ 目录中,文件扩展名为 .repo 。这些文件定义了Yum如何连接到软件仓库并下载软件包。

js 复制代码
系统内默认的yum仓库,是centos官方的yum源(国外源),需要连通外网才可以使用。
[root@localhost ~]#  ls /etc/yum.repos.d
CentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Sources.repo  CentOS-Vault.repo

yum仓库配置文件格式:

js 复制代码
客户端配置文件两个要求 : 
①必须在 /etc/yum.repos.d/ 这个目录下
②配置文件必须以 *.repo 结尾

[root@localhost yum.repos.d]# vim lkk.repo    
 [lkk]                       //仓库的描述
 name=lkk                    //设置名称
 baseurl=file:///mnt        //设置链接地址,file://是本地源的固定格式
 gpgcheck=0                  //是否验证公钥,0表示无需验证 
 enabled=1                   //开启此yum源
 
yum仓库配置文件中baseurl的几种形式:
1. 本地源 : 本地目录   file://        
2. FTP源 : FTP服务    ftp://
3. 网络源 : http://  或  https://

3. 日志文件

日志文件位置: /var/log/yum.log

三、 yum命令

命令 不加关键字 加入关键词、软件包、软件包组
yum list 显示所有可用包 单个的可安装包
yum info 显示所有可用包的信息 单个具体的信息
yum search \ 模糊查找所有的相关信息
yum provides \ 精确查找
yum install \ 安装具体软件包
yum update 所有软件升级 , 需要有更新源 具体软件升级
yum remove \ 卸载具体软件
yum history 查看当前yum操作历史 \
yum history undo 加入序号卸载序号里安装的软件 \
yum history redo 加入序号重新执行序号里的操作 \
yum grouplist 显示所有可用包组 显示具体的包组
yum groupinfo 显示所有的包组具体信息 显示具体的包组的具体信息
yum groupinstall \ 安装具体软件包组
yum groupupdate 所有包组升级 具体包组升级
yum groupremove \ 卸载具体包组软件

1. 查询

1.1 yum list [软件名]

显示可用的安装包,如不加软件名是显示所有的可用包。

js 复制代码
[root@localhost ~]#  yum list                 //显示所有可用的安装包

[root@localhost ~]#  yum list |grep httpd     //显示包含httpd的可用软件包
httpd.x86_64                                2.4.6-99.el7.centos.1      updates  
httpd-devel.x86_64                          2.4.6-99.el7.centos.1      updates  
httpd-manual.noarch                         2.4.6-99.el7.centos.1      updates  
httpd-tools.x86_64                          2.4.6-99.el7.centos.1      updates  
keycloak-httpd-client-install.noarch        0.8-1.el7                  base     
libmicrohttpd.i686                          0.9.33-2.el7               base     
libmicrohttpd.x86_64                        0.9.33-2.el7               base     
libmicrohttpd-devel.i686                    0.9.33-2.el7               base     
libmicrohttpd-devel.x86_64                  0.9.33-2.el7               base     
libmicrohttpd-doc.noarch                    0.9.33-2.el7               base     
python2-keycloak-httpd-client-install.noarch

1.2 yum info [软件名]

显示安装包详细信息,如不加软件名是显示所有包的详细信息。

js 复制代码
[root@localhost ~]#  yum info         //显示所有安装包的详细信息

[root@localhost ~]#  yum info httpd   //显示安装包httpd的详细信息
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.nju.edu.cn
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.ustc.edu.cn
可安装的软件包
名称    :httpd
架构    :x86_64
版本    :2.4.6
发布    :99.el7.centos.1
大小    :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.

根据关键字查找软件安装包的名字,相当于你只知道这个包里的某个关键字会全部给你匹配出来。(模糊查询)

js 复制代码
[root@localhost ~]#  yum search ftp     //查找包含ftp关键字的安装包
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.nju.edu.cn
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.ustc.edu.cn
========================================================================== N/S matched: ftp ==========================================================================
ftp.x86_64 : The standard UNIX FTP (File Transfer Protocol) client
lftp-scripts.noarch : Scripts for lftp
syslinux-tftpboot.noarch : SYSLINUX modules in /var/lib/tftpboot, available for network booting
tftp.x86_64 : The client for the Trivial File Transfer Protocol (TFTP)
tftp-server.x86_64 : The server for the Trivial File Transfer Protocol (TFTP)
vsftpd.x86_64 : Very Secure Ftp Daemon
vsftpd-sysvinit.x86_64 : SysV initscript for vsftpd daemon
curl.x86_64 : A utility for getting files from remote servers (FTP, HTTP, and others)
lftp.i686 : A sophisticated file transfer program
lftp.x86_64 : A sophisticated file transfer program
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols

1.4 yum provides <关键词>

你知道某个命令却不知道具体的包可以用此命令查找。(精确查询)

js 复制代码
[root@localhost ~]#  yum provides ftp    //安装好软件后,知道软件主程序ftp,却不知道安装包的名字,可以使用此命令
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.nju.edu.cn
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.ustc.edu.cn
ftp-0.17-67.el7.x86_64 : The standard UNIX FTP (File Transfer Protocol) client
源    :base

[root@localhost ~]#yum provides  */mime.types  //找一些文件,不写路径查找不到

1.5 yum grouplist [包组名]

安装包组的查询,不加包组名就是显示所有。

1.6 yum groupinfo [包组名]

显示所有的包组具体信息,不加包组名显示全部。

2. yum安装升级

2.1 yum install [软件名]

安装软件包。

2.2 yum update [软件名]

软件升级,不加软件名就是所有软件升级,需要有更新源。

2.3 yum groupinstall <包组名>

安装包组。

2.4 yum groupupdate <包组名>

更新包组,可以单个也可以全部。后面加具体包组名称就是单个更新,不加就是全部更新。

但是首先你要有更新的包组库否则也无法更新。

3. 软件卸载

3.1 yum remove <软件名>

卸载已安装的软件必须加软件名。

3.2 yum groupremove <包组名>

卸载包组。

3.3 yum history

查看历史的使用记录。

js 复制代码
[root@localhost ~]#  yum history     //查看历史的使用记录
已加载插件:fastestmirror, langpacks
ID     | 登录用户                 | 日期和时间       | 操作           | 变更数 
-------------------------------------------------------------------------------
     5 | root <root>              | 2024-04-27 12:47 | I, U           |    5   
     4 | root <root>              | 2024-04-25 16:54 | I, U           |    5   
     3 | root <root>              | 2024-04-14 09:54 | Update         |    1   
     2 | root <root>              | 2024-04-14 09:21 | Install        |    1   
     1 | 系统 <空>                | 2024-03-27 02:20 | Install        | 1372   
history list
  • 可以使用 yum history undo 序号 进行卸载,这样对比remove好处是可以将所有的依赖都删除,完整卸载整个软件包,没有残留。

  • 如果后悔卸载可以使用 yum history redo 序号 重新安装一遍。

四、 搭建yum仓库的方式

共享软件包的两种方式:

  • 网页的方式 : HTTP服务
  • 文件传输协议实现 :FTP服务

1. http网页方式搭建云仓库

搭建步骤:

  1. 服务端安装httpd服务程序;再切换到 /var/www/html/ (存放客户访问的文件)目录,新建子目录centos7,并将光驱挂载到centos7目录下;然后启动httpd服务。
  2. 客户端切换到 /etc/yum.repos.d/ 目录,新建文件夹bak,将默认的yum仓库文件移动到该目录下,编写新的仓库文件;然后清理yum缓存,重新建立元数据。
  3. 测试使用yum能否成功安装软件包。
js 复制代码
`服务端`
[root@localhost ~]#  systemctl stop firewalld              //关闭防火墙
[root@localhost ~]#  setenforce 0                          //关闭selinux防火墙

[root@localhost ~]#  yum install httpd -y                  //安装http服务程序
[root@localhost ~]#  mkdir /var/www/html/centos7           //在/var/www/html/下建一个centos7文件夹
[root@localhost ~]#  mount /dev/sr0 /var/www/html/centos7  //挂载提供安装包和元信息
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]#  systemctl start httpd                 //开启服务


`客户端`
[root@node2 ~]#  systemctl stop firewalld              //关闭防火墙
[root@node2 ~]#  setenforce 0                          //关闭selinux防火墙

[root@node2 ~]#  cd /etc/yum.repos.d/             //切换到指定目录,写配置文件
[root@node2 yum.repos.d]#  mkdir bak              //新建文件夹
[root@node2 yum.repos.d]#  mv *.repo bak          //将默认的仓库文件移动到该文件夹下
[root@node2 yum.repos.d]#  vim httpd.repo         //编写新的仓库文件
  [httpd]
  name=http
  baseurl=http://172.16.235.55/centos7
  gpgcheck=0
[root@node2 yum.repos.d]#  yum clean all          //清除缓存
[root@node2 yum.repos.d]#  yum makecache          //下载元信息

[root@node2 yum.repos.d]# yum install tree -y     //测试能否安装成功

2. ftp方式搭建云仓库

ftp 文件共享服务器

搭建步骤:

  1. 服务端安装vsftpd服务程序;再切换到 /var/ftp/ 目录下新建一个子目录centos7,并将光驱挂载到该目录下;然后开启vsftpd服务。
  2. 客户端安装ftp程序,测试ftp服务是否正常;然后编写yum仓库文件,清理yum缓存,重新建立元数据。
  3. 测试使用yum能否成功安装软件包。
js 复制代码
`服务端`
[root@localhost ~]#  systemctl stop firewalld
[root@localhost ~]#  setenforce 0

[root@localhost ~]#  yum install vsftpd -y                //安装vsftpd服务程序
[root@localhost ~]#  cd /var/ftp                          //切换到/var/ftp/目录
[root@localhost ftp]#  mkdir centos7                      //创建centos7目录
[root@localhost ftp]#  mount /dev/sr0 /var/ftp/centos7/   //将光驱挂载到centos7目录下
[root@localhost ftp]#  systemctl start vsftpd             //开启服务


`客户端`
[root@node2 ~]#  systemctl stop firewalld
[root@node2 ~]#  setenforce 0
[root@node2 ~]#  yum install ftp -y
[root@node2 ~]#  ftp 172.16.235.55              //使用ftp测试能否正常访问服务端

[root@node2 ~]#  cd /etc/yum.repos.d/           //切换到指定目录,写配置文件
[root@node2 yum.repos.d]#  mkdir bak            //新建文件夹
[root@node2 yum.repos.d]#  mv *.repo bak        //将默认的仓库文件移动到该文件夹下
[root@node2 yum.repos.d]#  vim ftp.repo         //编写新的仓库文件
  [ftp]
  name=ftp
  baseurl=ftp://172.16.235.55/centos7
  gpgcheck=0
[root@node2 yum.repos.d]#  yum clean all          //清除缓存
[root@node2 yum.repos.d]#  yum makecache          //下载元信息 

[root@node2 yum.repos.d]# yum install tree -y     //测试能否安装成功

3. 搭建阿里云仓库 (http方式外网环境)

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

js 复制代码
1. 切换到 /etc/yum.repo.d/目录,将自带的仓库文件移走;
[root@localhost ~]# cd /etc/yum.repos.d/      //切换至/etc/yum.repos.d/目录
[root@localhost yum.repos.d]# mkdir bak       //新建bak文件夹
[root@localhost yum.repos.d]# mv *.repo bak   //将yum仓库中以.repo结尾的文件移动到bak中

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 install tree -y    //yum安装tree测试是否成功

五、工作环境

1. 自建元数据

js 复制代码
[root@localhost ~]#  mount /dev/sr0 /mnt/
[root@localhost ~]# cp  /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm   /data/
[root@localhost ~]# cd /data/
[root@localhost data]# mkdir -p  shu/package
[root@localhost data]# mv tree-1.6.0-10.el7.x86_64.rpm  shu/package/

[root@localhost data]# createrepo shu/
[root@localhost data]# cd shu/
[root@localhost shu]#  ls
package  repodata
[root@localhost shu]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]#  mkdir bak
[root@localhost yum.repos.d]#  mv *.repo bak/
[root@localhost yum.repos.d]#  vim shu.repo
  [shu]
  name=shu
  baseurl=file:///data/shu
  gpgcheck=0

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

2. 本地epel源

js 复制代码
没有外网  又想使用这个epel源      

[root@localhost ~]#yum install epel-release     //安装epel源 ,生成epel仓库文件
[root@localhost ~]# reposync -r epel -p /root/  //下载同步epel源  根据epel仓库文件去找目录

[root@localhost ~]# yum -y install createrepo   //安装建立元数据命令
[root@localhost ~]# createrepo -v /root/epel    //建立元数据  软件目录  依赖关系  
[root@localhost ~]# ls
anaconda-ks.cfg  epel
[root@localhost ~]# cd epel/
[root@localhost epel]# ls      //查看元数据


mkisofs -r -o  /root/自定义.iso  /data/centos7/epel //制作成镜像
mount -o loop  镜像文件  文件夹                      //挂载镜像到指定文件夹
相关推荐
小ᶻᶻᶻᶻ3 小时前
大数据:驱动企业变革的引擎
架构·云计算
是小赵鸭.12 小时前
云计算实训50——Kubernetes基础命令、常用指令
linux·深度学习·容器·kubernetes·云计算·学习方法
沈艺强12 小时前
伊犁云计算22-1 rhel8 dhcp 配置
云计算
武汉唯众智创12 小时前
基于云计算和大数据技术的传感器数据存储与分析系统
大数据·云计算·传感器
小阿轩yx17 小时前
小阿轩yx-通过state模块定义主机状态
linux·云计算·运维开发·state定义主机状态·jinja模板
古猫先生1 天前
YMTC Xtacking 4.0(Gen5)技术深度分析
服务器·人工智能·科技·云计算
Oven_maizi1 天前
云计算课程作业1
云计算
小哈里2 天前
【云网络】软件定义网络SDN的概念与应用(以PVE8用户隔离,TLS证书介绍,自签证书等为例)
网络·https·云计算·虚拟化·sdn
传输大咖2 天前
传输大咖44 | 云计算企业大数据迁移如何更安全高效?
大数据·安全·云计算·数据迁移·企业大文件传输
qq 1778036222 天前
智能新时代,游戏盾守护顺畅体验
运维·服务器·网络·游戏·云计算·ddos·ip