环境说明:整个环境都为我的虚拟机试验环境 ,搭建的仓库主要为Centos6 /Centos7 提供服务。仓库暂时就是基本的光盘中的仓库,以及epel仓库。
创建内网的yum仓库
yum 的在安装软件包时,首先会根据 /etc/yum.repo.d/*.repo中的配置查找服务端。后与当作yum仓库的服务器端进行通信,获取服务器中软件仓库的的repodata软件仓库元数据,如果有缓存则在本地换缓存中查找。(缓存为之前安装软件包时获取到的数据,但是不一定是最新的。所以可以使用yum clean命令 清空缓存。)
所以yum为c/s架构。在搭建内网的yum仓库时,需要在服务端与客户端同时做更改。
创建yum仓库的步骤如下 :
序号 | 内容 |
---|---|
1. | 获取rmp软件包 |
2. | 生成repodata信息 |
3. | 安装服务端的文件共享服务,可以是http/ftp等 |
4. | 在客户机创建YUM仓库的配置文件,即/etc/yum.repo.d/下的.repo文件 |
- 获取rpm软件包
光盘中的rpm包,在虚拟机中创建两个虚拟的光驱,将光盘挂载上去(centos 6是两张光盘)。将其中的软件包拷贝出来 。
epel的rpm包使用wget 随便从一个镜像站点上下载下来 - 生成repodata信息,并将目录打包成光盘
- 使用 createrepo进行创建文件repodata 文件夹及其元属性。
createrepo /mnt/epel/7_repo
createrepo /mnt/epel/6_repo - 将得到的文件打包成光盘
mkisofs –o /mnt/6_epel_x86.iso –v –r /mnt/epel/6_repo
mkisofs –o /mnt/7_epel_x86.iso –v –r /mnt/epel/7_repo - 在当作服务端的虚拟机上创建足够的虚拟光驱,将生成好的光盘 挂载上去
- 使用 createrepo进行创建文件repodata 文件夹及其元属性。
- 安装在服务端安装ftp服务器
使用yum安装vsftpd
yum install vsftpd
已加载插件:fastestmirror, refresh-packagekit, security
设置安装进程
Loading mirror speeds from cached hostfile
* base: mirror.bit.edu.cn
* extras: mirrors.163.com
* updates: mirrors.btte.net
base | 3.7 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
解决依赖关系
--> 执行事务检查
---> Package vsftpd.x86_64 0:2.2.2-24.el6 will be 安装
--> 完成依赖关系计算
总下载量:156 k
Installed size: 340 k
确定吗?[y/N]:y
下载软件包:
vsftpd-2.2.2-24.el6.x86_64.rpm | 156 kB 00:00
运行 rpm_check_debug
执行事务测试
事务测试成功
执行事务
正在安装 : vsftpd-2.2.2-24.el6.x86_64 1/1
Verifying : vsftpd-2.2.2-24.el6.x86_64 1/1
已安装:
vsftpd.x86_64 0:2.2.2-24.el6
完毕!
将光盘挂载到/var/ftp下的目录
- 配置客户端的yum仓库配置文件
直接写脚本实现了:
#
sys_v=`cat /etc/centos-release`
ser_ip=0
{ ping -w 1 -c 1 10.1.1.1 &> /dev/null && ser_ip="ftp://10.1.1.1"; } ||{ ping -w 1 -c 1 172.17.253.104 &>/dev/null && ser_ip="ftp://172.17.253.104"; }
[[ "${ser_ip}" == "0" ]] && echo "您正在去火星的路上"&& exit 6
case ${sys_v} in
*6.8* )
repo_txt="${ser_ip}/6.8_repo"
epel_txt="${ser_ip}/6_epel"
name_txt_1="6.8-base"
name_txt_2="6.8-epel"
;;
*6.9* )
repo_txt="${ser_ip}/6.9_repo"
epel_txt="${ser_ip}/6_epel"
name_txt_1="6.9-base"
name_txt_2="6.9-epel"
;;
*7.2.1511* )
repo_txt="${ser_ip}/1511_repo"
epel_txt="${ser_ip}/7_epel"
name_txt_1="7.2-base"
name_txt_2="7.2-epel"
;;
*7.3.1611* )
repo_txt="${ser_ip}/1611_repo"
epel_txt="${ser_ip}/7_epel"
name_txt_1="7.3-base"
name_txt_2="7.3-epel"
;;
* )
echo "未知版本"&& exit
;;
esac
dir_name="back-${RANDOM}"
until mkdir "/etc/yum.repos.d/${dir_name}" ;do
dir_name="back-${RANDOM}"
done
mv /etc/yum.repos.d/* /etc/yum.repos.d/${dir_name}
cat > "/etc/yum.repos.d/Jin-base.repo" << END
[base]
name=${name_txt_1}
baseurl="${repo_txt}"
enabled=1
gpgcheck=0
cost=999
[epel]
name=${name_txt_2}
baseurl="${epel_txt}"
enabled=1
gpgcheck=0
cost=1000
END