本文服务器IP:10.10.16.80
修改yum源为阿里源
rm -rf /etc/yum.repos.d/*
yum-config-manager --add-repo http://10.10.16.80/centos/alirepo/Centos-7.repo
yum-config-manager --add-repo http://10.10.16.80/centos/alirepo/epel-7.repo
创建缓存
yum clean all
yum makecache
安装相关软件
- yum-utils reposync同步工具
- createrepo 编辑yum库工具
yum install wget gcc* createrepo yum-utils -y
命令详解
- reposync命令详解
本文档,我们只用到了-p和-n,单独下载哪个yum源,使用-r --repoid
Options:
-h, --help 显示此帮助消息并退出
-c CONFIG, --config=CONFIG
要使用的配置文件(默认为/etc/yum.conf)
-a ARCH, --arch=ARCH 像运行指定的arch一样(默认值:current
arch,注意:不会覆盖$ releasever。 x86_64是一个
i * 86的超集。)
--source 在源包上运行
-r REPOID, --repoid=REPOID
指定repo id来查询,可以指定多个次(默认全部启用)
-e CACHEDIR, --cachedir=CACHEDIR 用于存储元数据的目录
-t, --tempcache 使用临时目录存储/访问yum-cache
-d, --delete 删除存储库中不再存在的本地包
-p DESTDIR, --download_path=DESTDIR 下载包的路径:默认为当前目录
--norepopath 不要将reponame添加到下载路径。只可以
在同步单个存储库时使用(默认为
添加reponame)
-g, --gpgcheck 删除未通过GPG签名检查的软件包
-u, --urls 只列出要下载的URL,不要下载
-n, --newest-only 仅下载per-repo的最新软件包
-q, --quiet 尽可能少地输出
-l, --plugins 启用yum插件支持
-m, --downloadcomps 下载comps.xml
--download-metadata 下载所有非默认元数据
--allow-path-traversal
允许存储在其repo目录之外的包
同步(UNSAFE,小心使用!)
- createrepo命令详解
createrepo用以创建yum源(软件仓库),即为存放于本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据。
基本语法:createrepo [option]
常用参数详解
-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来存储生成的元数据,默认项。
创建本地目录
我规划的目录为/mirror/centos/7
mkdir -p /mirror/centos/7
#同步所有yum源到本地目录
reposync -p /mirror/centos/7
#补充,如果后面增加了什么yum源,可单独更新,如,单独更新base
reposync -r base -p /mirror/centos/7
#注:系统自动创建相关目录,并下载,时间较长请耐心等待。可以用 -r --repoid=repoid指定要查询的repo id,可以指定多个更新新的rpm包
全部下载完成后,创建索引
createrepo -po /mirror/centos/7/base/ /mirror/centos/7/base/
createrepo -po /mirror/centos/7/extras/ /mirror/centos/7/extras/
createrepo -po /mirror/centos/7/updates/ /mirror/centos/7/updates/
createrepo -po /mirror/centos/7/epel/ /mirror/centos/7/updates/
以后更新,加上-n参数,只下载最新的软件包
reposync -np /mirror/centos/7
更新完成后,还需要更新索引
createrepo --update /mirror/centos/7/base
createrepo --update /mirror/centos/7/extras
createrepo --update /mirror/centos/7/updates
createrepo --update /mirror/centos/7/epel
创建定时任务脚本
先创建对应目录/var/log/hbgg_yumlog
脚本如下:
vim /opt/script/centos_yum_update.sh
#!/bin/bash
DATE=$(date +%F)
LogFile=/var/log/hbgg_yumlog/yumrepo_${DATE}.log
function log_error() {
echo -e "\033[31m [ERROR] $@ \033[0m"
echo "ERROR $@" >> $LogFile
}
function log_info() {
echo -e "\033[32m [INFO] $@ \033[0m"
echo "INFO $@" >> $LogFile
}
function log_warn() {
echo -e "\033[33m [WARN] $@ \033[0m"
echo "WARN $@" >> $LogFile
}
log_info "${DATE} 正在同步..."
reposync -np /mirror/centos/7 &>/dev/null
if [ $? -eq 0 ];then
createrepo --update /mirror/centos/7/base
createrepo --update /mirror/centos/7/extras
createrepo --update /mirror/centos/7/updates
createrepo --update /mirror/centos/7/epel
log_info "${DATE} aliyum_yum update successful"
else
log_error "${DATE} aliyum_yum update failed"
fi
将脚本赋予执行权限,chmod +x
,加入定时任务,crontab -e
0 0 * * 7 /opt/script/centos_yum_update.sh
安装nginx
安装nginx开启目录权限保证本地机器可以直接本地yum源
yum install nginx -y
#找到nginx配置文件,并参考下文修改nginx配置文件:
vim nginx.conf
server {
listen 80;
server_name localhost;
root /mirror; # 这里是yum源存放目录
location / {
autoindex on; # 打开目录浏览功能
autoindex_exact_size off; # on、off:以可读的方式显示文件大小
autoindex_localtime on; # on、off:是否以服务器的文件时间作为显示的时间
charset utf-8,gbk; # 展示中文文件名
index index.html;
}
}
客户端yum源
写法参考阿里源,基本一样,根据自己的目录结构自行调整。
[base]
name=CentOS-7-Base-hbgg
baseurl=http://10.10.16.80/centos/7/base/
gpgcheck=1
gpgkey=http://10.10.16.80/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-7-updates-hbgg
baseurl=http://10.10.16.80/centos/7/updates/
gpgcheck=1
gpgkey=http://10.10.16.80/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-7-extras-hbgg
baseurl=http://10.10.16.80/centos/7/extras/
gpgcheck=1
gpgkey=http://10.10.16.80/centos/RPM-GPG-KEY-CentOS-7
[epel]
name=CentOS-7-epel-hbgg
baseurl=http://10.10.16.80/centos/7/epel/
gpgcheck=1
gpgkey=http://10.10.16.80/centos/RPM-GPG-KEY-EPEL-7
完成。