配置一台YUM源服务器

axing
2023-07-18 / 5 评论 / 25 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年09月29日,已超过115天没有更新,若内容或图片失效,请留言反馈。

先下载好镜像下面这个是阿里的镜像站,可以自己选择版本

https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/?spm=a2c6h.25603864.0.0.18a9f5adJSpgfw

1.测试环境

准备两台CentOS7.9操作系统的服务器或虚拟机,host01作为服务端,host02作为客户端,要确保客户端必须可以访问到服务端;
准备好CentOS7.9的ISO文件:CentOS-7-x86_64-DVD-2009.iso
关闭防火墙和SELinux,开启防火墙的情况下需要开放80端口,因为下面我使用web软件对外提供服务。

2.测试场景

测试过程中分为以下两种情况:
(1)仅将ISO文件中的安装包上传到服务器中;
(2)需要自定义软件包,比如将ISO文件中的安装包和自己下载的软件包一起放在YUM源服务器中;
两种情况也可以理解成一种,实际上它们都是rpm包。

3.前提条件
需要在服务端安装web服务,这里使用Apache,也可以使用Nginx;
安装Apache:

yum install httpd -y

如果服务端不能访问外面,需要先配置本地YUM源,本地YUM源的方法见本文末尾。
启动服务:

systemctl start httpd

当然服务端不强制使用web服务,也可以使用ftp服务。

4.仅使用ISO文件中的安装包
这个需求是最简单的,因为ISO文件中自带软件包索引文件,不需要额外创建。

4.1挂载ISO文件
挂载ISO文件后,可以看到以下目录及文件:
lyrbbz9t.png
重点是Packages和repodata两个目录,KEY文件可以不使用。
基本Packages包含所有软件包,repodata包含软件包的索引文件。

4.2拷贝ISO中的软件包到服务端
创建目录:

mkdir /var/www/html/CentOS7.9

拷贝文件:

cp -a /mnt/Packages /var/www/html/CentOS7.9
cp -a /mnt/repodata /var/www/html/CentOS7.9
http://192.168.110.51/CentOS7.9/

lyrbd8ag.png

4.3配置客户端测试

[root@localhost yum.repos.d]# cat /etc/yum.repos.d/local.repo 
[Local_YUM]
name=Local_YUM
baseurl=http://192.168.110.51/CentOS7.9
enable=1
gpgcheck=0
[root@localhost yum.repos.d]# yum makecache
已加载插件:fastestmirrorLoading mirror speeds from cached hostfileLocal_YUM                                                                                       | 3.6 kB  00:00:00     Local_YUM/group_gz             FAILED                                          http://192.168.110.51/CentOS7.9/repodata/a4e2b46586aa556c3b6f814dad5b16db5a669984d66b68e873586cd7c7253301-c7-x86_64-comps.xml.gz: [Errno 14] HTTP Error 404 - Not Found
正在尝试其它镜像。To address this issue please refer to the below wiki article https://wiki.centos.org/yum-errorsIf above article doesn't help to resolve this issue please use https://bugs.centos.org/.Local_YUM/primary_db           FAILED                                          http://192.168.110.51/CentOS7.9/repodata/0e82d111931e402316702696ae4178e65673dc0f9c23a2bb012d192cb2625ea1-primary.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found
正在尝试其它镜像。Local_YUM/filelists_db         FAILED                                          http://192.168.110.51/CentOS7.9/repodata/60aa4673bf5fa63d1a7a640ef407b8e48fe5b3337720d844a29a53fec130d6da-filelists.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found
正在尝试其它镜像。Local_YUM/other_db             FAILED                                          http://192.168.110.51/CentOS7.9/repodata/9d6292fa12fd9ca472fafa8c0b348c3e1f139681aa066d41dc53b3563bcd1f53-other.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found
正在尝试其它镜像。Local_YUM/primary_db           FAILED                                          http://192.168.110.51/CentOS7.9/repodata/0e82d111931e402316702696ae4178e65673dc0f9c23a2bb012d192cb2625ea1-primary.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found
正在尝试其它镜像。Local_YUM/other_db             FAILED                                          http://192.168.110.51/CentOS7.9/repodata/9d6292fa12fd9ca472fafa8c0b348c3e1f139681aa066d41dc53b3563bcd1f53-other.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found
正在尝试其它镜像。Local_YUM/filelists_db         FAILED                                          http://192.168.110.51/CentOS7.9/repodata/60aa4673bf5fa63d1a7a640ef407b8e48fe5b3337720d844a29a53fec130d6da-filelists.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found
正在尝试其它镜像。http://192.168.110.51/CentOS7.9/repodata/0e82d111931e402316702696ae4178e65673dc0f9c23a2bb012d192cb2625ea1-primary.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found
正在尝试其它镜像。 One of the configured repositories failed (Local_YUM), and yum doesn't have enough cached data to continue. At this point the only safe thing yum can do is fail. There are a few ways to work "fix" this:     
1. Contact the upstream for the repository and get them to fix the problem.     
2. Reconfigure the baseurl/etc. for the repository, to point to a working        upstream. This is most often useful if you are using a newer        distribution release than is supported by the repository (and the        packages for the previous distribution release still work).     
3. Run the command with the repository temporarily disabled            yum --disablerepo=Local_YUM ...     
4. Disable the repository permanently, so yum won't use it by default. Yum        will then just ignore the repository until you permanently enable it        again or use --enablerepo for temporary usage:            yum-config-manager --disable Local_YUM        or            subscription-manager repos --disable=Local_YUM     5. Configure the failing repository to be skipped, if it is unavailable.        Note that yum will try to contact the repo. when it runs most commands,        so will have to try and fail each time (and thus. yum will be be much        slower). If it is a very temporary problem though, this is often a nice        compromise:            yum-config-manager --save --setopt=Local_YUM.skip_if_unavailable=truefailure: repodata/0e82d111931e402316702696ae4178e65673dc0f9c23a2bb012d192cb2625ea1-primary.sqlite.bz2 from Local_YUM: [Errno 256] No more mirrors to try.http://192.168.110.51/CentOS7.9/repodata/0e82d111931e402316702696ae4178e65673dc0f9c23a2bb012d192cb2625ea1-primary.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found

如果报错的话
repodata的元数据有问题,这问题是没有后缀手动生成了后缀。

mv a4e2b46586aa556c3b6f814dad5b16db5a669984d66b68e873586cd7c7253301 a4e2b46586aa556c3b6f814dad5b16db5a669984d66b68e873586cd7c7253301-c7-x86_64-comps.xml.gz
mv 0e82d111931e402316702696ae4178e65673dc0f9c23a2bb012d192cb2625ea1 0e82d111931e402316702696ae4178e65673dc0f9c23a2bb012d192cb2625ea1-primary.sqlite.bz2
mv 60aa4673bf5fa63d1a7a640ef407b8e48fe5b3337720d844a29a53fec130d6da 60aa4673bf5fa63d1a7a640ef407b8e48fe5b3337720d844a29a53fec130d6da-filelists.sqlite.bz2
mv 9d6292fa12fd9ca472fafa8c0b348c3e1f139681aa066d41dc53b3563bcd1f53 9d6292fa12fd9ca472fafa8c0b348c3e1f139681aa066d41dc53b3563bcd1f53-other.sqlite.bz2

另一种方式是使用createrepo重新生成元数据:
createrepo /path/to/your/local/repo

4.3.1 配置YUM文件
将原有的配置文件删除,新建一个:

rm -rf /etc/yum.repos.d/*
touch /etc/yum.repos.d/local.repo  #注意文件名必须以repo结尾
vi /etc/yum.repos.d/local.repo
[Local_YUM]
name=Local_YUM
baseurl=http://192.168.110.51/CentOS7.9
enable=1
gpgcheck=0

4.3.2 更新YUM缓存

yum clean all
yum makecache

4.3.3 安装软件包
安装一个系统中未安装的软件包,这里以wget软件为例:

rpm -qa | grep wget    #查看wget软件包是否安装
yum install wget -y    #安装wget

5.添加自定义安装包到YUM服务器中
5.1准备软件包
比如需要安装数据库:MariaDB-server-10.11.7,此时YUM服务器是不存在这些软件包的,先把软件包上传到服务器中,如:
MariaDB-server目录中包含了MariaDB-server-10.11.7和MariaDB-client-10.11.7所需要的依赖包,但只有rpm包还不能使用,需要为它们创建索引文件。
5.2创建索引
创建索引需要使用createrepo命令,默认情况下未安装该命令,安装createrepo:

yum install createrepo -y

比如说安装MariaDB先去官网

将其复制并粘贴到 
/etc/yum.repos.d 下的文件中(建议将文件命名为 MariaDB.repo 或类似名称)。

# MariaDB 11.4 CentOS repository list - created 2024-07-15 08:20 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
# rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# baseurl = https://rpm.mariadb.org/11.4/centos/$releasever/$basearch
baseurl = https://mirror.rackspace.com/mariadb/yum/11.4/centos/$releasever/$basearch
module_hotfixes = 1
# gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgkey = https://mirror.rackspace.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
sudo yum --downloadonly --downloaddir=/root/abc install MariaDB-server MariaDB-client
可以把安装包和依赖包缓存起来并且指定路径

lyrbi0u4.png
创建索引信息:

createrepo -v /var/www/html/MariaDB-server

lyrbiixq.png
因为之前配置ISO文件中的软件包不包含MariaDB 10.11.7版本,所以还无法安装成功。
5.3.1配置YUM文件

touch /etc/yum.repos.d/mariadb.repo

vi /etc/yum.repos.d/mariadb.repo

[Mariadb_YUM]
name=Mariadb_YUM
baseurl=http://192.168.110.51/MariaDB-server
enable=1
gpgcheck=0

5.3.2更新YUM缓存

yum install MariaDB-server-11.4.2  MariaDB-client-11.4.2

lyrbjfye.png
已经可以安装成功了。

6.总结
至此,我们已经拥有一台在内网可以使用的YUM服务器了;
以上也可以将所有rpm软件包放在同一个目录中,使用createrepo命令创建索引,以上为了区分配置了两个目录;
重点操作:
在客户端配置YUM文件中的baseurl时,路径为repodata目录所在的目录,比如repodata目录在MariaDB-server中,则写成:

baseurl=http://192.168.110.51/MariaDB-server

附录:
(1)挂载ISO文件
如果使用的是VMWare虚拟机管理工具,把iso文件挂载到光驱中,然后挂载,比如将镜像到mnt目录下:

mount /dev/cdrom /mnt

lyrbkqyt.png
如果是其他方式,可以将iso文件上传到操作系统中,其后挂载:

mount -o loop CentOS-7-x86_64-DVD-1810.iso /mnt

lyrbl4bj.png
(2)移除/备份系统当前YUM文件
备份当前系统中的YUM源配置文件:

mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak

(3)创建并配置YUM文件

vim /etc/yum.repos.d/localyum.repo

增加内容如下:

[CentOS7.6]
name=CentOS7.6 
Local YUMbaseurl=file:///mnt
gpgcheck=0
enabled=1

参数说明:


参数说明:
[CentOS7.6]    #名称,需自定义,确保在YUM配置文件中唯一
name=CentOS7.6 Local YUM    #描述信息
baseurl=file:///mnt         #设置 yum 源目录为mnt,根据挂载的目录而定
gpgcheck=0      #检查GPG-KEY,0为不检查,1为检查
enabled=1       #是否用该yum源,0为禁用,1为使用

更新软件包索引:

yum clean all
yum makecache
0

评论 (5)

取消
  1. 头像
    axing 作者
    Windows 10 · Google Chrome

    表情

    回复
  2. 头像
    sekwxjpcpr
    Windows 10 · Google Chrome

    看的我热血沸腾啊

    回复
  3. 头像
    wpwwxrsshx
    Windows 10 · Google Chrome

    怎么收藏这篇文章?

    回复
  4. 头像
    xgsxbfpbku
    Windows 10 · Google Chrome

    不错不错,我喜欢看 https://www.ea55.com/

    回复
  5. 头像
    jrthuockxl
    Windows 10 · Google Chrome

    哈哈哈,写的太好了https://www.cscnn.com/

    回复