前言

工作中安装操作系统只是开始,后面安装软件才是大头,从基础的ssh服务的安装启动,再到java,Python等语言的安装,然后ansible自动化管理软件、zabbix监控软件、mysql数据库软件,这些都是安装过的。
为了方便安装所需的软件那么就自建一个本地yum源吧!

一、介绍

为什么要构建本地源?

  • 安装方便快捷,不用一个个去下载依赖包

因为公司内部环境是没法联网的,如果安装的软件在ISO镜像中有那就舒服了,如果没有就尴尬了,有的时候你甚至需要根据安装提示一个一个的去下载软件的依赖包,有的软件看着就一个但是依赖包一串接着一串。安装软件重要的就是将他的依赖包下载完全。

  • 灵活选择软件版本

因为工作会直接和开发的同志进行对接,他们对于java或者是Python的版本是有些独特要求的,但是自己又不熟悉安装过程,自己到网上直接下载一个java包到本地安装各种依赖过不去,接着就自己手动把需求的依赖给卸载了,然后整个环境都蹦了!
为了避免这种情况,可以在本地搭建的软件源中准备好所需版本的软件,依赖包等都准备好,以供开发人员使用,避免搞崩环境,毕竟还是要自己修的。

  • 高速的传输速率

之前安装软件的时候,因为网速的原因,下载一个mysql-server软件包,几十K、几十K的蹦,也不知道是网络慢还是自己脸黑,下载了有半个小时,非常考验心态,为了避免这种情况还是搭建本地源吧,毕竟内网传输在怎么慢也是能接受的。

  • 配置简单

当我们搭建好ftp源之后,只要是内网的机器都是可以使用的,只需要在yum文件中增加作为仓库这台机器的IP地址就可以了。

二、环境部署

描述:
我这里的ftp源是为centos类型的系统使用的yum源,因为大部分安装操作系统都是centos7.4,常用的安装软件操作也是在centos系统上面,所以就以centos7操作系统举例。

环境:

操作系统软件版本
CentOS Linux release 7.4.1708 (Core)version 3.0.2

2.1、本地yum源

首先因为使用的是centos7.4版本ISO镜像,有8G多,这里面是包含一部分基础软件的,所以就可以以他为基础来安装一些基础软件vsftpd服务、wget软件,
在这里插入图片描述
将ISO镜像通过虚机的光驱加载进来,我们挂载到mnt目录下面,

mount /dev/sr0 /mnt/iso/

(因为现在ftp源已经搭建完成了,ISO镜像挂载到ftp源中的,主要是看目录内容)
在这里插入图片描述
编辑yum文件,

cat /etc/yum.repos.d/yum.repo	#配置文件路径
[rhel]							#仓库名
name=rhle	
baseurl=file:///mnt/iso			#软件路径
gpgcheck=0						#是否安全检查,0不检查|1检查
enabled=1						#是否自动启动,0不启动|1启动

注意,yum源的配置文件结尾必须是repo,其他的不识别,我图片中是我做ftp之前的备份文件所以多了bak,如果你是做自己本地的yum源文件,结尾必须是repo!!!
在这里插入图片描述
执行命令是配置生效(你也可以不执行这两条命令,直接安装软件的时候检查到有变化的yum源文件会自动执行,效果一样)

yum makecache			#重新生成yum源文件
yum repolist 				#查看可用的yum源

PS:制作本地的yum的时候最好将自带的网络源文件都放到另外一个地方或者是创建一个目录放进去避免影响,像我就是创建一个test目录将自带的网络源文件放进去。
在这里插入图片描述
如果你只是想使用本地源的话那么就需要设置一个开机启动了,否者每次重启之后都要手动将镜像挂载到mnt下,

开机启动就是在fstab文件中写入一条

vim /etc/fstab 
UUID="2017-09-06-10-53-42-00" /var/ftp/centos7 iso9660 defaults 0 0

在这里插入图片描述
这里开头的UUID是一个硬件在系统中的唯一标识符

配置文件中你写这个UUID可以,写/dev/sr0也是可以的,都行。

blkid /dev/sr0
/dev/sr0: UUID="2017-09-06-10-53-42-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 

在这里插入图片描述

2.2、添加硬盘

接着我们添加一块大容量硬盘进行软件包存放,
PS:如果是工作环境直接找一台物理服务上面的硬盘资源是足够的,但是我这里演示是通过自己的虚机,所以就需要新加一块盘来存放之后下载的软件了。

20G的硬盘是安装的时候使用的系统盘,100G的盘是后加的用于存放软件的盘,
在这里插入图片描述

启动虚机进去查看,sda使我们那块20G硬盘,sdb就是我们新添加的那块盘了,
在这里插入图片描述

现在我们有两种办法来使用这块盘:

  1. 正常进行分区——格式化——挂载使用
  • 这种方式好处就是操作简单,如果是做成gpt分区三条命令就搞定可以使用了;
  • 缺点是没有扩展性,现在100G够用了,当你使用的时间长了之后,下载到本地的软件会越来越多的,这100G就未必够用了,
  1. LVM方式,pv——vg——lv——格式化——挂载使用
  • 好处,可扩展性,使用LVM方式操作硬盘是将数据放到lv创建出来的卷里面的,当我们软件变多硬盘空间不够的时候,我们可以再加一块硬盘加入到卷里面,动态的扩容卷空间,
  • 坏处,操作命令是比较多的,而且LVM软件也是有一定的风险的,他有自己的极限如果是容量太大也是容易出事,但是我就是做一个本地源,量级还是达不到的。

我选择LVM的方式——》方便后期扩容

查看硬盘识别出来的盘符是sdb

ls /dev/sd*		

在这里插入图片描述
先将硬盘加入pv

pvcreate /dev/sdb						

在这里插入图片描述
接着创建vg指定一个块大小是16M

vgcreate -s 16M vg001 /dev/sdb		

在这里插入图片描述
接着将vg中所有空间分给lv

lvcreate -l 100%FREE -n lv001 vg001		

在这里插入图片描述

最后将lv进行格式化使用xfs

mkfs.xfs /dev/mapper/vg001-lv001 	

在这里插入图片描述
创建一个测试目录,测试挂载下,只要能挂载上去能看到容量是100G就可以了,

mkdir /mnt/test		
mount /dev/mapper/vg001-lv001 /mnt/test

在这里插入图片描述

2.3、安装vsftpd、wget、createrepo

现在我们本地yum源已经准备好了用来安装软件,然后单独存放下载的网络源软件的空间已经准备好了们可以挂载使用,那么我们就先将软件安装好。

直接安装ftp软件

yum install vsftpd

在这里插入图片描述
ftp软件设置为开机自启并且启动了就可以,之后ftp源内容我们会进行配置,

systemctl enable --now vsftpd
systemctl status vsftpd

在这里插入图片描述

接着安装下wget,我们将网络源上面的包下载到本地都是通过这个软件,

yum install wget

在这里插入图片描述
接着安装下createpo软件,他是用来生成仓库文件的,

yum install createrepo

我们使用yum之所以不用一个个安装依赖包就是因为这个仓库文件,有了他我们安装一个软件的时候就不需要考虑依赖问题。我们下载的软件包不一定都带有仓库文件,如果需要手动生成那么就需要createrepo软件了。
在这里插入图片描述

2.4、将ISO镜像软件加入到FTP源中

现在我们的ftp源环境就已经安装好了,安装过程很简单就是两个软件但是准备环境操作还是很多的步骤的,但是我们ftp源还是没有配置,我们先将本地的ISO镜像提供的软件包放进去,

注意,ISO镜像是比较特殊的
如果按照正常的流程:下载软件——》createrepo生成仓库文件——》放入/var/ftp目录下,
但是我们的ISO镜像中的软件是有仓库文件的就是repodata目录下面的内容,所以我们只需要直接使用就可以了,他是一个完整的本地yum源仓库,有软件有仓库文件,可以直接使用的,所以我们这里只需要将ISO镜像挂载过来就可以使用了,看着操作是简单但是中间还是经过很多东西的,这个要知道。
在这里插入图片描述

创建挂载目录——》这里我们没有修改ftp的配置所以只能是在/var/ftp/下面进行创建

mkdir -p /var/ftp/centos7

在这里插入图片描述
因为做过自动启动所以直接修改fstab文件就好了,将挂载目录指向我们创建的这个目录就好,

vim /etc/fstab 
UUID="2017-09-06-10-53-42-00" /var/ftp/centos7 iso9660 defaults 0 0

然后手动卸载之前mnt目录下的挂载,然后让fstab文件配置生效,接着查看就发现ISO镜像已经挂载过来了,

umount /mnt/iso/
mount -a
df -h

在这里插入图片描述

pub目录是ftp安装好之后自己创建的家目录或者说是共享目录,其他目录都是我下载的网络源的软件
在这里插入图片描述

2.5、编写ftp源文件

上面ftp源已经做好了并且已经将本地的ISO源已经加入进去了,现在我们需要准备yum文件来进行使用,

因为我们上面已经做了本地的yum源配置,现在我们要将本地的ISO镜像源软件加入到FTP中,所以先将之前的文件进行备份,

mv /etc/yum.repos.d/yum.repo /etc/yum.repos.d/yum.repo.bak 

接着在编写ftp源的文件

vim /etc/yum.repos.d/ftp.repo 
[local-ftp-centos7]
name=local-ftp-centos7
baseurl=ftp://192.168.144.10/centos7
gpgcheck=0
enabled=1
gpgkey=ftp://192.168.144.10/centos7/RPM-GPG-KEY-CentOS-7

在这里插入图片描述

接着就是老样子,重新生成源文件,查看可用仓库

yum makecache 
yum repolist 

在这里插入图片描述

接着我们可以安装下apache软件,验证下yum能够正常使用,

yum install httpd

不加y或者不输入y就不会安装,我们可以验证新添加的ftp源是好使的,
在这里插入图片描述
总结:
ftp环境搭建很简单就是安装一个vsftp软件就可以了,然后设置为开机启动就好,然后我们只需要将下载好的软件生成yum仓库文件然后放到/var/ftp/目录下就可以了,为了区分不同的源还是要创建个目录的,到这里为止,我们的ftp源就搭建好了,还是非常简单的。
接下来就是client端使用了,编写ftp的yum文件,就可以用来安装软件了。

三、添加网络

上面的操作我们已经将ISO镜像的本地源发到了ftp源中,而且我们编写ftp源文件之后也是可以正常使用的,但是只有本地源是不够的,我们搭建ftp源的初衷也不是一个本地源就可以搞定的。

我们的本意就是将网络上的软件包下载下来然后放到本地ftp源中,安装软件的时候就不用联网也可以安装了。

3.1、下载网络源软件包

下载网络源的软件包有两种方式:

  • 加载网络源——》下载软件包

这种方式我们需要将网络源先加入到本地的yum源仓库,然后将网络源的包同步到本地的一个目录中,这种方式同步下来的只是软件包没有依赖关系,就是没有仓库文件,需要我们自己重新生成的,但是软件包量级比较大的话画的时间比较长,
举个例子:我将epel源的软件包拉下来也就一万三千多个包,重新生成仓库文件花了一个小时,花的时间也是非常长的。

  • 直接找到网上的ftp源下载软件包

这种方式我们可以将软件和仓库文件都是拉下来,这就非常爽了,下载到本地之后直接使用就好了,我就是使用这种方式来下包的。

yum源方式:

首先,将网路源文件下载到本地,我这里使用的是阿里云的镜像站,

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

接着清空yum源缓存、然后重新生成元数据、查看可用仓库

yum clean all 
yum makecache 
yum repolist 

最后指定仓库源将软件包下载下来,

reposync -r epel -p /var/ftp/epel/

这种情况下最后还需要重新生成仓库文件,这个根据软件包的数量增加生成时间会变长,

createrepo /var/ftp/epel/
网络ftp源:

网络ftp源我这里使用的清华大学镜像源,现在国内的公共源有很多,其他的也是可以的,

https://mirror.tuna.tsinghua.edu.cn/

在这里插入图片描述
以centos7的zabbix源为例,

先确定zabbix源的具体目录

https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.2/rhel/7/x86_64/

在这里插入图片描述
接着在ftp中创建对应的目录,

mkdir -p /var/ftp/zabbix

然后将软件包和仓库文件下载

wget -m -c -np -nH --cut-dirs=1 -e robots=off https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.2/rhel/7/x86_64/ -P /var/ftp/zabbix

注意:–cut-dirs=1 ,wget中这个参数指定的是目录的层级,按需来指定,我想要的软件包和仓库文件都在一层,所以参数1就够了。

四、添加的网络

4.1、epel

epel源是centos操作系统的软件补全仓库,一般在ISO镜像中没有的的软件都是可以在epel源中找到的,所以我们的ftp源中他是必须要有的。

首先确定ftp源网络上的位置

https://mirror.tuna.tsinghua.edu.cn/epel/7/x86_64/

在这里插入图片描述

接着创建对应的目录

mkdir /var/ftp/epel

下载网络ftp的软件包

wget -m -c -np -nH --cut-dirs=1 -e robots=off https://mirror.tuna.tsinghua.edu.cn/epel/7/x86_64/ -P /var/ftp/epel

在这里插入图片描述

epel对应的yum文件

[local-ftp-epel]
name=local-ftp-epel
baseurl=ftp://192.168.144.10/epel
gpgcheck=0
enabled=1

4.2、zabbix

zabbix监控,这是我们平常部署监控软件的时候需要用到的软件,

首先确定ftp上网络源的位置

https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.2/rhel/7/x86_64/

在这里插入图片描述

接着创建对应的目录

mkdir /var/ftp/zabbix

下载网络ftp源的软件包

wget -m -c -np -nH --cut-dirs=1 -e robots=off https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.2/rhel/7/x86_64/ -P /var/ftp/zabbix

zabbix对应的yum文件:

[local-ftp-zabbix]
name=local-ftp-zabbix
baseurl=ftp://192.168.144.10/zabbix
gpgcheck=0
enabled=0

4.3、mysql

mysql数据库他的版本是很多的,根据需求我下载了三种5.6、5.7、8.0,

这是ftp网络源上总的地址

https://mirror.tuna.tsinghua.edu.cn/mysql/yum/

在这里插入图片描述

因为mysql版本很多所以不同版本又是一个不同的目录,所以需要分别下载,

mysql5.6

首先确定ftp上网络源的位置

https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.6-community-el7-x86_64/

在这里插入图片描述

接着创建对应的目录

mkdir -p /var/ftp/mysql/mysql-5.6-community-el7-x86_64

下载网络ftp源的软件包

wget -m -c -np -nH --cut-dirs=3 -e robots=off https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.6-community-el7-x86_64/ -P /var/ftp/mysql/mysql-5.6-community-el7-x86_64

mysql5.6对应的yum文件:

[local-ftp-mysql56]
name=local-ftp-mysql56
baseurl=ftp://192.168.144.10/mysql/mysql-5.6-community-el7-x86_64
gpgcheck=0
enabled=0
mysql5.7

首先确定ftp上网络源的位置

https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/

在这里插入图片描述

接着创建对应的目录

mkdir -p /var/ftp/mysql/mysql-5.7-community-el7-x86_64/

下载网络ftp源的软件包

wget -m -c -np -nH --cut-dirs=2 -e robots=off https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/ -P /var/ftp/mysql/mysql-5.7-community-el7-x86_64/

mysql5.7对应的yum文件:

[local-ftp-mysql57]
name=local-ftp-mysql57
baseurl=ftp://192.168.144.10/mysql/mysql-5.7-community-el7-x86_64
gpgcheck=0
enabled=1
mysql8.0

首先确定ftp上网络源的位置

https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el7-x86_64/

在这里插入图片描述

接着创建对应的目录

mkdir -p /var/ftp/mysql/mysql-8.0-community-el7-x86_64

下载网络ftp源的软件包

wget -m -c -np -nH --cut-dirs=2 -e robots=off https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el7-x86_64/ -P /var/ftp/mysql/mysql-8.0-community-el7-x86_64

mysql8.0对应的yum文件:

[local-ftp-mysql80]
name=local-ftp-mysql80
baseurl=ftp://192.168.144.10/mysql/mysql-8.0-community-el7-x86_64
gpgcheck=0
enabled=0
mysql-connectors

首先确定ftp上网络源的位置

https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-connectors-community-el7-x86_64/

在这里插入图片描述

接着创建对应的目录

mkdir -p /var/ftp/mysql/mysql-connectors-community-el7-x86_64

下载网络ftp源的软件包

wget -m -c -np -nH --cut-dirs=2 -e robots=off https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-connectors-community-el7-x86_64/ -P /var/ftp/mysql/mysql-connectors-community-el7-x86_64

mysql-connectors对应的yum文件:

[local-ftp-mysql-connect]
name=local-ftp-mysql-connect
baseurl=ftp://192.168.144.10/mysql/mysql-connectors-community-el7-x86_64
gpgcheck=0
enabled=1
mysql-tools

首先确定ftp上网络源的位置

https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-tools-community-el7-x86_64/

在这里插入图片描述

接着创建对应的目录

mkdir -p /var/ftp/mysql/mysql-tools-community-el7-x86_64

下载网络ftp源的软件包

wget -m -c -np -nH --cut-dirs=2 -e robots=off https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-tools-community-el7-x86_64/ -P /var/ftp/mysql/mysql-tools-community-el7-x86_64

mysql-tools对应的yum文件:

[local-ftp-mysql-tools]
name=local-ftp-mysql-tools
baseurl=ftp://192.168.144.10/mysql/mysql-tools-community-el7-x86_64
gpgcheck=0
enabled=1

4.4、Q版OpenStack

首先确定ftp上网络源的位置

https://mirror.tuna.tsinghua.edu.cn/centos/7.9.2009/cloud/x86_64/openstack-queens/

在这里插入图片描述

接着创建对应的目录

mkdir -p /var/ftp/cloud/openstack-queens/

下载网络ftp源的软件包

wget -m -c -np -nH --cut-dirs=2 -e robots=off https://mirror.tuna.tsinghua.edu.cn/centos/7.9.2009/cloud/x86_64/openstack-queens/ -P /var/ftp/cloud/openstack-queens/

OpenStack对应的yum文件:

[local-ftp-cloud-queens]
name=local-ftp-cloud-queens
baseurl=ftp://192.168.144.10/cloud/openstack-queens
gpgcheck=0
enabled=1

整体ftp源文件:

这里面包含了上面所列举的所有源,epel、zabbix、mysql、OpenStack,其中mysql因为有三个版本5.6 5.7 8.0所以我默认只是开启了5.7版本的,其他都是关闭的,

cat /etc/yum.repos.d/ftp.repo
[local-ftp-centos7]
name=local-ftp-centos7
baseurl=ftp://192.168.144.10/centos7
gpgcheck=0
enabled=1
gpgkey=ftp://192.168.144.10/centos7/RPM-GPG-KEY-CentOS-7

[local-ftp-epel]
name=local-ftp-epel
baseurl=ftp://192.168.144.10/epel
gpgcheck=0
enabled=1

[local-ftp-zabbix]
name=local-ftp-zabbix
baseurl=ftp://192.168.144.10/zabbix
gpgcheck=0
enabled=1

[local-ftp-mysql56]
name=local-ftp-mysql56
baseurl=ftp://192.168.144.10/mysql/mysql-5.6-community-el7-x86_64
gpgcheck=0
enabled=0

[local-ftp-mysql57]
name=local-ftp-mysql57
baseurl=ftp://192.168.144.10/mysql/mysql-5.7-community-el7-x86_64
gpgcheck=0
enabled=1

[local-ftp-mysql80]
name=local-ftp-mysql80
baseurl=ftp://192.168.144.10/mysql/mysql-8.0-community-el7-x86_64
gpgcheck=0
enabled=0

[local-ftp-mysql-connect]
name=local-ftp-mysql-connect
baseurl=ftp://192.168.144.10/mysql/mysql-connectors-community-el7-x86_64
gpgcheck=0
enabled=1

[local-ftp-mysql-tools]
name=local-ftp-mysql-tools
baseurl=ftp://192.168.144.10/mysql/mysql-tools-community-el7-x86_64
gpgcheck=0
enabled=1

[local-ftp-cloud-queens]
name=local-ftp-cloud-queens
baseurl=ftp://192.168.144.10/cloud/openstack-queens
gpgcheck=0
enabled=1

查看可用yum源:

[root@vlinx144010 ~]# yum makecache 
Loaded plugins: fastestmirror
local-ftp-centos7                                                      | 3.6 kB  00:00:00     
local-ftp-cloud-queens                                                 | 3.0 kB  00:00:00     
local-ftp-epel                                                         | 2.9 kB  00:00:00     
local-ftp-mysql-connect                                                | 2.9 kB  00:00:00     
local-ftp-mysql-tools                                                  | 2.9 kB  00:00:00     
local-ftp-mysql57                                                      | 2.9 kB  00:00:00     
local-ftp-zabbix                                                       | 2.9 kB  00:00:00     
Loading mirror speeds from cached hostfile
Metadata Cache Created
[root@vlinx144010 ~]# 
[root@vlinx144010 ~]# 
[root@vlinx144010 ~]# yum repolist 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                     repo name                                   status
local-ftp-centos7                           local-ftp-centos7                            9,591
local-ftp-cloud-queens                      local-ftp-cloud-queens                       3,109
local-ftp-epel                              local-ftp-epel                              13,494
local-ftp-mysql-connect                     local-ftp-mysql-connect                        175
local-ftp-mysql-tools                       local-ftp-mysql-tools                          119
local-ftp-mysql57                           local-ftp-mysql57                              464
local-ftp-zabbix                            local-ftp-zabbix                                31
repolist: 26,983

在这里插入图片描述

下载的软件目录结果
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐