CentOS7制作本地局域网离线yum源
Yum(软件包管理器,全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
通常情况下,我们内部的服务器不允许直接连外网,要安装某些服务器比较麻烦,还有各种依赖包的问题。如果制作一个本地局域网离线yum源仓库,再安装软件包就会方便许多。制作本地yum的方式有多种,如http,ftp等,这里以ftp、nginx两种方式进行实验。
新建目录,并将iso镜像文件上传到目录
mkdir /hdapp
CentOS-7.9-x86_64-Everything-2207-02.iso
(假设有外网情况直接安装。如果没有外网的话,先省略这一步完成步骤3-4再回来步骤2安装也可以)
yum install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd
FTP服务默认路径/var/ftp/,可以修改,我这里没有改直接演示
mkdir /var/ftp/myyum
mount -o loop /hdapp/CentOS-7.9-x86_64-Everything-2207-02.iso /var/ftp/myyum/
可以将该命令写入/etc/rc.d/rc.local文件,服务器重启能自动挂载镜像到目录
yum服务端也可以是客户端,毕竟自身也需要安装或者更新软件包
baseurl修改为本地yum源绝对路径
cd /etc/yum.repos.d/
mkdir ./repobak
mv ./*.repo ./repobak/
cp ./repobak/CentOS-Media.repo .
vi CentOS-Media.repo
yum clean all
yum makecache
yum repolist
baseurl路径修改为FTP路径
cd /etc/yum.repos.d/
mkdir ./repobak
mv ./*.repo ./repobak/
cp ./repobak/CentOS-Media.repo .
vi CentOS-Media.repo
yum clean all
yum makecache
yum repolist
如果yum源服务器可以连公网的话,可以设置定时从从公网获取最新软件包到本地yum仓库。
yum install -y yum-utils createrepo plugin-priorities
yum-utils:reposync同步工具
createrepo:编辑yum库工具
#plugin-priorities:控制yum源更新优先级工具,这个工具可以用来控制进行yum源检索的先后顺序,建议可以用在client端
由于rpm较多,最好是下载在额外的数据盘,/hdapp已挂载容量较大的数据盘
mkdir -p /hdapp/aliyun/CentOS/7/64bit/
yum install -y nginx
vi /etc/nginx/nginx.conf
systemctl start nginx
systemctl enable nginx
修改nginx的默认html目录/usr/share/nginx/html/为/hdapp/aliyun/CentOS/7/64bit/,头部user nginx 改为user root,否则访问页面会提示403没有权限
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/CentOS-epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
yum repolist
reposync -np /hdapp/aliyun/CentOS/7/64bit
reposync:-n:只下载最新的包,-p:下载包的路径:默认为当前目录
cd /hdapp/aliyun/CentOS/7/64bit
ll
可以看到从阿里云同步了5个文件夹下来,依次建库
tip:其c7-media与“一、服务端”中本地离线yum源内容几乎一致,因此客户端修改repo源只需要用这个同步的yum仓库即可
cd base
createrepo -p .
cd ../c7-media
createrepo -p .
cd ../epel
createrepo -p .
cd ../extras
createrepo -p .
cd ../updates
createrepo -p .
新建同步脚本,同步完更新repo库
vi /hdapp/yum_update.sh
#!/bin/bash
echo 'Updating Aliyun yum Source'
DATETIME=``
exec > /var/log/aliyunyumrepo_$DATETIME.log
reposync -np /hdapp/aliyun/CentOS/7/64bit
if [ $? -eq 0 ];then
createrepo --update /hdapp/aliyun/CentOS/7/64bit/base
createrepo --update /hdapp/aliyun/CentOS/7/64bit/c7-media
createrepo --update /hdapp/aliyun/CentOS/7/64bit/epel
createrepo --update /hdapp/aliyun/CentOS/7/64bit/extras
createrepo --update /hdapp/aliyun/CentOS/7/64bit/updates
echo "SUCESS: $DATETIME aliyum_yum update successful" >>/var/log/aliyunyumrepo_$DATETIME.log
else
echo "ERROR: $DATETIME aliyum_yum update failed" >> /var/log/aliyunyumrepo_$DATETIME.log
fi
每周日的3点同步:
crontab -e
0 3 * * 7 /bin/sh /hdapp/yum_update.sh
上面看到从阿里云同步5个文件夹,可以在/etc/yum.repos.d/下新建5个同名文件,这里从原repo直接复制,修改里面内容就好了
yum clear all
yum makecache
yum repolist