前言:
生产环境中,一般不会允许所有服务器都能访问公网,理想的情况是有几台服务器作为访问代理,同时作为缓存服务器。当服务器中有所需包时通过内网获取,如无则通过公网获取同时在本地保存。(镜像搭建yum源、版本兼容性最好)
常用搭建私有yum源的方法是createrepo生成本地仓库
本地源,一般是给内网机器用的,机器数量多的时候,还是有个自建源比较方便批量更新或者不能访问公网的时候用,比如你一千台服务器同事upgrade,要是走公网,你们的网管想打死你。在每台服务器上安装软件,都要先把安装盘上传上去,在配置本地yum服务,即麻烦又费时。可以在内网的一台linux服务器上安装yum服务,然后其他服务器直接修改repo文件使用yum服务就可以了。安装步骤如下:
参考文档:
【精选】Linux中搭建本地yum源(只有内网环境离线yum仓库)_linux不能走公网更新,怎么用离线的yum库传到离线的liunx-CSDN博客
https://blog.csdn.net/weixin_43404595/article/details/117964034
1.RHEL版本
[root@oracle ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
服务端:192.168.134.205
客户端:192.168.134.208
搭建服务器本地YUM:
1.上传reht安装光盘文件到home目录,命名为rhel.iso
即通过MobaXterm上传系统镜像文件到服务器指定目录(这个目录后续你能找到就行,我选择的是/home目录,如图所示)
2.创建目录/home/rhel/
mkdir /home/rhel/
3.挂载系统镜像到/mnt目录下,并查看挂载是否成功
- cd /home #切换用户
- mount -o loop /home/rhel-server-7.9-x86_64-dvd.iso /home/rhel
- df -h
重启之后,就会失效,可以设置开机自动挂载
-
打开终端或命令行界面,并使用 root 用户或具有 sudo 权限的用户登录到系统。
-
使用文本编辑器创建一个新的脚本文件,例如
mount_iso.sh
:sudo vi /etc/init.d/mount_iso.sh
-
将以下内容复制并粘贴到脚本文件中:
#!/bin/bash # 定义镜像文件和目标挂载目录 ISO_FILE="/home/rhel-server-7.9-x86_64-dvd.iso" MOUNT_DIR="/home/rhel" # 检查挂载目录是否存在,若不存在则创建 if [ ! -d "$MOUNT_DIR" ]; then mkdir "$MOUNT_DIR" fi # 挂载镜像文件 mount -o loop "$ISO_FILE" "$MOUNT_DIR"
请确保替换
ISO_FILE
和MOUNT_DIR
的路径为正确的镜像文件和目标挂载目录路径。 -
:wq保存并关闭文件。
-
接下来,让脚本可执行:
sudo chmod +x /etc/init.d/mount_iso.sh
-
使用以下命令将脚本添加到启动过程中:
sudo ln -s /etc/init.d/mount_iso.sh /etc/rc.d/rc.local sudo chmod +x /etc/rc.d/rc.local
这将在每次系统启动时执行
/etc/init.d/mount_iso.sh
脚本。 -
最后,重新启动系统验证脚本是否成功挂载镜像文件。
也可以:
直接在启动过程中加上
安装FTP服务(一般安装完系统后会直接有这个服务,按照没有来写)
1.执行安装命令
yum install vsftpd*
2.安装完成后,复制/home/rhel/ 目录下的所有文件到/var/ftp/pub 目录中
cd /home/rhel
cp -rv * /var/ftp/pub3、切换到 /var/ftp/pub目录
删除*.html
删除CentOS/repodata/TRANS.TBL
cd /var/ftp/pub
rm -rf *.htmlrm -rf repodata/TRANS.TBL
安装createrepo工具,生成YUM通用数据库
1. 安装createrepo
1. yum -y install createrepo#下载createrepo
2.createrepo -g /var/ftp/pub/repodata/3df90817a193baef023d53222cc4ce8f4d15209e593bee361bf72016022008fb-comps-Server.x86_64.xml /var/ftp/pub注:这里3df90817a193baef023d53222cc4ce8f4d15209e593bee361bf72016022008fb-comps-Server.x86_64.xml名称可能每个系统不一样,找准后面是comps-rhel6-Server.xml就行了。
客户端yum配置
首先先关闭防火墙
-
使用管理员权限登录到 Red Hat 系统。
-
打开终端或命令行界面。
-
输入以下命令以停止防火墙服务:
sudo systemctl stop firewalld
-
输入以下命令以禁用防火墙服务的自动启动:
sudo systemctl disable firewalld
这将确保系统在下次启动时不会自动启动防火墙服务。
-
最后,您可以验证防火墙服务是否已成功停止和禁用。输入以下命令:
sudo systemctl status firewalld
如果输出中显示防火墙服务为 “inactive”(非活动状态),则表示防火墙已成功关闭。
进入/etc/yum.repos.d/目录,备份原有的repo文件,创建新的repo文件,rhel.repo
- cd /etc/yum.repos.d/
- mkdir bak/
- cp * bak/
- vi rhel.repo
[redhut7] //仓库描述(可自定义)
name=redhut //对软件源的描述(与上面上面保持一致)
baseurl=ftp://192.168.134.208/pub/ //镜像的挂载入地址 file:// --格式
gpgcheck=0 //不检查gpgkey
enabled=1 //此yum源语句块立即生效
baseurl=ftp://192.168.134.208/pub/ 这里的baseurl是你的服务器端的地址,根据自己的情况进行设定
保存rhel.repo后执行
- yum clean all
- yum update
- yum makecache
遇到问题:
这个错误提示表明另一个应用程序(yum)当前正在持有 yum 锁,并且正在访问软件包管理器。您可以尝试以下方法来解决这个问题:
-
等待一段时间:根据错误提示,该应用程序已经运行了一段时间,可能正在执行某些任务。您可以等待一段时间,让该应用程序完成操作并释放 yum 锁。通常情况下,它会在一段时间后自动释放。
-
结束相关进程:如果等待时间过长没有效果,您可以尝试手动终止相关进程。可以使用以下命令找到并终止 yum 进程:
sudo pkill yum
请注意,这样做可能会导致未完成的软件包操作被中断,因此请确保您在操作之前备份重要数据,并确保中止进程不会对系统的稳定性和安全性造成负面影响。
-
删除 yum 锁文件:如果以上方法仍然无效,您可以尝试手动删除 yum 锁文件。运行以下命令来查找并删除 yum 锁文件:
sudo rm /var/run/yum.pid
删除锁文件后,您可以尝试重新运行 yum 命令,看看问题是否已经解决。
问题2:
重启一下服务端的ftp就可以解决:
如果您使用的是 vsftpd(Very Secure FTP Daemon)服务器,可以使用以下命令重新启动服务:
sudo systemctl restart vsftpd
搭建完成
常用的yum命令
1.安装
yum install package 安装指定的安装包package1
yum localinstall package 本地安装软件包
2.更新和升级
yum update 全部更新
yum update package 更新指定程序包package
yum check-update 检查可更新的程序
3.查找和显示
yum info <package> 显示安装包信息
yum list 显示所有已经安装和可以安装的程序包
yum list <package> 显示指定程序包安装情况
yum search <keyword>查找软件包
4.删除程序
yum remove | erase package1 删除程序包
yum 会把下载的软件包和header存储在cache中,而不会自动删除。如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除.
yum clean headers清除header
yum clean packages清除下载的rpm包
yum clean all 清除header与rpm包