YUM(Yellowdog Updater, Modified)是一个非常流行的软件包管理器,主要用于基于RPM的Linux发行版,如CentOS、Red Hat Enterprise Linux等。它最大的优势在于能够自动处理软件包之间的依赖关系,并支持在线更新和安装。然而,当网络连接不稳定或速度慢时,通过公共YUM源服务器进行软件包的下载和安装可能会变得非常缓慢,特别是在需要为大量服务器安装大量软件包的情况下。
为了解决这个问题,我们可以通过创建一个本地的YUM源服务器来提高软件包安装的效率。下面将详细介绍如何构建一个高效的本地YUM源服务器。
创建YUM仓库目录
首先,我们需要创建一个目录来存放所有的RPM软件包:
bash
mkdir -p /application/yum/centos6.6/x86_64/
接下来,我们将需要上传RPM包到这个目录。为了更好地组织包,我们可以在该目录下创建子文件夹。
# 安装createrepo软件
为了生成YUM仓库所需的repodata索引文件,我们需要安装createrepo工具:
bash
yum -y install createrepo
# 初始化repodata索引文件
现在我们可以使用createrepo命令来初始化repodata索引文件:
bash
createrepo -pdo /application/yum/centos6.6/x86_64/
这个命令将在指定的目录下创建一个基本的repodata结构。
# 提供YUM服务
要提供YUM服务,我们可以使用Apache或nginx等Web服务器。然而,如果只是在局域网内使用,我们可以使用Python的SimpleHTTPServer模块来快速搭建一个简易的HTTP服务:
bash
cd /application/yum/centos6.6/x86_64/
python -m SimpleHTTPServer 80
现在,我们可以在浏览器中访问本机的IP地址来测试这个简单的YUM源服务器。
# 添加新的RPM包
当我们需要添加新的RPM包到YUM仓库时,可以使用以下命令:
bash
yumdownloader pcre-devel openssl-devel
这个命令会下载指定的RPM包但不安装它们。然后,我们需要使用createrepo命令来更新repodata:
bash
createrepo --update /application/yum/centos6.6/x86_64/
每次添加新的RPM包后,都应该更新repodata以确保YUM客户端可以正确地检索到新包的信息。
# 配置YUM客户端
在YUM客户端上,我们需要配置YUM以使用我们刚刚创建的本地YUM源。首先,我们需要在/etc/yum.conf中设置一些参数:
bash
# 保持缓存以减少下载
keepcache=1
# 设置缓存目录
cachedir=/var/cache/yum/$basearch/$releasever
然后,我们需要编辑或创建/etc/yum.repos.d/下的配置文件,以指定新的YUM源。例如,我们可以创建一个名为oldboy.repo的文件:
bash
[oldboy]
name=Server
baseurl=http://10.0.0.5
enable=1
gpgcheck=0
现在,我们可以在YUM客户端上使用以下命令来查看可用的软件包:
bash
yum --enablerepo=oldboy --disablerepo=base,extras,updates,epel list
# 永久配置YUM源
如果我们希望永久使用本地YUM源,我们需要修改默认的YUM源配置。为此,我们需要编辑CentOS-Base.repo文件:
bash
[root@oldboy yum.repos.d]# vim CentOS-Base.repo
# 在每一个启动的源加上
# enabled=0 改为1就启用,没有此参数也是启用。
[base]
...
enabled=0
[updates]
...
enabled=0
[extras]
...
enabled=0
# 还有其他开启的仓库就使用这个办法关闭。
# 镜像同步YUM源
在一些企业环境中,可能需要一个更加完整的YUM源,包括所有版本的软件包。我们可以通过镜像同步公网YUM源来达到这个目的。这里我们以UST