修改Erlang源码编译后,如何让asdf正常识别该版本?
解决asdf无法识别手动编译的Erlang 12.3.4.11版本问题
问题原因
你通过修改pkey.c解决了OpenSSL 3.0缺失FIPS_mode导致的编译失败,但直接执行make install不会让asdf识别到这个版本——因为asdf依赖kerl在专属目录管理Erlang版本,而非系统全局安装。
分步解决方案
进入kerl编译目录
因为你设置了KERL_AUTOCLEAN=0,编译后的源码存放在~/.kerl/builds/12.3.4.11目录下。进入这个文件夹(找不到的话可以用find ~/.kerl -name "12.3.4.11"搜索定位)。通过kerl将编译产物安装到asdf的Erlang目录
不要用通用的make install,而是用kerl命令把编译好的版本直接安装到asdf的管理路径中:kerl install 12.3.4.11 ~/.asdf/installs/erlang/12.3.4.11这个命令会把你修复好的Erlang编译产物移动到asdf检测版本的目录下。
执行reshim刷新asdf的版本注册表
更新asdf的链接,让它识别到新安装的版本:asdf reshim erlang 12.3.4.11之后你就可以正常使用
asdf global erlang 12.3.4.11或asdf local erlang 12.3.4.11来切换到这个版本了。
额外提示
- 如果你之前已经执行过
make install把版本装到了系统全局,建议先清理掉避免冲突:sudo make uninstall # 在kerl编译目录下执行此命令 - 确保你的kerl和asdf是较新的稳定版本,避免出现兼容性问题。
内容的提问来源于stack exchange,提问作者Rashid
相关产品推荐
相关产品推荐

