【云原生技术】./sonar.sh start 的时候报错 wrapper报错无法执行二进制文件

“cannot execute binary file” 基本只会由 二进制与运行环境不匹配文件本身不可执行 两类问题触发。SonarQube 9.2.2 的 wrapper 是 64-bit x86 Linux ELF,可用下面的排查顺序快速定位并解决:


1. 确认架构:必须是 64-bit x86_64


uname -m        # 应返回 x86_64

• 如果返回 aarch64、armv7l、s390x、i686 等 → 该机器架构不受支撑。
解决:
– 换到 x86_64 服务器;或
– 使用官方 Docker 镜像(linux/amd64 平台跑在 amd64 兼容层),ARM 机器可用 docker run --platform linux/amd64 …


2. 检查二进制是否损坏


file $SONAR_HOME/bin/linux-x86-64/wrapper

应看到类似
ELF 64-bit LSB executable, x86-64 ….
若报 “data” 或显示奇怪 → 下载包损坏。重新解压/重新下载。


3. 权限是否可执行


chmod +x $SONAR_HOME/bin/linux-x86-64/wrapper

然后再执行 ./sonar.sh start


4. 被错误目录调用


有时管理员把 sonar.sh 软链到别处,但 $SONAR_HOME 没设置好,脚本会去找 bin/linux-x86-32/wrapper(32 位),结果报错。
验证脚本找的是哪一个:

grep wrapper $SONAR_HOME/bin/sonar.sh | head -1

确保路径中含 linux-x86-64。若不是,修正 $SONAR_HOME 环境变量或重新展开安装包。


5. glibc 版本过旧(罕见)


SonarQube 9.x 需要 glibc ≥ 2.17。

ldd --version

若低于 2.17,升级系统(RHEL/CentOS 6,SLES 11 等均过旧)。


6. SELinux / 安全软件拦截(极少)


• 先用 sudo setenforce 0(临时关闭 SELinux)试跑;
• 或检查防护软件日志(Deep-Security、360 等)是否拦截 ELF 执行。


快速修复思路


  1. 换用官方 ZIP/TAR 包重新部署,确保解压到干净路径;
  2. 确保服务器是 64-bit x86_64 且 glibc ≥ 2.17;
  3. chmod +x bin/linux-x86-64/wrapper
  4. 再次执行
    $SONAR_HOME/bin/linux-x86-64/sonar.sh start
    
    (确保走对目录)

只要架构、权限、文件完整 3 项符合,wrapper 报 “cannot execute binary file” 就能消除,SonarQube 会正常启动。若仍有疑问,把完整错误行 (./wrapper: Exec format error, Bad ELF interpreter 等) 贴出来便可进一步定位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿寻寻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值