CentOS 7 构建本地YUM源

王哥哥 Linux 3,959 次浏览 没有评论

说明

我们现在每次新装Dell服务器的时候要从DELL网站上下载OMSA这些东西,但是现在下载速度真鸡巴慢,所以就我们自己本地弄一套YUM源,以后速度就快了。

我们使用reposync来和公网yum源同步。

机器名

配置

IP

yum-srv 2c/4G/300G 10.0.101.17

分区信息

系统初始化

关闭selinux

vi /etc/selinux/config

permissive

setenforce 0

getenforce

安装一些服务

yum -y install wget deltarpm

关闭防火墙

systemctl disable firewalld

systemctl stop firewalld

安装ntp

yum -y install ntp

vi /etc/ntp.conf

server 192.168.77.249 prefer

server 192.168.77.250 prefer

systemctl start ntpd.service

systemctl enable ntpd.service

ntpdate -u 192.168.77.250

ntpdate -d 192.168.77.250

添加下网易的yum源

cd /etc/yum.repos.d/

mkdir old

mv CentOS-* old/

wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

添加epel源

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

添加Dell的源

curl -s https://linux.dell.com/repo/hardware/dsu/bootstrap.cgi | bash

然后我们可以看到我们已经把这些我们需要的源加进去了。

Dell的源我们要编辑下,上面一段会下载固件的更新,这个是我们不需要的,所以注销掉

安装配置Apache服务

yum install httpd -y

使用默认配置即可,如果有特殊需求可以修改配置文件/etc/httpd/conf/httpd.conf

http默认家目录/var/www/html

删除welcome配置,达到访问服务器地址直接现实站点根目录

mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak

开启httpd服务

systemctl restart httpd

systemctl enable httpd

安装yum-utils提供reposync服务

yum install yum-utils createrepo -y

选择指定仓库标识作为本地yum源

 执行yum repolist命令查看yum仓库标识

同步源

添加多个同步,用/var/www/html作为yum仓库根目录

reposync -n epel -p /var/www/html/epel

reposync -n extras -p /var/www/html

reposync -n base -p /var/www/html

reposync -n updates -p /var/www/html

reposync -n dell-system-update_dependent/7/x86_64 -p /var/www/html

reposync -n dell-system-update_independent -p /var/www/html

命令执行完毕后,会将公网中的源同步到本地/var/www/html中;在/var/www/html中自动创建目录用于存放rpm包;第一次同步时间肯定很长。

Reposync参数说明

       -h, –help              显示帮助

       -c CONFIG, –config=CONFIG              Config file to use (defaults to /etc/yum.conf).

       -a ARCH, –arch=ARCH              按照指定的arch执行, 默认是当前机器的arch

       –source              也同步src.rpm包

       -r REPOID, –repoid=REPOID              同步远程的repo ID. 默认是所有enable的repo

       -e CACHEDIR, –cachedir CACHEDIR              执行存储metadata的目录

       -t, –tempcache              使用一个临时目录存储yum-cache

       -d, –delete              删除远程仓库不存在的本地包

       -p DESTDIR, –download_path=DESTDIR             下载包的存储目录, 默认是当前目录

       –norepopath              不在本地增加名为远程repo ID的目录. 只download一个repo的时候使用. 默认是增加目录

       -g, –gpgcheck              删除package如果GPGkey检查失败.

              可以使用rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 或者yum install package 来避免

       -u, –urls              只显示下载的url, 不下载

       -l, –plugins              Enable yum plugin support.

       -m, –downloadcomps              Also download comps.xml.

       -n, –newest-only              直下载最新的package, 一个包有多个版本在一个仓库中, 可以只选择下载最新的packages

       -q, –quiet              最简输出.

创建仓库

createrepo 命令用于创建yum源(软件仓库),即为存放于本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据。

createrepo -pdo /var/www/html/epel /var/www/html/epel/

createrepo -pdo /var/www/html/base /var/www/html/base

createrepo -pdo /var/www/html/extras /var/www/html/extras

createrepo -pdo /var/www/html/updates /var/www/html/updates

createrepo -pdo /var/www/html/dell-system-update_dependent /var/www/html/dell-system-update_dependent

软件多的话牛慢

#第一个目录是repodata存放目录,第二个目录是需要生成索引信息yum源仓库目录

createrepo参数选项说明

-u –baseurl <url>

指定Base URL的地址

-o –outputdir <url>

指定元数据的输出位置

-x –excludes <packages>

指定在形成元数据时需要排除的包

-i –pkglist <filename>

指定一个文件,该文件内的包信息将被包含在即将生成的元数据中,格式为每个包信息独占一行,不含通配符、正则,以及范围表达式。

-n –includepkg

通过命令行指定要纳入本地库中的包信息,需要提供URL或本地路径。

-q –quiet

安静模式执行操作,不输出任何信息。

-g –groupfile <groupfile>

指定本地软件仓库的组划分,范例如下:

createrepo -g comps.xml /path/to/rpms

注意:组文件需要和rpm包放置于同一路径下。

-v –verbose

输出详细信息。

-c –cachedir <path>

指定一个目录,用作存放软件仓库中软件包的校验和信息。

当createrepo在未发生明显改变的相同仓库文件上持续多次运行时,指定cachedir会明显提高其性能。

–update

如果元数据已经存在,且软件仓库中只有部分软件发生了改变或增减,

则可用update参数直接对原有元数据进行升级,效率比重新分析rpm包依赖并生成新的元数据要高很多。

-p –pretty

以整洁的格式输出xml文件。

-d –database

该选项指定使用SQLite来存储生成的元数据,默认项。

定时同步任务

设置每天定时更新脚本 update.sh

vi /usr/local/yum-update.sh

#!/bin/bash

echo 开始同步

reposync -n epel -p /var/www/html/epel

reposync -n extras -p /var/www/html

reposync -n base -p /var/www/html

reposync -n updates -p /var/www/html

reposync -n dell-system-update_dependent/7/x86_64 -p /var/www/html

echo 同步结束

#更新元数据

createrepo –update /var/www/html/epel

createrepo –update /var/www/html/centos/7/base

createrepo –update /var/www/html/centos/7/extras

createrepo –update /var/www/html/centos/7/updates

createrepo –update /var/www/html/var/www/html/dell-system-update_dependent

添加执行权限

chmod +x /usr/local/yum-update.sh

crontab -e 添加定时任务

每天凌晨1点同步yum源

crontab -e

0 1 * * * 1-7 /usr/local/yum-update.sh

客户端配置

用户端/etc/yum.repos.d/eju.repo文件修改

vi /etc/yum.repos.d/eju.repo

[base]

name=CentOS-Base

baseurl=http://10.0.101.18/base

path=/

enabled=1

gpgcheck=0

[updates]

name=CentOS-Updates

baseurl=http://10.0.101.18/updates

path=/

enabled=1

gpgcheck=0

[extras]

name=CentOS-Extras

baseurl=http://10.0.101.18/extras

path=/

enabled=1

gpgcheck=0

[epel]

name=epel

baseurl=http://10.0.101.18/epel

path=/

enabled=1

gpgcheck=0

[dell-system-update_dependent]

name=dell-system-update_dependent

baseurl=http://10.0.101.18/dell-system-update_dependent

path=/

enabled=1

gpgcheck=0

发表回复

Go