一、 写作背景
公司内网开发测试、IDC 机房均需要大量安装 Linux 类系统,手动一台一台安装,繁琐复杂,而且极易出错,工作量大,007 都有可能,故需采用自动化安装方式,一次调整,到处使用。
在本地搭建Repos源,可以大量节省网络带宽,加快系统安装,还可以自定义一些软件的安装,可以通过命令行添加,或通过WEB添加。
这里主要以Redhat家族的YUM源为例。其它源添加方式类似。
二、 环境准备
1、Centos7系统:CentOS7系统安装
2、Cobbler系统 :搭建Cobbler服务安装Linux系统
3、各镜像站的Repos源地址:阿里云镜像源、 清华大学镜像源 等
三、 软件安装
有些源可以直接使用 cobbler reposync
命令同步YUM源,有些需要使用 reposync
命令。使用 cobbler reposync
可以自动生成 repo
文件,reposync
需要手动生成 repo
故需要安装 createrepo
yum -y install createrepo
四、YUM源配置
4.1 使用命令行方式
# 如添加 Centos 的 Base 源(使用阿里云的镜像源)则使用 add 命令,其它类似。
cobbler repo add --name=CentOS7.2-x86_64-Base --mirror=https://mirrors.aliyun.com/centos/7/os/x86_64/
# 如果添加后有些地方需要修改,则使用 edit 命令
cobbler repo edit --name=centos7.2-x86_64-base --mirror=https://mirrors.aliyun.com/centos/7/os/x86_64/ --arch=x86_64 --breed=yum
# 移除 Repo 使用 remove 命令
cobbler repo remove --name=centos7.2-x86_64-base
# 查看 repo 使用 LIst 命令
cobbler repo list
# 其它功能请使用 cobbler repo --help 查看。
4.2 使用Web管理方式
在Configuration项目中找到 Repos 项目,然后根据提示填写相关项目。
在 mirror 中填写 YUM 源的地址,如果有固定来源,比如来自阿里云的镜像源,则选中 Keep Update 项,以保证在执行 cobbler reposync
时可以自动同步。如果是自定义源,则不要选中。
其它选项可以不写。
4.3 YUM 源查找方式
同步YUM源最主要的是查找到对的YUM源,如果需要在各镜像源网站查找,最好的办法就是按照镜像源网站指定的方式,安装一下他们的Reop文件,然后从Repo文件中提取需要的信息。
4.3.1 常规源
各大镜像站都有,可以根据访问速度,优先选用。清华大学镜像源,中科大镜像源,北京理工大学镜像源,这几个学校镜像源,资源丰富,更新速度也快。阿里云镜像源等企业镜像源,访问速度快。总体来说,这些镜像源满足了日常工作所需。
这里以Centos7的阿里云源为例,首先到阿里云镜像站上下载 Repo 文件,然后查看该 Repo 文件。
按照目录树的分布方式,我将 Centos 等常见的源称为常规源,其目录结构大多为repodata目录和Package目录在同一目录下,或者repodata目录和rpm文件在同一目录下,如下所示:
# wget https://mirrors.aliyun.com/repo/Centos-7.repo
# cat Centos-7.repo
下面就是阿里云的YUM源配置,其中releasever 是指当前系统的版本号,可以通过 `cat /etc/redhat-release` 查看,basearch 是指当前系统的架构(64位系统或32位系统),可以通过 uname -p
查看。
其中 [base] 就是我们需要的Repo名称,baseurl 后面的地址就是我们需要的 repo 地址,因为是搭建内部本地源,所以gpg验证之类的可以忽略。
同样的方式找到其它源的地址进行添加。
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
4.3.2 特殊源添加
有一些Repo源的repodata和Package目录不在一起,同步时略有问题,所以此类源需要单独对待,如Kubernetes源,它的Package目录在repodata的上三级目录中,所以同步时会出现问题。这类源在添加时就不能选中 Keep Update 项,需要手动更新了。
4.3.3 自定义源添加
众所周知,Centos中所使用的 jdk 是Openjdk,而有些开发使用的是 oracle jdk 需要在系统中安装 对应版本,这类软件在常规的YUM源中不太好操作,这里我们把它们做成自定义YUM源,操作方式如下:
# 首先在repo源的主目录下添加一个软件目录用于存放这类软件和相应的repodata文件。Cobbler系统中Repo源的目录是 /var/www/cobbler/repo_mirror/
mkdir -p /var/www/cobbler/repo_mirror/othet-soft/Package
# 然后将软件存放到这个目录下,软件最好采用官网上的名称,比如oracle jdk 的名称是: jdk-8u221-linux-x64.rpm ,保持这个名称不变。
mv /root/jdk-8u221-linux-x64.rpm /var/www/cobbler/repo_mirror/othet-soft/Package/
# 再执行 createrepo 命令生成 repodata 文件
createrepo /var/www/cobbler/repo_mirror/other-soft
# 最后为了在Cobbler 系统中使用,需要一个config.repo文件,从其它由Cobbler reposync命令生成的源中复制一份,然后修改一下就行。
cp /var/www/cobbler/repo_mirror/centos7-base/config.repo /var/www/cobbler/repo_mirror/other-soft/config.repo
vim /var/www/cobbler/repo_mirror/other-soft/config.repo
# 修改为以下内容
[other-soft]
name=other-soft
baseurl=http://${http_server}/cobbler/repo_mirror/other-soft
enabled=1
priority=99
gpgcheck=0
五、 同步YUM源
5.1 常规源
常规源在添加时选中 Keep Update 项,然后可以在网页上点击执行 cobbler reposync
,不过这里建议在终端执行命令,可以看到同步过程。
# 执行全部更新,
cobbler reposync [--tries=N] [--no-fail]
# 同步指定源
cobbler reposync --only=centos7-base
5.2 同步特殊源
添加源名称、地址后,不要选中 Keep Update 项,然后使用 reposync
更新
# 先将指定源的repo文件放到 /etc/yum.repos.d/ 目录下, 更新yum源
mv kubernetes.repo /etc/yum.repos.d/kubernetes.repo
yum clean all
yum makecache
# 查看repolist
yum repolist
# 再执行 reposync 命令,同步源
reposync -n --repoid=kubernetes -p /var/www/cobbler/repo_mirror/ --allow-path-traversal
# 最后执行 createrepo 命令,并生成config.repo文件
createrepo /var/www/cobbler/repo_mirror/kubernetes/
cat /var/www/cobbler/repo_mirror/kubernetes/config.repo
[kubernetes]
name=kubernetes
baseurl=http://${http_server}/cobbler/repo_mirror/kubernetes
enabled=1
priority=99
gpgcheck=0
5.3 自定义源
参见4.3.3,每次添加新软件,就执行一次。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 long@longger.xin