使用sam build构建SAM项目时遇mkdir依赖libselinux版本缺失错误求助
解决SAM构建时
mkdir: /usr/local/aws-sam-cli/1.76.0/dist/libselinux.so.1: no version information available错误 问题原因
这个错误是AWS SAM CLI自带的libselinux.so.1库版本与Ubuntu系统原生mkdir命令不兼容导致的。SAM构建时会将自身的库目录注入到LD_LIBRARY_PATH环境变量中,使得系统命令优先调用SAM的旧版本库,引发版本不匹配问题。
解决方案
方案1:在Makefile中直接使用系统原生mkdir的绝对路径
修改Makefile里的build-RuntimeDependenciesLayer目标,把mkdir替换为系统绝对路径/bin/mkdir,绕过SAM注入的环境影响:
build-RuntimeDependenciesLayer: /bin/mkdir -p "$(ARTIFACTS_DIR)/nodejs" cp package.json package-lock.json "$(ARTIFACTS_DIR)/nodejs/" npm install --production --prefix "$(ARTIFACTS_DIR)/nodejs/" rm "$(ARTIFACTS_DIR)/nodejs/package.json" # to avoid rebuilding when changes doesn't relate to dependencies
方案2:在GitHub Actions中重置LD_LIBRARY_PATH环境变量
在执行sam build前,强制将系统标准库路径放到环境变量最前面,覆盖SAM注入的路径:
调整GitHub Actions的Build function步骤:
- name: Build function run: | export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH sam build
方案3:升级AWS SAM CLI版本
旧版本SAM CLI(如你使用的1.76.0)可能存在此类兼容性问题,尝试升级到最新稳定版:
在GitHub Actions中添加SAM升级步骤:
- name: Upgrade AWS SAM CLI run: | pip install --upgrade aws-sam-cli
验证
修改后重新触发GitHub Actions流水线,检查sam build步骤是否能正常完成,不再出现libselinux版本错误。
内容的提问来源于stack exchange,提问作者Preetam
相关产品推荐
相关产品推荐

