YUM 本地源默认只能本机使用,局域网其他服务器无法使用 YUM 光盘源,如果想使用的话,需要在每台服务器上构建 YUM 本地源,所以需要构建 HTTP 局域网 YUM 源解决,可以通过 CreateRepo 创建本地 YUM 源端,repo 即为 Repository。
目录:
1. 基于 HTTP 构建 YUM 网络源 2. YUM 源端软件包扩展
3. 同步外网 YUM 源
基于 HTTP 构建 YUM 网络源
步骤:
- 挂载光盘镜像文件至/mnt
mount /dev/cdrom /mnt/
- 拷贝/mnt/Packages 目录下所有软件包至/var/www/html/centos/
mkdir -p /var/www/html/centos/
cp -R /mnt/Packages/* /var/www/html/centos/
- 使用 Createrepo 创建本地源,执行如下命令会在 Centos 目录生成 repodata 目录
yum install createrepo* -y
cd /var/www/html
createrepo centos/
生成的repodata目录内容
[root@localhost repodata]# ls
318c9ea8899e2f554cebed8055428d09a1618da9018e596f3af7b73f04caac8e-primary.xml.gz
889867557baca0aa02d00feaeaf63d48f27505015687fc1ecb1e9ffa34c5ff6e-primary.sqlite.bz2
d683b9a986e59a7b0347c34b28137c89611b4013d1f569f22e79f014e83bfb74-other.sqlite.bz2 repomd.xml
65666f9c4ae025e8363f203bc436b6f8810ca6eeb92a9674945e9401846f400b-filelists.xml.gz
9df0dccbf380d7af65397d20846942062c7e270dd81a6c36824dd360caad464f-filelists.sqlite.bz2
ef04b6dc0b5b437bed9e05a44e5f9978d62781d640ebcf09dc4098a806c774fd-other.xml.gz
- 利用 HTTP 发布 YUM 本地源
本地 YUM 源通过 CreateRepo 搭建完毕, 需要借助 HTTP WEB 服务器发布
/var/www/html/centos/中所有软件,YUM 或者 RPM 安装 HTTP WEB 服务器,并启动 httpd服务
yum install httpd httpd-devel -y 安装 HTTP WEB 服务;
useradd apache -g apache 创建 apache 用户和组; # yum 安装自动创建
systemctl restart httpd.service 重启 HTTPD 服务;
setenforce 0 临时关闭 SeLinux 应用级安全策略;
systemctl stop firewalld.service 停止防火墙;
ps -ef |grep httpd 查看 HTTPD 进程是否启动
- 在 YUM 客户端,创建/etc/yum.repos.d/http.repo 文件,写入如下内容
[base]
name="CentOS7 HTTP YUM"
baseurl=http://172.31.1.202/centos/
gpgcheck=0
enabled=1
[updates]
name="CentOS7 HTTP YUM"
baseurl=http://172.31.1.202/centos
gpgcheck=0
enabled=1
- 在 YUM 客户端上执行如下命令
yum clean all 清空 YUM Cache;
yum install memcached -y 安装 MEMCACHED 软件
执行成功如下
回到目录
YUM 源端软件包扩展
默认使用 ISO 镜像文件中的软件包构建的 HTTP YUM 源,会发现缺少很多软件包,如果服务器需要挂载移动硬盘,Mount 挂载移动硬盘需要 ntfs-3g 软件包支持,而本地光盘镜像中没有该软件包,此时需要往 YUM 源端添加 ntfs-3g 软件包
添加方法如下:
- 切换至/var/www/html/centos 目录,官网下载 NTFS-3G 软件包
cd /var/www/html/centos/
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/n/ntfs-3g-2017.3.23-11.el7.x86_64.rpm
https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/n/ntfs-3g-devel-2017.3.23-11.el7.x86_64.rpm
- Createrepo 命令更新软件包,同理,如需新增其他软件包,同样把软件下载至本地,然后通过 createrepo 更新即可
[root@localhost centos]# createrepo --update /var/www/html/centos/
Spawning worker 0 with 2 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
- 客户端 YUM 验证,安装 NTFS-3G 软件包
[root@localhost ~]# yum install ntfs-3g* -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package ntfs-3g.x86_64 2:2017.3.23-11.el7 will be installed
---> Package ntfs-3g-devel.x86_64 2:2017.3.23-11.el7 will be installed
- 回到目录
同步外网 YUM 源
仅仅靠光盘里面的 RPM 软件包是不能满足需要,我们可以把外网的 YUM 源中的所有软件包同步至本地,可以完善本地 YUM 源的软件包数量及完整性。
获取外网 YUM 源软件常见方法包括 Rsync、Wget、Reposync,三种同步方法的区别Rsync 方式需要外网 YUM 源支持 RSYNC 协议,Wget 可以直接获取,而 Reposync 可以同步几乎所有的 YUM 源,下面以 Reporsync 为案例,同步外网 YUM 源软件至本地
步骤如下:
- 下载 CentOS7 REPO 文件至/etc/yum.repos.d/,并安装 reposync 命令工具
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo /etc/yum.repos.d/centos.repo
yum clean all
yum install yum-utils createrepo –y
yum repolist
- 通过 reposync 命令工具获取外网 YUM 源所有软件包,-r 指定 repolist id,默认不加-r 表示获取外网所有YUM 软件包,-p 参数表示指定下载软件的路径
reposync -r base -p /var/www/html/centos/
reposync -r updates -p /var/www/html/centos/
- 通过 reposync 工具下载完所有的软件包之后,需要执行 createrepo 更新本地YUM 仓库
createrepo /var/www/html/centos/
- 回到目录