【内网离线环境】搭建本地YUM源

1 介绍

内网环境由于离线,在安装数据库等软件的时候比较麻烦,很多依赖包不能联网下载。因此有必要搭建一个本地yum源,供离线环境使用。

搭建离线yum源有两种方式,第一种是使用iso镜像搭建,第二种是将所有的网络yum源rpm包下载到本地搭建离线yum源。

2 iso镜像搭建

bash 复制代码
[root@localhost ~]#mkdir /root/test
[root@r11gn1 iso]# mount -o loop OracleLinux-R6-U8-Server-x86_64-dvd.iso /mnt/
[root@localhost ~]# cd /etc/yum.repos.d/
[root@r11gn1 yum.repos.d]# yum-config-manager --add file:///mnt
[root@r11gn1 yum.repos.d]# echo gpgcheck=0 >> mnt.repo

#检查
[root@r11gn1 yum.repos.d]# yum repolist
Loaded plugins: refresh-packagekit, security, ulninfo
mnt                                                                                                                                      | 3.7 kB     00:00 ...
mnt/primary_db                                                                                                                           | 3.1 MB     00:00 ...
repo id                                                              repo name                                                                            status
mnt                                                                  added from: file:///mnt                                                              3,841
repolist: 3,841

3 部署离线yum源

3.1 共享yum源搭建

使用iso镜像的方式作用比较局限,只有四千多个包,很多常用的包他是没有的。因此才有了次方法,使用这种方式搭建的yum源几乎全部覆盖了所有的软件依赖包。

原理是在有网络的环境里先将所有rpm包,下载到本地。然后在拷贝到离线环境然后在搭建本地yum源。

一、网络yum源

在可以联网的环境,搭建好网络yum源,确保可以使用。

二、下载rpm包

bash 复制代码
[root@zabbix6 ~]# cd /etc/yum.repos.d/
[root@zabbix6 yum.repos.d]# mkdir mirror

#这一步比较久,放着跑就好
[root@zabbix6 yum.repos.d]# reposync -np mirror

[root@zabbix6 yum.repos.d]# cd mirror
[root@zabbix6 yum.repos.d]# createrepo .

执行完以上命令后,将mirror目录打包上传到离线环境的/etc/yum.repos.d/路径中。

bash 复制代码
[root@shared yum.repos.d]# ll
total 2
drwxr-xr-x. 7 root root  79 Mar 31 09:39 mirror
-rw-r--r--. 1 root root 181 Mar 31 19:58 mirror.repo

下面的步骤全部在离线机器上进行操作。

三、配置yum源repo文件

bash 复制代码
[root@zabbix6 yum.repos.d]# yum-config-manager --add file:///etc/yum.repos.d/mirror
Loaded plugins: refresh-packagekit
adding repo from: file:///etc/yum.repos.d/mirror

[mirror_]
name=added from: file:///etc/yum.repos.d/mirror
baseurl=file:///etc/yum.repos.d/mirror
enabled=1

[root@zabbix6 yum.repos.d]# echo gpgcheck=0 >> mnt.repo

验证:

bash 复制代码
[root@shared yum.repos.d]# yum repolist
Loaded plugins: ulninfo
repo_local                                                                                                                               | 2.9 kB  00:00:00
repo_local/primary_db                                                                                                                    |  18 MB  00:00:00
repo id                                                                    repo name                                                                      status
repo_local                                                                 repo for local                                                                 29,313
repolist: 29,313

可以看到,有差不多3万个yum源,是iso镜像搭建的6倍之多。

3.2 nfs挂载

要设置刚刚这台机器作为离线的共享yum源,共享到所有离线的机器上。

一、安装nfs

bash 复制代码
[root@shared yum.repos.d]# yum -y install yum-utils nfs-utils nfs

[root@shared yum.repos.d]# systemctl start nfs
[root@shared yum.repos.d]# systemctl status nfs
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
   Active: active (exited) since Sun 2024-03-31 20:08:59 CST; 3s ago
  Process: 2096 ExecStartPost=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
  Process: 2074 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
  Process: 2073 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 2074 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/nfs-server.service

Mar 31 20:08:58 shared systemd[1]: Starting NFS server and services...
Mar 31 20:08:59 shared systemd[1]: Started NFS server and services.

二、添加共享目录

在 /etc/exports 文件中添加一行来共享 /etc/yum.repos.d/mirror 目录,并且允许所有主机(*)以读写(rw)权限访问。

bash 复制代码
[root@shared yum.repos.d]# vim /etc/exports
[root@shared yum.repos.d]# /etc/yum.repos.d/mirror *(rw)
[root@shared yum.repos.d]# systemctl restart nfs
[root@shared yum.repos.d]# showmount -e localhost
Export list for localhost:
/etc/yum.repos.d/mirror *

三、远程挂载

在共享yum源的机器上关闭防火墙,否则其他机器挂载不上nfs共享目录:

bash 复制代码
[root@shared yum.repos.d]# systemctl stop firewalld
[root@shared yum.repos.d]# systemctl disable firewalld

到其他需要使用yum源的机器上执行以下步骤:安装nfs,远程挂载共享yum源目录:

bash 复制代码
[root@r11gn1 yum.repos.d]# yum -y install yum-utils nfs-utils nfs
[root@r11gn1 yum.repos.d]# systemctl start nfs
[root@r11gn1 yum.repos.d]# mount -t nfs 192.168.56.66:/etc/yum.repos.d/mirror /mnt/
[root@r11gn1 yum.repos.d]# df -h
Filesystem            Size  Used Avail Use% Mounted on
192.168.56.66:/etc/yum.repos.d/mirror
                       46G   31G   16G  67% /mnt

检查共享目录情况:

bash 复制代码
[root@r11gn1 yum.repos.d]# showmount -e 192.168.56.66
Export list for 192.168.56.66:
/etc/yum.repos.d/mirror *

四、创建yum文件

bash 复制代码
[root@r11gn1 yum.repos.d]# yum-config-manager --add file:///mnt/
Loaded plugins: refresh-packagekit
adding repo from: file:///mnt/

[mnt_]
name=added from: file:///mnt/
baseurl=file:///mnt/
enabled=1

[root@r11gn1 yum.repos.d]# echo gpgcheck=0 >> mnt.repo
[root@r11gn1 yum.repos.d]# yum repolist
Loaded plugins: refresh-packagekit, security, ulninfo
mnt1_                                                                                                                | 2.9 kB     00:00 ...
repo id                                                   repo name                                                                   status
mnt                                                       added from: file:///mnt                                                      3,841
mnt1_                                                     added from: file:///mnt1/                                                   29,313
repolist: 33,154

成功!!!

无论要配置多少台机器,几台也好,几百台也罢,都是重复以上的操作。

有兴趣的话各位可以写个一键配置脚本,就不用做这么多重复性的工作了。后续我会再更新一个自动化脚本。

相关推荐
舞动CPU4 小时前
linux c/c++最高效的计时方法
linux·运维·服务器
皮锤打乌龟5 小时前
(干货)Jenkins使用kubernetes插件连接k8s的认证方式
运维·kubernetes·jenkins
钰@5 小时前
小程序开发者工具的network选项卡中有某域名的接口请求,但是在charles中抓不到该接口
运维·服务器·小程序
wanhengwangluo5 小时前
云服务器和物理服务器的区别有哪些?
运维·服务器
秦jh_6 小时前
【Linux】多线程(概念,控制)
linux·运维·前端
yaosheng_VALVE7 小时前
稀硫酸介质中 V 型球阀的材质选择与选型要点-耀圣
运维·spring cloud·自动化·intellij-idea·材质·1024程序员节
看山还是山,看水还是。7 小时前
Redis 配置
运维·数据库·redis·安全·缓存·测试覆盖率
扣得君7 小时前
C++20 Coroutine Echo Server
运维·服务器·c++20
keep__go8 小时前
Linux 批量配置互信
linux·运维·服务器·数据库·shell
矛取矛求8 小时前
Linux中给普通账户一次性提权
linux·运维·服务器