自建企业内部yum及apt本地源库(更新ceph、docker源)

2020/3/25更新:
YUM源更新本地ceph源

1
rsync -vzP -rtDl --delete rsync://mirrors.ustc.edu.cn/ceph/rpm-nautilus/ /mnt/HDD/ceph/rpm-nautilus/

添加软链接

1
ln -s /mnt/HDD/ceph/ /var/www/html/ceph

编辑repo文件
ceph.repo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[Ceph]
name=Ceph packages
baseurl=http://xxx.xxx.xxx.xxx/ceph/rpm-nautilus/el7/x86_64
enabled=1
priority=1
gpgcheck=0

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://xxx.xxx.xxx.xxx/ceph/rpm-nautilus/el7/noarch
enabled=1
priority=1
gpgcheck=0

[ceph-source]
name=Ceph source packages
baseurl=http://xxx.xxx.xxx.xxx/ceph/rpm-nautilus/el7/SRPMS
enabled=1
priority=1
gpgcheck=0
#gpgkey=https://download.ceph.com/keys/release.asc

2020/2/13更新:

最近把Docker-server也本地化,发现用本地YUM库会存在有些部件存在版本不够新的问题。导致docker-ce安装失败,所以自己研究了一下yum的repo文件。发现其实cenots除了用到OS这个外还有用到centosplus,extras,updates这三个文件夹,所以也需要将这三个文件夹也rsync到本地YUM库里。费话不多说,下面是步骤:

先用rsync把镜像源拉到本地

1
2
3
4
5
6
7
rsync -vzP -rtDl --delete rsync://mirrors.ustc.edu.cn/centos/7/os/x86_64/ /mnt/HDD/centos7.7/os/x86_64/
rsync -vzP -rtDl --delete rsync://mirrors.ustc.edu.cn/centos/7/updates/x86_64/ /mnt/HDD/centos7.7/updates/x86_64/
rsync -vzP -rtDl --delete rsync://mirrors.ustc.edu.cn/centos/7/extras/x86_64/ /mnt/HDD/centos7.7/extras/x86_64/
rsync -vzP -rtDl --delete rsync://mirrors.ustc.edu.cn/centos/7/centosplus/x86_64/ /mnt/HDD/centos7.7/centosplus/x86_64/
rsync -vzP -rtDl --delete rsync://mirrors.ustc.edu.cn/fedora-epel/7/x86_64/ /mnt/HDD/epel7/x86_64/
rsync -vzP -rtDl --delete rsync://mirrors.ustc.edu.cn/fedora-epel/7/SRPMS/ /mnt/HDD/epel7/SRPMS/
rsync -vzP -rtDl --delete rsync://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/ /mnt/HDD/docker-ce/

编辑repo文件
centos7.repo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[Base]
name=CentOS-$releasever - Base - local
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://xxx.xxx.xxx.xxx/centos/7/os/x86_64/
gpgcheck=1
gpgkey=http://xxx.xxx.xxx.xxx/centos/7/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates - local
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://xxx.xxx.xxx.xxx/centos/7/updates/x86_64/
gpgcheck=1
gpgkey=http://xxx.xxx.xxx.xxx/centos/7/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - local
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://xxx.xxx.xxx.xxx/centos/7/extras/$basearch/
gpgcheck=1
gpgkey=http://xxx.xxx.xxx.xxx/centos/7/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - local
baseurl=http://xxx.xxx.xxx.xxx/centos/7/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://xxx.xxx.xxx.xxx/centos/7/RPM-GPG-KEY-CentOS-7

epel7.repo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[centos_local_epel7]
name=centos-local-epel7
baseurl="http://xxx.xxx.xxx.xxx/epel7/x86_64"
gpgcheck=1
enable=1
gpgkey="http://xxx.xxx.xxx.xxx/epel7/RPM-GPG-KEY-EPEL-7"

[epel-debuginfo]
name=centos-local-Extra Packages - Debug
baseurl="http://xxx.xxx.xxx.xxx/epel7/x86_64/debug"
gpgcheck=1
enable=1
gpgkey="http://xxx.xxx.xxx.xxx/epel7/RPM-GPG-KEY-EPEL-7"


[epel-source]
name=centos-local-Extra Packages - Source
baseurl="http://xxx.xxx.xxx.xxx/epel7/SRPMS"
gpgcheck=1
enable=1
gpgkey="http://xxx.xxx.xxx.xxx/epel7/RPM-GPG-KEY-EPEL-7"

docker-ce.repo

1
2
3
4
5
6
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=http://xxx.xxx.xxx.xxx/docker-ce
enabled=1
gpgcheck=0
#gpgkey=https://download.docker.com/linux/centos/gpg

将上面的repo文件放到/etc/yum.repo.d运行

1
2
3
yum clean all
yum makecache
yum update

下面就可以用本地库安装Docker-ce了,不会有任何报错了。

1
yum install docker-ce


公司企业为了网络安全都建立了自己的内部网络,内部网络不与Internet相通,导致很多开源软件,系统rpm包,deb包安装都异常复杂,而且如果依赖关系复杂,通过手动上传rpm包或者deb包就更加麻烦,经常碰到连gcc都需要安装半天的情景。所以为了能使用centos,redhat和Ubuntu官方包管理软件yum和apt,需要在内网中将公网上的包下载下来,并制作成自己的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 ,就需要把光盘的内容拷贝到硬盘上然后再搭建。

首先把光盘插入光驱,然后挂载到本地

挂载方法:

1
2
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom

安装Web服务

1.本地正确依赖包安装顺序如下:

1
2
3
4
5
6
cd /mnt/cdrom/Packages
rpm -ivh mailcap-2.1.41-2.el7.noarch.rpm
rpm -ivh apr-1.4.8-3.el7.x86_64.rpm
rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm
rpm -ivh httpd-tools-2.4.6-45.el7.centos.x86_64.rpm
rpm -ivh httpd-2.4.6-45.el7.centos.x86_64.rpm

安装顺序这个一定要注意。
2.创建httpd目录

1
mkdir -p /var/www/html/centos7

3.将安装包复制到刚创建的httpd目录

1
cp -r /mnt/cdrom /var/www/html/centos7

或者直接将cdrom直接挂载到/var/www/html/centos7

1
mount /dev/cdrom /var/www/html/centos7

4.在/etc/yum.repos.d/创建centos7.repo文件

1
2
3
4
5
6
7
8
tee /etc/yum.repos.d/centos7.repo <<-'EOF'
[centos_local]
name=centos-local
baseurl=http://192.168.12.100/centos7 #这里的IP改成你自己的IP
gpgcheck=0
enable=1
gpgkey=http://192.168.12.100/centos7/RPM-GPG-KEY-EPEL-7
EOF

将上面整段复制执行。
5.清除缓存

1
yum clean all

启动web服务

1
2
systemctl start httpd
systemctl enable httpd

自此服务器端搭建完成

客户端使用本地源服务器

首先将192.168.12.100这台机器上centos7.repo分发过去,在同样的目录下。

1
scp XXX@192.168.12.100:/etc/yum.repos.d/centos7.repo /etc/yum.repos.d/centos7.repo

执行

1
2
yum clean all
yum makecache

就可以在本地使用Centos7的本地源库了。

EPEL源搭建

首先保证你的yum服务器有足够的空间。epel6大小约为24GB,epel7的大小约为27GB,epel源无法使用光盘了,需要使用rsync工具去internet上同步,同步命令如下

1
2
3
4
5
6
7
mkdir /mnt/yum.repo/epel6
mkdir /mnt/yum.repo/epel7
mkdir /mnt/yum.repo/centos7
ln -s /mnt/yum.repo/* /var/www/html
rsync -vzP -rtDl --delete rsync://mirrors.ustc.edu.cn/fedora-epel/6/x86_64/ /mnt/yum.repo/epel6/
rsync -vzP -rtDl --delete rsync://mirrors.ustc.edu.cn/fedora-epel/7/x86_64/ /mnt/yum.repo/epel7/
rsync -vzP -rtDl --delete rsync://mirrors.ustc.edu.cn/centos/7/os/x86_64/ /mnt/yum.repo/centos7/

等同步完成后,建立一个epel.repo来指向他。

1
2
3
4
5
6
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://192.168.12.100/epel7/
failovermethod=priority
enabled=1
gpgcheck=0

如果你获得不了GPG签名文件(一般没有),gpgcheck就设置为0。

APT源搭建

安装apt-mirror

1
apt-get install apt-mirros

配置apt-mirror

/etc/apt/mirros.list文件修改成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
############# config ##################
#
# set base_path /var/spool/apt-mirror
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads 20
set _tilde 0
#
############# end config ##############

deb http://mirrors.163.com/debian/ stretch main non-free contrib
deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib

拖库

1
apt-mirror

将从debian拖下来的文件放到centos的httpd目录下。

1
2
mkdir /var/www/html/debian
ln -s /var/spool/apt-mirror/mirror/mirrors.163.com/debian /var/www/html/debian

使用本地库

编辑sources.list文件

1
vim /etc/apt/sources.list

将文件指向改为本地源

1
2
3
4
5
6
7
#deb http://mirrors.163.com/debian/ stretch main non-free contrib
#deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib
#deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib

deb http://192.168.12.100/debian/ stretch main non-free contrib
deb http://192.168.12.100/debian/ stretch-updates main non-free contrib
deb-src http://192.168.12.100/debian/ stretch main non-free contrib

更新本地配置

1
2
apt-get update
apt-get install 软件包名

自此全部完成!


-------------本文结束 感谢您的阅读-------------
-------------如果觉得这篇文章不错,可以请作者喝杯咖啡!-------------