/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 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
根据您提供的信息,问题可能是由于以下原因之一导致的:
-
二进制文件架构不匹配:下载的
obd
二进制文件可能与您的操作系统(麒麟系统国防版)的架构不兼容。例如,如果您的系统是 ARM 架构,但下载的是 x86_64 架构的二进制文件,就会出现“无法执行二进制文件”的错误。 -
文件损坏或未正确下载:下载过程中可能出现问题,导致二进制文件损坏或不完整。
-
缺少依赖项:某些必要的库或依赖项可能未安装在您的系统上,导致二进制文件无法运行。
解决方案
方法一:确认并下载正确的二进制文件
- 确保从 OceanBase 官方网站下载的
obd
二进制文件与您的操作系统架构匹配。 - 您可以通过以下命令检查系统的架构:
uname -a arch
- 根据架构选择正确的版本重新下载。例如,如果您的系统是 ARM 架构,请确保下载 ARM 版本的二进制文件。
方法二:验证二进制文件完整性
- 下载完成后,使用以下命令检查文件是否可执行:
如果输出显示文件类型与您的系统架构不匹配,则需要重新下载正确的版本。file /usr/bin/obd
方法三:安装缺失的依赖项
- 检查是否有缺失的依赖项。可以尝试以下命令来安装常见的依赖项:
如果您使用的是非 Debian 系统,请根据您的包管理器安装相应的依赖项。sudo apt-get update && sudo apt-get install -y libstdc++6 libc6
方法四:重新安装 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 官方问答区 提供更详细的系统信息(如操作系统版本、架构等),以便获得进一步的帮助。
希望这些步骤能够帮助您解决问题!
详情请参考:
确认下架构是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 二进制文件
-
检查当前 obd 文件架构
使用以下命令检查/usr/bin/obd
是否为 ARM 架构的可执行文件:file /usr/bin/obd
如果输出显示文件类型为 x86_64 或其他非 ARM 架构,则需要重新下载适合 ARM 架构的版本。
-
下载适合 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()
-
安装下载的 RPM 包
如果您下载的是 RPM 包,可以使用以下命令安装:sudo rpm -ivh oceanbase-ce-<version>.el8.aarch64.rpm
方法二:手动编译 obd
如果无法找到预编译的 ARM 架构二进制文件,您可以尝试从源码编译 obd:
- 克隆 OceanBase 社区版源码仓库:
git clone https://github.com/oceanbase/oceanbase-ce.git cd oceanbase-ce
- 安装必要的依赖项:
sudo apt-get update && sudo apt-get install -y build-essential cmake libssl-dev
- 编译 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 文件或从源码编译。如果问题仍然存在,请提供更多详细信息(如具体的错误日志),以便进一步排查。
希望这些步骤能够帮助您解决问题!
更多信息请查看:
- 软硬件要求
- (可选)查看资源
- 搜索 RPM 包
- 19500.server_balance_cpu_mem_tolerance_percent.md
- 上传 RPM 包
- 下载 RPM 包
- 升级 obshell
(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)