很多公司企业为了网络安全都建立了自己的内部网络,内部网络不与Internet相通,导致很多开源软件,系统rpm包,deb包安装都异常复杂,而且如果依赖关系复杂,通过手动上传rpm包或者deb包就更加麻烦,经常碰到连gcc都需要安装半天的情景。所以为了能使用centos,redhat和Ubuntu官方包管理软件yum和apt,需要在内网中将公网上的包下载下来,并制作成自己的yum源和apt源。本文以Ubuntu系统作为yum源,apt源的部署系统来介绍如何搭建。
CentOS、Redhat源搭建
CentOS和Redhat多数的包是可以通用的,另外还有版本的区别,比如CentOS 6.x 和CentOS 7.x的就不能通用,在rpm包名上一般都会注明el6或者el7。
搭建yum源一个很快很有效的方式就是直接拿光盘来做yum源,redhat的发行版光盘可以直接拿来用,centos的光盘有minimal,online,普通版和everyThing版,其中普通版和EveryThing版都可以拿来搭建,其中普通版4GB左右,EveryThing版8GB左右,推荐EveryThing版。
如果系统盘只有一张CD,那直接挂载就可以使用,如果是两张CD,如CentOS6.x ,就需要把光盘的内容拷贝到硬盘上然后再搭建。
这里以Redhat 7光盘为例,介绍如何建设
1、首先我们把光盘插入光驱,或者将iso镜像文件拷贝到磁盘上,然后挂载
光盘挂载方法:
首先新建一个目录,命名为rhel7,然后使用mount挂载光驱设备
mkdir rhel7
mount -t auto /dev/sr0 ./rhel7
我的虚拟机有多个光驱,所以再把CentOS的光盘也挂载上,如下
mkdir centos7
mount -t auto /dev/sr2 ./centos7/
ISO镜像文件挂载方法:
与光驱挂载类似,只是把设备换成.iso文件即可
mkdir centos6
mount -o loop ./CentOS-6.10-x86_64-bin-DVD1.iso ./centos6
注意,对于Centos6这种有两张CD的,一般是把两张CD挂载上之后,把文件都拷贝到本地的同一个文件夹里,即合成一张光盘,因为CD2里基本都是rpm包,如果只挂载一个会不全。
有了rpm文件之后,我们就可以直接利用了,此时我们需要搭建一个HTTP服务器,网上大多教程都是建立apache服务器,可是我觉得apache服务器太过于臃肿,而Caddy服务器可以只需一个文件一行命令就开启HTTP服务,非常方便十分推荐。
首先观察一下CentOS 7 EveryThing版光盘里的内容
-rw-rw-r--. 1 root root 14 Nov 26 00:01 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 Nov 26 00:20 EFI
-rw-rw-r--. 1 root root 227 Aug 30 2017 EULA
-rw-rw-r--. 1 root root 18009 Dec 10 2015 GPL
drwxr-xr-x. 3 root root 2048 Nov 26 00:21 images
drwxr-xr-x. 2 root root 2048 Nov 26 00:20 isolinux
drwxr-xr-x. 2 root root 2048 Nov 26 00:20 LiveOS
drwxrwxr-x. 2 root root 1656832 Nov 25 23:58 Packages
drwxrwxr-x. 2 root root 4096 Nov 26 22:21 repodata
-rw-rw-r--. 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2883 Nov 26 22:22 TRANS.TBL
我们可以看到repodata是直接在光盘根目录下的,repodata目录在哪,我们的客户端URL就应该指向哪里,且这个repodata必须能被HTTP服务访问到。
于是我们在当前目录下(centos7)的上级目录开启caddy,这里要注意,要先cd到这个上级目录,caddy启动后的/就是当前目录了
caddy -port 8080
就是如此简单,一个yum源就搭建好了,因为我们只需要caddy作为文件服务器使用,所以根本无需任何繁琐的配置,指定一个端口就好了。此时我们到需要安装rpm包的机器上面修改它的配置文件指向这台yum源服务器即可。
即修改其他设备的/etc/yum.repos.d/目录下的文件,redhat和CentOS配置都是一样的,先把原先该目录的文件全都删掉,反正我们不连接Internet也用不上,留着还会导致报错&#