🚀 背景
在软件开发过程中,我们经常会遇到需要将产品部署到客户服务器的情况。🛠️ 当产品涉及的应用需要通过yum安装多个包时,如果客户的Linux服务器yum源不包含这些包,就会导致安装失败。😵 这种情况下,我们需要找到一种方法来解决这个问题。
🔧 解决办法
面对这个问题,我们的目标是在公司环境导出所需的包及其依赖,然后在客户的环境中使用本地yum安装。🔄 以下是详细的步骤:
🏢 公司环境的操作
1. 使用yumdownloader导出rpm包:首先,我们需要将所需的包及其依赖导出到指定目录下。以下命令将包导出到(在客户环境验证时,发现间接依赖存在缺失的情况,原因是yumdownloader不会导出当前环境已经安装的依赖,故放弃yumdownloader)/app/local_rpms路径下。
yumdownloader --resolve --destdir=/app/local_rpms libjpeg-turbo-devel libpng-devel libwebp-devel
- 使用repotrack导出rpm包:首先,我们需要将所需的包及其依赖导出到指定目录下。以下命令将包导出到
/app/local_rpms路径下。repotrack --alldeps --destdir=/app/local_rpms libjpeg-turbo-devel libpng-devel libwebp-devel - 安装createrepo命令:接下来,我们需要安装
createrepo命令,以便生成仓库信息。yum install -y createrepo - 生成仓库信息:这一步非常关键,它将为RPM包建立索引,并形成元数据。
createrepo /cloud/imagor_dependency_rpms - 创建仓库描述文件local.repo:创建一个以
.repo结尾的文件,指定本地仓库的路径。### 本地镜像包,要注意baseurl路径为你rpm的路径### [local] name=Local Repository baseurl=file:///app/local_rpms gpgcheck=0 enabled=1 - 打包压缩local.repo和rpm包的目录:将
local.repo和rpm包的目录(例如/app/local_rpms)打包压缩,以便传输。
🏭 客户环境的操作
- 解压压缩包:将前面得到的压缩包解压,并放到
/app目录下。 - 备份并删除原有的yum源配置文件:确保在操作前备份原有的配置文件。
cp -a /etc/yum.repos.d/. /etc/yum.repos.d.backup/ rm -f /etc/yum.repos.d/* - 复制local.repo到/etc/yum.repos.d目录下:将本地仓库描述文件复制到yum源配置目录下。
cp /app/local.repo /etc/yum.repos.d/ - 清除yum缓存并更新元数据:这一步确保yum源信息是最新的。
yum clean all && yum makecache - 查看当前的yum源信息:确认
local源是否已经添加成功。yum repolist --all - 使用yum安装包:最后,正常使用yum安装所需的包。
yum install -y libjpeg-turbo-devel libpng-devel libwebp-devel
通过以上步骤,我们可以确保在不同环境中成功部署应用,即使面对yum源不包含所需包的问题。🎉