You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在自定义目录安装升级RPM包?Chef yum_package报错求助

解决Chef yum_package安装自定义目录RPM报错问题及操作指南

问题分析

你的代码有两个核心问题导致了报错:

  1. 通配符解析错误:%w("gpfs.*.*.rpm") 会生成带双引号的字符串元素(比如"gpfs.*.*.rpm"),而且%w语法只是简单拆分空格分隔的字符串,不会解析文件通配符,所以Chef找不到名为"gpfs.*.*.rpm"的包。
  2. source参数使用错误:yum_package的source需要指向具体的RPM文件完整路径,而你只指定了目录,Chef无法定位到具体的安装包。

修正后的代码

我们可以用Dir.glob来正确匹配目标目录下的所有gpfs相关RPM,然后遍历每个包并指定完整路径:

# 匹配/root/gpfs_driver/base目录下所有gpfs开头的rpm文件
Dir.glob("/root/gpfs_driver/base/gpfs.*.*.rpm").each do |pkg_path|
  # 从完整路径中提取包名(也可以直接用pkg_path作为package_name)
  pkg_name = File.basename(pkg_path, ".rpm")
  
  yum_package pkg_name do
    source pkg_path
    action :install
  end
end

如果不需要单独提取包名,也可以简化成:

Dir.glob("/root/gpfs_driver/base/gpfs.*.*.rpm").each do |pkg_path|
  yum_package File.basename(pkg_path) do
    source pkg_path
    action :install
  end
end

自定义目录RPM的安装与升级指南

1. 安装自定义目录的RPM

  • 用Dir.glob替代%w来处理文件通配符,确保能匹配到目标目录下的所有对应RPM
  • 必须给source参数指定完整的RPM文件路径,不能只提供目录
  • 如果需要处理依赖,yum_package会自动通过yum仓库解决依赖(前提是仓库中存在对应的依赖包)

2. 升级自定义目录的RPM

如果需要把系统中已安装的包升级到自定义目录里的新版本,只需将action改为:upgrade:

Dir.glob("/root/gpfs_driver/base/gpfs.*.*.rpm").each do |pkg_path|
  yum_package File.basename(pkg_path) do
    source pkg_path
    action :upgrade
  end
end

注意::upgrade会自动对比系统中已安装的包版本,只有当自定义目录中的包版本更高时才会执行升级操作。

3. 无依赖安装(可选)

如果不需要yum处理依赖,也可以直接使用rpm_package资源(它直接调用系统的rpm命令):

Dir.glob("/root/gpfs_driver/base/gpfs.*.*.rpm").each do |pkg_path|
  rpm_package File.basename(pkg_path) do
    source pkg_path
    action :install
    # 如果需要强制安装(覆盖现有文件),可以添加如下配置
    # options "--force"
  end
end

额外注意事项

  • 确保Chef运行用户(通常是root)对/root/gpfs_driver/base目录有读取权限
  • 如果通配符匹配到多个同包不同版本的RPM,建议先按版本号排序(比如降序),避免安装旧版本:
# 按版本号降序排序,优先处理最新版本
sorted_pkgs = Dir.glob("/root/gpfs_driver/base/gpfs.*.*.rpm").sort_by { |f| Gem::Version.new(File.basename(f).split('.')[2]) }.reverse
sorted_pkgs.each do |pkg_path|
  yum_package File.basename(pkg_path) do
    source pkg_path
    action :upgrade
  end
end

内容的提问来源于stack exchange,提问作者bhai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:27:38