centos7挂载离线yum源

一、前言

​ 我们正常的使用云服务等不会遇到离线挂载的问题,但在公司实际项目中,客户现场环境是不允许服务器接入互联网的,但是往往安装各类rpm包时需要各种依赖,未接入互联网时,会下载依赖失败,所以我们需要自己制作一个离线yum源

二、系统版本查看

查看系统版本信息,离线挂载源需要是同系统同版本才可以

1
cat /etc/centos-release # 查看系统信息
三、下载iso镜像

从官网或者阿里云下载系统镜像

1
2
3
#阿里镜像源地址
https://developer.aliyun.com/mirror/
#一般会有多个版本,如DVD、everything等,我们制作源时需要尽可能的包含更多的依赖包,所以我们选择下载everything包,一般下载文件名如:CentOS-7-x86_64-Everything-xxxx.iso xxxx为版本号
四、挂载镜像
  1. 建立目录

    1
    2
    mkdir -p /mnt/iso #iso镜像存放位置
    mkdir -p /mnt/cdrom #挂载镜像的位置
  2. 拷贝镜像到服务器mnt/iso下

  3. 挂载镜像

    1
    2
    3
    4
    mount -o loop /mnt/iso/CentOS-7-x86_64-Everything-2009.iso /mnt/cdrom

    # 查看镜像是否挂载成功
    ls /mnt/cdrom
  4. 取消挂载

    1
    2
    umount /mnt/cdrom
    #注意,以上命令不要再cdrom文件下执行,否则会取消挂载失败
  5. 查看cdrom下的文件夹,最重要的就是Packages,所有依赖包均在该目录下

五、自动挂载

以上挂载操作仅限本次启动有效,如果系统重启,则挂载失效,如需要永久挂载,则需进行以下配置

1
2
3
4
5
vim /etc/fstab

#将挂载命令写入配置,开启会自动挂载
mnt/iso/CentOS-7-x86_64-DVD-1810.iso /mnt/cdrom iso9660 loop,defaults 0 0

六、配置本地yum源
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#备份原先的yum源
cp -r /etc/yum.repos.d /etc/yum.repos.d.bak

#查看是否备份成功
ll /etc/yum.repos.d.bak

#删除原yum源配置
rm -rf /etc/yum.repos.d/*

#新建本地yum离线源配置
vim /etc/yum.repos.d/local.repo
#将以下内容写入local.repo中
[local]
name=local
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7
  • 清空本地缓存的yum源
1
yum clean all
  • 搜索指定rpm包
1
yum list | grep java
  • 查看当前配置的yum源
1
yum repolist

以上配置结束后,接口离线安装一些rpm包,比如wget,telnet等,如果没有可自行下载后拷贝再服务器进行安装,缺少的依赖会从离线源自动安装

七、搭建局域网内的yum源服务器

可选httpd服务或者nginx服务做代理转发,我们下面使用httpd服务

1
2
3
4
5
6
7
8
9
10
11
#首先安装httpd服务
yum -y install httpd

#启动httpd服务
systemctl start httpd

#测试是否启动成功 默认80端口
telnet 127.0.0.1 80

#httpd文件目录默认指向 /var/www/html 我们需要创建软链指向我们的cdrom目录
ln -s /mnt/cdrom /var/www/html/cents7

一般服务器均设置防火墙,可能需要配置防火墙放行端口,以下是防火墙常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#开放指定端口 将端口替换为自己要开放的端口
firewall-cmd --zone=public --add-port=端口/tcp --permanent

#放行后,请重启防火墙服务,使配置生效
systemctl restart firewalld.service


#启动防火墙
systemctl start firewalld.service

#查看防火墙状态
systemctl status firewalld.service

#关闭防火墙状态(临时关闭,重启失效,为了安全,不要永久关闭,测试时临时关闭即可)
systemctl stop firewalld.service

以上配置后,局域网离线yum源仓库已搭建完成,在需要使用离线yum源的机器上进行以下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#配置同本机搭建离线yum源,先备份
cp -r /etc/yum.repos.d /etc/yum.repos.d.bak

#删除原又配置
rm -rf /etc/yum.repos.d/*

#编辑配置
vim /etc/yum.repos.d/remote.repo

#将以下内容拷贝到remote.repo中
[remote]
name=remote
baseurl=http://192.168.80.130/centos7/
enabled=1
gpgcheck=0
gpgkey=http://192.168.80.130/centos7/RPM-GPG-KEY-CentOS-7

#注意,将192.168.80.130地址替换为自己搭建了离线yum源的机器的IP

八、mount命令的常用选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-a,--all:挂载/etc/fstab里面所有的文件系统;
-r,--read-only:以只读的权限挂载文件系统;
-w,--re,--read-write:以读写权限挂载文件系统;
-L,--label LABEL:根据指定的卷标挂载文件系统;
-U,--uuid UUID:根据指定的uuid挂载文件系统;
-o OPTIONS:指定挂载文件系统的方式;
ro:以只读方式挂载;
rw:以读写方式挂载,默认挂载选项;
async:异步IO,数据写操作优先于内存完成,然后再根据某种策略同步至硬盘中,默认挂载选项;
sync:同步IO;
atime/noatime:设置文件和目录被访问时是否更新最近一次的访问时间戳;
auto/noauto:设置设备是否支持mount的-a选项自动挂载,默认挂载为auto;
diratime/nodiratime:目录被访问时是否更新最近一次的访问时间戳;
dev/nodev:设置是否支持在此设备上使用设备,默认挂载为dev;
exec/noexec:设置是否允许执行此设备上得二进制程序文件,默认挂载为exec
suid/nosuid:设置是否支持在此设备的文件上使用suid,默认挂载为suid;
user/nouser:设置是否允许普通挂载此文件设备,默认挂载为nouser;
remount:重新挂载选项;
acl:设置在此设备上是否支持使用facl,默认不支持;

#注意:上述选项可多个同时使用,彼此之间使用,相隔;

#当在/etc/fstab中增加了新的开机自动挂载的分区,若不想重启系统,可使用mount -a重新自动挂载/etc/fstab里面的所有分区