Linux网络-Yum仓库
Yum仓库
1.yum概述
Yum (Yellow dog Updater, Modified) 是一个基于rpm包构建的软件更新机制,能够自动解决软件包之间的依赖关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。节省了日常工作中的大量查找安装依赖包的时间。
2.yum工作原理
yum依赖于环境,依赖于服务端和客户端,允许跨网络。
yum实现过程:
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装
实现安装服务
yum配置文件
1.主配置文件
主配置文件位置:/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密钥,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如何连接到软件仓库并下载软件包。
点击查看代码
系统内默认的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仓库配置文件格式:
点击查看代码
客户端配置文件两个要求 :
①必须在 /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://
日志文件
日志文件位置:/var/log/yum.log
常用Yum命令
1.查询
1.1 yum list [软件名]
显示可用的安装包,如不加软件名是显示所有的可用包。
点击查看代码
[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 [软件名]
显示安装包详细信息,如不加软件名是显示所有包的详细信息。
点击查看代码
[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.
1.3 yum search <关键词>
根据关键字查找软件安装包的名字,相当于你只知道这个包里的某个关键字会全部给你匹配出来。(模糊查询)
点击查看代码
[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 <关键词>
你知道某个命令却不知道具体的包可以用此命令查找。(精确查询)
点击查看代码
[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
查看历史的使用记录。
点击查看代码
[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能否成功安装软件包。
点击查看代码
`服务端`
[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方式搭建云仓库
tp 文件共享服务器
搭建步骤:
1.服务端安装vsftpd服务程序;再切换到 /var/ftp/ 目录下新建一个子目录centos7,并将光驱挂载到该目录下;然后开启vsftpd服务。
2.客户端安装ftp程序,测试ftp服务是否正常;然后编写yum仓库文件,清理yum缓存,重新建立元数据。
3.测试使用yum能否成功安装软件包。
点击查看代码
`服务端`
[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方式外网环境)
默认的仓库文件是国外云仓库,速度比较慢,可以使用阿里云仓库代替。
点击查看代码
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.自建元数据
点击查看代码
[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
本地epel源
点击查看代码
没有外网 又想使用这个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 镜像文件 文件夹 //挂载镜像到指定文件夹
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为DeepSeek添加本地知识库
· 精选4款基于.NET开源、功能强大的通讯调试工具
· DeepSeek智能编程
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~