🌐 跨环境部署Linux应用:Yum包导出与本地安装指南

297 阅读2分钟

🚀 背景

在软件开发过程中,我们经常会遇到需要将产品部署到客户服务器的情况。🛠️ 当产品涉及的应用需要通过yum安装多个包时,如果客户的Linux服务器yum源不包含这些包,就会导致安装失败。😵 这种情况下,我们需要找到一种方法来解决这个问题。

🔧 解决办法

面对这个问题,我们的目标是在公司环境导出所需的包及其依赖,然后在客户的环境中使用本地yum安装。🔄 以下是详细的步骤:

🏢 公司环境的操作

1. 使用yumdownloader导出rpm包:首先,我们需要将所需的包及其依赖导出到指定目录下。以下命令将包导出到/app/local_rpms路径下。(在客户环境验证时,发现间接依赖存在缺失的情况,原因是yumdownloader不会导出当前环境已经安装的依赖,故放弃yumdownloader)

yumdownloader --resolve --destdir=/app/local_rpms libjpeg-turbo-devel libpng-devel libwebp-devel
  1. 使用repotrack导出rpm包:首先,我们需要将所需的包及其依赖导出到指定目录下。以下命令将包导出到/app/local_rpms路径下。
    repotrack --alldeps --destdir=/app/local_rpms libjpeg-turbo-devel libpng-devel libwebp-devel
    
  2. 安装createrepo命令:接下来,我们需要安装createrepo命令,以便生成仓库信息。
    yum install -y createrepo
    
  3. 生成仓库信息:这一步非常关键,它将为RPM包建立索引,并形成元数据。
    createrepo /cloud/imagor_dependency_rpms
    
  4. 创建仓库描述文件local.repo:创建一个以.repo结尾的文件,指定本地仓库的路径。
    ### 本地镜像包,要注意baseurl路径为你rpm的路径###
    [local]
    name=Local Repository
    baseurl=file:///app/local_rpms
    gpgcheck=0
    enabled=1
    
  5. 打包压缩local.repo和rpm包的目录:将local.repo和rpm包的目录(例如/app/local_rpms)打包压缩,以便传输。

🏭 客户环境的操作

  1. 解压压缩包:将前面得到的压缩包解压,并放到/app目录下。
  2. 备份并删除原有的yum源配置文件:确保在操作前备份原有的配置文件。
    cp -a /etc/yum.repos.d/. /etc/yum.repos.d.backup/
    rm -f /etc/yum.repos.d/*
    
  3. 复制local.repo到/etc/yum.repos.d目录下:将本地仓库描述文件复制到yum源配置目录下。
    cp /app/local.repo /etc/yum.repos.d/
    
  4. 清除yum缓存并更新元数据:这一步确保yum源信息是最新的。
    yum clean all && yum makecache
    
  5. 查看当前的yum源信息:确认local源是否已经添加成功。
    yum repolist --all 
    
  6. 使用yum安装包:最后,正常使用yum安装所需的包。
    yum install -y libjpeg-turbo-devel libpng-devel libwebp-devel
    

通过以上步骤,我们可以确保在不同环境中成功部署应用,即使面对yum源不包含所需包的问题。🎉