如何将sdkman安装的hadoop关联到brew以避免重复安装
解决方案:将sdkman安装的Hadoop关联到Homebrew
Homebrew默认仅识别自身安装到$(brew --prefix)/Cellar目录下的依赖包,sdkman安装的Hadoop默认存放在用户目录的.sdkman路径下,不在Homebrew的扫描路径中,因此会被判定为未安装。你可以通过以下两种合规方式解决,无需使用--ignore-dependencies参数:
方案1:创建Homebrew兼容的软链接(更推荐,无需修改配方)
- 第一步:确认sdkman安装的Hadoop路径和Homebrew要求的Hadoop版本
执行echo $HADOOP_HOME获取当前sdkman激活的Hadoop路径,再执行brew deps hive查看Hive依赖的Hadoop版本号(记为$TARGET_VERSION) - 第二步:在Homebrew的Cellar目录下创建对应Hadoop版本的目录
执行命令:mkdir -p $(brew --prefix)/Cellar/hadoop/$TARGET_VERSION - 第三步:将sdkman的Hadoop文件软链接到上述目录
执行命令:ln -s $HADOOP_HOME/* $(brew --prefix)/Cellar/hadoop/$TARGET_VERSION/ - 第四步:触发Homebrew的链接注册
执行命令:brew link hadoop,执行完成后Homebrew就会识别到Hadoop已安装
方案2:修改Hive的安装配方,移除强制Hadoop依赖
如果你的Hadoop版本和Homebrew要求的版本不兼容,可选择修改安装配方:
- 第一步:执行
brew edit hive打开Hive的安装配方文件 - 第二步:找到配置项
depends_on "hadoop",将其注释或删除后保存文件 - 第三步:正常执行
brew install hive即可跳过Hadoop依赖检查,安装完成后在Hive的配置文件中指定sdkman的Hadoop路径即可
注意事项
- 后续通过sdkman切换Hadoop版本后,需要同步更新
$(brew --prefix)/Cellar/hadoop/下的软链接,再执行brew link --overwrite hadoop同步版本 - Hive安装完成后需确认环境变量
HADOOP_HOME指向sdkman的Hadoop路径,避免调用到错误的二进制文件 - 该方案仅适用于用户态工具依赖关联,不要对系统核心依赖使用该操作,避免破坏Homebrew的依赖树
内容的提问来源于stack exchange,提问作者B3n
相关产品推荐
相关产品推荐

