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

如何通过SBT创建RPM?解决post_install.sh脚本路径错误问题

解决SBT RPM打包中维护脚本找不到的问题

你的问题核心是脚本路径与文件名不匹配,导致SBT无法找到指定的post-install脚本。咱们一步步来解决:

1. 定位路径与文件名的差异

错误提示里SBT查找的路径是:

/Users/spachari/IdeaProjects/aws-customer-email-change-history/scripts/install/post-install.sh

但你实际的脚本位置是:src/main/scripts/post_install.sh
这里存在两个不匹配点:

  • 路径缺少src/main前缀
  • 文件名用下划线post_install.sh,但配置里写的是连字符post-install.sh

2. 修正SBT配置(推荐方案)

如果你不想移动或重命名脚本,直接修改build.sbt里的路径配置,匹配实际脚本位置即可:

import com.typesafe.sbt.packager.rpm.RpmPlugin.autoImport.RpmConstants._

// 确保已启用RPM插件
enablePlugins(RpmPlugin)

// 修正路径与文件名,指向你的实际脚本
maintainerScripts in Rpm := maintainerScriptsAppendFromFile((maintainerScripts in Rpm).value)(
  Post -> (baseDirectory.value / "src" / "main" / "scripts" / "post_install.sh")
)

3. 替代方案:调整脚本位置与名称

如果你想保留现有SBT配置,可按以下步骤调整脚本:

  • 在项目根目录创建目标路径:
    mkdir -p scripts/install
    
  • 移动并重命名脚本:
    cp src/main/scripts/post_install.sh scripts/install/post-install.sh
    
  • 给脚本添加可执行权限(RPM打包要求脚本可执行):
    chmod +x scripts/install/post-install.sh
    

4. 执行打包命令

完成调整后,执行清理+打包命令(避免缓存干扰):

sbt clean rpm:packageBin

额外注意事项

  • 确保脚本符合RPM规范:避免使用相对路径,正确处理退出码(0表示成功,非0会导致安装失败)
  • 若需添加其他维护脚本(如pre-install、post-uninstall),可扩展配置:
    maintainerScripts in Rpm := maintainerScriptsAppendFromFile((maintainerScripts in Rpm).value)(
      Pre -> (baseDirectory.value / "src" / "main" / "scripts" / "pre_install.sh"),
      Post -> (baseDirectory.value / "src" / "main" / "scripts" / "post_install.sh"),
      PostUn -> (baseDirectory.value / "src" / "main" / "scripts" / "post_uninstall.sh")
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:52:21