Linux自建yum仓及相关知识详解

简介:

一、使用场景

很多企业都会自建yum仓来便于企业内部的rpm包安装,这样在安装软件时就可以利用局域网内的高速带宽进行下载和安装rpm包,缩短了通过公网下载的长时间等待。

二、yum与rpm的说明

首先需要对yum与rpm包本身以及他们之间的关系进行一些说明。rpm本身是一个包管理器,所以它具备一个管理器的打包、安装查询、升级、卸载、校验、数据库管理这些基本功能,这就解释了为什么我们在安装一个rpm包前使用rpm -qpi /path/name.rpm能查到这个包中的信息,其中如果出现 Relocations: (not relocatable)这个提示,说明这个rpm包再安装过程中是不允许更改安装位置的。

wKiom1dVGbPw78cYAACRdVHKLkE375.png-wh_50

使用rpm命令安装最让人头疼的问题就是软件包之间的依赖关系,使用yum工具会自动处理我们安装过程中包之间依赖关系 ,它只是一个前端的工具,并不能替代rpm包管理器。我们有没有想过,yum为什么会知道包之间的相互依赖关系呢?yum本身并不会知道包之间的依赖关系,而包之间的依赖关系等元数据,会存放在repodata这个文件中。以光盘为例,当我们使用mount /dev/cdrom /media命令后,就会在/media/下看到该目录,所以这就解释了在自定义yum仓时为什么repodata文件的路径就是yum仓baseurl的所在路径。

wKioL1dVGrnS6g7bAACEyVyIK3o659.png-wh_50

repodata文件中的repomd.xml就存放着各个rpm包之间的关联信息,而TRANS.TBL存放着rpm包的分组信息

wKiom1dVGbSwWlGKAADyaiX5urU589.png-wh_50

而客户端在使用yum命令时,会先下载yum的配置文件,从中找到yum仓的路径,再下载repodate里的元数据,而后安装rpm包

wKioL1dVGrqibCAXAABbOnamGGw546.png-wh_50

三、yum配置文件详解

通过上面,我们知道yum是一个前端工具程序,和其他程序一样自身都有配置文件,其中就包含了yum仓的位置指向。yum的配置文件分为主配置段(/etc/yum.conf),和仓库配置段(/etc/yum.repos.d/*.repo),这么设计是因为yum仓可以有多个,如果都写在/etc/yum.conf文件中,不便于查看,所以有了仓库配置段,yum工具会将所有在/etc/yum.repos.d/目录内,以.repo结尾的文件来作为配置文件。我们可以在/etc/yum.repos.d/下为每一个yum仓定义一个.repo文件,或者在一个.repo文件中分段表示多个yum仓,.repo文件中第一行为repoID,且此repoID不能重复,这就是为什么上图下载的yum配置文件名为base的原因。

wKiom1dVGbXwwEIcAAAhMpJMZqc343.png-wh_50

四、搭建步骤

通过上面可以知道,使用yum安装rpm包需要有repodata目录,该目录可以通过yum createrepo <director>来创建,但是有时本地服务器可能没有安装createrepo命令,又没有yum仓,以下,我们就以这种情况为例来介绍yum仓的搭建:

1.使用本地光盘充当yum源安装createreop命令

(1)放入光盘,使用mount /dev/cdrom /media 将光盘内的目录挂载到/media目录下,

wKioL1dVGruCU6ZZAACa5li0pWY209.png-wh_50

(2)使用vim /etc/yum.repos.d/dvd.repo 创建一个名为dvd.repo的配置文件

wKiom1dVGbXh8ZG9AAAe-BwE_tM044.png-wh_50

[base]——repoID  不能重复

name——任意字符串

baseurl——指定yum仓的位置,本地文件使用协议未file://,后面的/media为yum仓路径(repodata在/media/目录下)

enable——是否启用此yum仓,1表示启用;0禁用

gpgcheck——gpg检测,1为检测;0为不检测,出于安全rpm包在发行时会用自己的私钥加密,并发布公钥,/media/目录下RPM-GPG-KEY-CentOS-6就为用户的公钥,如果gpgcheck值为1,就需要导入公钥,否则无法安装,公钥位置为前一张图所示

cost——开销值,也可以不写,不写默认为1000。前面说过yum仓可以有多个,通过cost值大小来设置yum仓的优先顺序

(3)创建好后,输入yum repolist,可以看到yum仓已经被识别

wKioL1dVGruB0zqZAAAxH9XsLxE230.png-wh_50

2.安装并启动httpd服务

使用yum install httpd 安装httpd程序,安装完后并启用httpd服务,通过netstat -ntl查看80端口是否正常侦听,需要通过http协议访问的安装包必须放在/var/www/html目录内。

wKiom1dVGbbTsImOAABMfCBO2rs282.png-wh_50

3.复制二进制rpm包到/var/www/html目录内,并创建repodate

(1)使用mirror命令从公网下载一个镜像,放置/var/www/html/内,下载后的目录为openstact-juno

wKiom1dVGbbQHuSCAAAsaDtqzBc683.png-wh_50

(2)进入/var/www/html/openstact-juno 目录删除镜像本身自带的repodata(此步骤是为测试createrepo)

wKioL1dVGrygNrA5AAAMJukJO-I361.png-wh_50

(3)使用createrepo /var/www/html/openstact-juno 创建新的repodata目录,创建过程中可以看到他在抽取生成新的元数据

wKioL1dVGrzy1dP3AAAzj3u5vHo428.png-wh_50

(4)此时,局域网内通过浏览器输入 http://ip/filename 就能看到结果了

wKiom1dVGbfT1CGNAAFb2NvkzR8045.png-wh_50

五、本地yum仓验证

验证本地yum仓是否正常对外提供服务,可以在局域网内另找一台host或使用本host来进行验证,本例继续使用原有host

1.输入 vim /etc/yum.repos.d/openstack-juno.repo 创建一个配置文件,为方便测试,不检测gpgcheck

wKiom1dVGbfips-kAAAoXr9WzKQ401.png-wh_50

2.此时yum repolist中就包含新的openstack-juno

wKioL1dVGr3CxW_aAAA6FQcx4pE133.png-wh_50

3.使用yum list all | less 找一个openstack-juno内的yum包,再使用 yum install openstack-ceilometer-compute.noarch 安装,可以从repository看到,openstack-juno已被使用,此致,操作完成

wKioL1dVGr3Cg4xyAADshOnfC9g015.png-wh_50


本文转自 qiao645 51CTO博客,原文链接:http://blog.51cto.com/arkling/1786571


相关文章
|
6月前
|
NoSQL Linux 开发工具
Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
本文介绍了yum 包管理工具、Vim 编辑器、gcc/g++ 编译器、gdb 调试器、编译原理及 Makefile 的使用,同时还配备了如何使用,以及图解。旨在帮助读者更好地理解和应用这些工具与技术。
362 0
|
10月前
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
1193 25
|
Linux 开发工具 数据安全/隐私保护
linux异常一:feng 不在 sudoers 文件中,此事将被报告。yum提示Another app is currently holding the yum lock; waiting for
这篇文章介绍了在CentOS 7系统中安装Docker时遇到的两个常见问题及其解决方法:用户不在sudoers文件中导致权限不足,以及yum被锁定的问题。
251 2
linux异常一:feng 不在 sudoers 文件中,此事将被报告。yum提示Another app is currently holding the yum lock; waiting for
|
关系型数据库 MySQL Linux
Linux 安装 mysql【使用yum源进行安装】
这篇文章介绍了在Linux系统中使用yum源安装MySQL数据库的步骤,包括配置yum源、安装MySQL服务、启动服务以及修改root用户的默认密码。
Linux 安装 mysql【使用yum源进行安装】
|
缓存 前端开发 Linux
Linux yum 命令
10月更文挑战第1天
217 2
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
1321 0
|
Web App开发 缓存 Ubuntu
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
995 11
|
算法 Ubuntu Linux
在Linux中,对比apt和yum两种包管理器在不同Linux发行版中应用有何区别?
在Linux中,对比apt和yum两种包管理器在不同Linux发行版中应用有何区别?
|
Unix Linux Go
Linux 使用Yum安装Go和配置环境
Linux 使用Yum安装Go和配置环境
|
缓存 安全 Linux
本地YUM源大揭秘:搭建您自己的Linux软件宝库,从此告别网络依赖!一文掌握服务器自给自足的终极技能!
【8月更文挑战第13天】在Linux中,YUM是一款强大的软件包管理工具,可自动处理依赖关系。为适应离线或特定安全需求,本指南教你搭建本地YUM源。首先创建存放软件包的`localrepo`目录,复制`.rpm`文件至其中。接着,安装并运用`createrepo`生成仓库元数据。随后配置新的`.repo`文件指向该目录,并禁用GPG检查。最后,清理并重建YUM缓存,即可启用本地YUM源进行软件搜索与安装,适用于网络受限环境。
1020 3