get_download_file_path: command not found (asdf bug已解决)

今天遇到一个特别奇怪的问题,前前后后折腾了差不多一个小时,走了不少弯路,最后发现是官方插件的 bug。把整个排查过程分享出来,希望能帮到遇到同样问题的朋友。

事情的起因是这样的。我有一个 Laravel 项目,一直用 asdf 来管理 PHP 版本。如果你不知道 asdf 是什么,简单说它就是一个通用的版本管理工具,类似于 nvm 管理 Node.js、pyenv 管理 Python,但 asdf 可以用一个工具管理几乎所有语言的版本,非常方便。

复制代码
asdf install php 8.1.2

执行完这条命令后,屏幕上刷出了一堆信息,下载 PHP 源码什么的都挺正常,但最后报了两个错误:

复制代码
/home/shen/.asdf/plugins/php/bin/install: line 10: get_download_file_path: command not found
/home/shen/.asdf/plugins/php/bin/install: line 64: download_source: command not found

看到 command not found,我第一反应是不是 asdf 本身有问题。于是我开始了一系列「错误」的排查:首先,我尝试更新 php 插件:asdf plugin update php。结果提示已经是最新了。然后,我干脆把插件删了重装:asdf plugin remove php,再 asdf plugin add php。结果还是一样的错误。接着,我开始怀疑是不是 asdf 版本太旧了。我当时用的是 v0.14.0,于是把整个 ~/.asdf 目录删掉,重新 git clone 安装了 v0.15.0。结果呢?还是不行,同样的报错。到这里我意识到,问题可能根本不在 asdf 本身,而是出在 asdf-php 这个插件上。

于是我开始仔细排查插件的目录结构:

复制代码
ls -la ~/.asdf/plugins/php/bin/

发现 bin 目录下有这么几个文件:download、exec-env、install、latest-stable、list-all、list-bin-paths。看起来都挺正常的。

但是当我去看 install 脚本的内容时,发现它调用了 get_download_file_path 和 download_source 这两个函数。问题是,这两个函数定义在 download 脚本里,而 install 脚本压根就没有 source 引入 download 脚本!这不是妥妥的 bug 吗?

为了验证我的猜测,我又看了一下插件的 git 提交历史:

复制代码
cd ~/.asdf/plugins/php && git log --oneline -10

果然,最近有一个提交 e09cb20,commit message 写的是 "Move download logic to separate script and simplify install args"。翻译过来就是「把下载逻辑移到单独的脚本,简化安装参数」。

问题就出在这里!开发者把下载相关的函数移到了 download 脚本,但是 install 脚本里还在调用这些函数,却忘了引入 download 脚本。这是一个很典型的重构时遗漏的问题。

知道了原因,解决方法就很简单了------回退到这个提交之前的版本:

复制代码
cd ~/.asdf/plugins/php && git checkout 1eaf4de

然后再执行 asdf install php 8.1.2,一切正常,PHP 8.1.2 顺利安装完成。

相关推荐
Liu.7741 天前
uni-app 组件 uni-easyinput 常见 Bug 及解决方案
uni-app·bug
QQ骞3 天前
【bug的管理流程深入浅出】
软件测试·bug
Rambo.xia3 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
不知名的老吴4 天前
思考:要做到Bug Free需培养怎样的思维?
bug
河南花仙子科技6 天前
小游戏开发中常见的BUG类型及成因
人工智能·科技·游戏·bug
c238567 天前
Bug 猎手入门指南
c++·算法·bug
李永奉9 天前
杰理可视化SDK开发-【BUG】配置“TWS两边同时按消息使能”功能后,按键单击功能无效失灵
开发语言·单片机·嵌入式硬件·物联网·bug
AI大模型-小雄9 天前
充值Codex + GPT-5.5 并发 Bug 调试实战:从时序分析到回归测试
gpt·log4j·bug
穷人小水滴10 天前
(科幻) 备用肉身虫 (Backup Body Bug, BBB) 系列设定 (202607 更新)
aigc·bug·科幻
不爱记笔记12 天前
GPT-5.6 Sol 真实项目实测!Bug修复、UI重构与帆船游戏复刻
人工智能·gpt·ui·chatgpt·bug·openai