使用yum本地仓库有提升下载速度,可以离线使用,实现软件版本一致性与软件安全性等等好处,本篇文章来介绍下如何制作yum本地仓库,实现一键部署,yum本地仓库的原理是将需要的软件包从互联网上下载到一个本机或网络内的服务器上,并通过一定的配置使得这个服务器可以提供来自本地仓库的软件包。当需要安装软件时,可以从本地仓库中获取必要的软件包进行安装。
我将所有的操作封装进了脚本,实现了一键部署yum本地仓库。
先配置好虚拟机。
仓库部署脚本
1. [root@Ansible ~]# cat /bash/yum-repo-deploy.sh 2. #!/bin/bash 3. 4. # 挂载CDROM并授权 5. mount -t iso9660 /dev/sr0 /mnt/ -o loop,ro 6. chmod -R +r /mnt/ 7. 8. # 安装epel源 9. yum -y install epel-release 10. 11. # 安装nginx 12. yum -y install nginx 13. 14. # 创建目录,准备Nginx默认站点 15. mkdir /share 16. chown -R nginx:nginx /share 17. 18. # 删除Nginx默认站点,并在其目录中创建yum.conf文件进行yum仓库目录索引 19. rm /etc/nginx/conf.d/default.conf 20. cat > /etc/nginx/conf.d/yum.conf <<EOF 21. server { 22. listen 80 default_server; 23. root /share; 24. index index.html index.htm; 25. autoindex on; 26. autoindex_exact_size on; 27. autoindex_localtime on; 28. } 29. EOF 30. 31. # 准备yum仓库存储目录 32. mkdir /share/packages 33. chown -R nginx:nginx /share/packages 34. 35. # 安装createrepo 36. yum -y install createrepo 37. 38. # 复制rpm包到本地yum仓库 39. cp -a /mnt/Packages/* /share/packages/ 40. 41. # 构建yum仓库 42. createrepo /share/packages/ 43. 44. # 启动nginx服务,并将服务加入开机启动项中 45. systemctl start nginx 46. systemctl enable nginx
一键部署yum仓库
1. [root@Ansible ~]# sh /bash/yum-repo-deploy.sh 2. ...... 3. Spawning worker 0 with 4070 pkgs 4. Workers Finished 5. Saving Primary metadata 6. Saving file lists metadata 7. Saving other metadata 8. Generating sqlite DBs 9. Sqlite DBs complete 10. Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
查看yum本地仓库
1. [root@Ansible ~]# ls /share/ 2. packages/ test.txt 3. [root@Ansible ~]# ls /share/packages/ 4. ...... 5. yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm 6. yum-plugin-tmprepo-1.1.31-54.el7_8.noarch.rpm 7. yum-plugin-verify-1.1.31-54.el7_8.noarch.rpm 8. yum-plugin-versionlock-1.1.31-54.el7_8.noarch.rpm 9. yum-utils-1.1.31-54.el7_8.noarch.rpm 10. zenity-3.28.1-1.el7.x86_64.rpm 11. zip-3.0-11.el7.x86_64.rpm 12. zlib-1.2.7-18.el7.x86_64.rpm 13. zlib-devel-1.2.7-18.el7.x86_64.rpm 14. zsh-5.0.2-34.el7_8.2.x86_64.rpm 15. zziplib-0.13.62-12.el7.x86_64.rpm
客户端配置yum源,进行测试下载
1. [root@Web01 ~]# mv /etc/yum.repos.d/* /opt/ 2. [root@Web01 ~]# cat /etc/yum.repos.d/local.repo 3. [local] 4. name=local 5. baseurl=http://10.0.0.61/packages 6. enabled=1 7. [root@Web01 ~]# yum -y install tree 8. Loaded plugins: fastestmirror, priorities 9. Loading mirror speeds from cached hostfile 10. Resolving Dependencies 11. --> Running transaction check 12. ---> Package tree.x86_64 0:1.6.0-10.el7 will be installed 13. --> Finished Dependency Resolution 14. 15. Dependencies Resolved 16. 17. ======================================================= 18. Package Arch Version Repository 19. Size 20. ======================================================= 21. Installing: 22. tree x86_64 1.6.0-10.el7 local 46 k 23. 24. Transaction Summary 25. ======================================================= 26. Install 1 Package 27. 28. Total download size: 46 k 29. Installed size: 87 k 30. Downloading packages: 31. tree-1.6.0-10.el7.x86_64.rpm | 46 kB 00:00 32. Running transaction check 33. Running transaction test 34. Transaction test succeeded 35. Running transaction 36. Warning: RPMDB altered outside of yum. 37. Installing : tree-1.6.0-10.el7.x86_64 1/1 38. Verifying : tree-1.6.0-10.el7.x86_64 1/1 39. 40. Installed: 41. tree.x86_64 0:1.6.0-10.el7 42. 43. Complete!
yum本地仓库常见问题
使用yum本地仓库可能会出现安装的软件缺少依赖的情况,此时我们需要去安装我们的依赖,将依赖包放入本地仓库中,再进行本地仓库缓存刷新
yum仓库端进行如下操作,重新创建yum仓库
createrepo /share/packages/
客户端进行如下操作,刷新本地仓库缓存
1. yum clean all 2. yum makecache 3. yum repolist #查看yum源中是否有软件包
我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!