无法执行二进制这个怎么解决啊,我在官网下的

/usr/bin/obd: 2: Syntax error: “(” unexpected/usr/bin/obd: 2: Syntax error: “(” unexpected upgrade finished
./install.sh:行118:/usr/bin/obd:无法执行二进制文件:可执行文件格式错误/usr/bin/obd: 2: Syntax error: “(” unexpected
./install.sh:行121:/usr/bin/obd:无法执行二进制文件:可执行文件格式错误./install.sh:行122: /usr/bin/obd:无法执行二进制文件:可执行文件格式错误
add auto set env logic to profile:/home/kylin/.bashrc
#############################################################################
【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】麒麟系统国防版
【问题描述】清晰明确
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

根据您提供的信息,问题可能是由于以下原因之一导致的:

  1. 二进制文件架构不匹配:下载的 obd 二进制文件可能与您的操作系统(麒麟系统国防版)的架构不兼容。例如,如果您的系统是 ARM 架构,但下载的是 x86_64 架构的二进制文件,就会出现“无法执行二进制文件”的错误。

  2. 文件损坏或未正确下载:下载过程中可能出现问题,导致二进制文件损坏或不完整。

  3. 缺少依赖项:某些必要的库或依赖项可能未安装在您的系统上,导致二进制文件无法运行。

解决方案

方法一:确认并下载正确的二进制文件

  • 确保从 OceanBase 官方网站下载的 obd 二进制文件与您的操作系统架构匹配。
  • 您可以通过以下命令检查系统的架构:
    uname -a
    arch
    
  • 根据架构选择正确的版本重新下载。例如,如果您的系统是 ARM 架构,请确保下载 ARM 版本的二进制文件。

方法二:验证二进制文件完整性

  • 下载完成后,使用以下命令检查文件是否可执行:
    file /usr/bin/obd
    
    如果输出显示文件类型与您的系统架构不匹配,则需要重新下载正确的版本。

方法三:安装缺失的依赖项

  • 检查是否有缺失的依赖项。可以尝试以下命令来安装常见的依赖项:
    sudo apt-get update && sudo apt-get install -y libstdc++6 libc6
    
    如果您使用的是非 Debian 系统,请根据您的包管理器安装相应的依赖项。

方法四:重新安装 obd

  • 如果上述方法无效,可以尝试重新安装 obd
    rm -f /usr/bin/obd
    wget https://mirrors.oceanbase.com/obd/latest/obd -O /usr/bin/obd
    chmod +x /usr/bin/obd
    

方法五:检查环境变量

  • 确保环境变量配置正确。您可以将以下内容添加到 ~/.bashrc 文件中:
    export PATH=/usr/bin:$PATH
    
  • 然后重新加载 .bashrc 文件:
    source ~/.bashrc
    

其他建议

如果以上方法均未能解决问题,建议您访问 OceanBase 官方问答区 提供更详细的系统信息(如操作系统版本、架构等),以便获得进一步的帮助。

希望这些步骤能够帮助您解决问题!

详情请参考:

  1. OceanBase 安装部署工具 V2.2.0
  2. 错误码
  3. OceanBase 安装部署工具 V2.1.1

确认下架构是x86还是arm的

Linux kylin-KaiTianM740J-D183 5.4.18-52-generic #41 SMP Wed Mar 2 15:24:07 CST 2022 aarch64 aarch64 aarch64 GNU/Linux

根据您提供的系统信息:

Linux kylin-KaiTianM740J-D183 5.4.18-52-generic #41 SMP Wed Mar 2 15:24:07 CST 2022 aarch64 aarch64 aarch64 GNU/Linux

可以看出您的操作系统是基于 ARM 架构 (aarch64) 的麒麟系统。因此,问题可能出在下载的 obd 二进制文件与您的 ARM 架构不兼容。

解决方案

方法一:确认并下载正确的 obd 二进制文件

  1. 检查当前 obd 文件架构
    使用以下命令检查 /usr/bin/obd 是否为 ARM 架构的可执行文件:

    file /usr/bin/obd
    

    如果输出显示文件类型为 x86_64 或其他非 ARM 架构,则需要重新下载适合 ARM 架构的版本。

  2. 下载适合 ARM 架构的 obd
    根据 OceanBase 社区版的官方文档,您可以从以下地址下载适合 ARM 架构的 RPM 包或二进制文件:

    • 对于 Debian 系统(如 Anolis OS 或其他基于 Debian 的系统),可以参考 el8 下载地址
    • 如果您使用的是 RPM 包管理器,可以通过以下 Python 脚本下载适合 ARM 架构的 obd 包:
      from obshell.mirror import BASE_COMMUNITY_MIRROR, EL8, AARCH64
      
      # 搜索与执行机器不同架构的最新的 obshell 包
      def search_diff_arch():
          mirror = BASE_COMMUNITY_MIRROR.get_mirror(EL8, AARCH64)
          pkgs = mirror.search("obd")
          print(pkgs)
      
      search_diff_arch()
      
  3. 安装下载的 RPM 包
    如果您下载的是 RPM 包,可以使用以下命令安装:

    sudo rpm -ivh oceanbase-ce-<version>.el8.aarch64.rpm
    

方法二:手动编译 obd

如果无法找到预编译的 ARM 架构二进制文件,您可以尝试从源码编译 obd:

  1. 克隆 OceanBase 社区版源码仓库:
    git clone https://github.com/oceanbase/oceanbase-ce.git
    cd oceanbase-ce
    
  2. 安装必要的依赖项:
    sudo apt-get update && sudo apt-get install -y build-essential cmake libssl-dev
    
  3. 编译 obd:
    mkdir build && cd build
    cmake ..
    make obd
    sudo cp bin/obd /usr/bin/obd
    chmod +x /usr/bin/obd
    

方法三:验证环境变量

确保环境变量配置正确。您可以将以下内容添加到 ~/.bashrc 文件中:

export PATH=/usr/bin:$PATH

然后重新加载 .bashrc 文件:

source ~/.bashrc

总结

根据您的系统架构 (aarch64),问题的根本原因可能是下载了不适合 ARM 架构的二进制文件。建议按照上述方法重新下载适合 ARM 架构的 obd 文件或从源码编译。如果问题仍然存在,请提供更多详细信息(如具体的错误日志),以便进一步排查。

希望这些步骤能够帮助您解决问题!

更多信息请查看:

  1. 软硬件要求
  2. (可选)查看资源
  3. 搜索 RPM 包
  4. 19500.server_balance_cpu_mem_tolerance_percent.md
  5. 上传 RPM 包
  6. 下载 RPM 包
  7. 升级 obshell

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)


下载arm版本即可