news 2026/6/10 22:10:46

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 顺利安装完成。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 21:34:56

揭秘Dify工作流重试策略:如何实现故障自愈与稳定性跃升

第一章:揭秘Dify工作流重试机制的核心价值在构建高可用的AI应用时,网络波动、服务限流或临时性故障难以避免。Dify 工作流的重试机制正是为应对这类非永久性错误而设计,确保任务在短暂异常后仍能自动恢复执行,提升整体流程的稳定性…

作者头像 李华
网站建设 2026/6/10 15:07:29

Dify依赖检查没人讲清楚?这篇万字长文彻底说透了

第一章:Dify工作流依赖检查概述在构建基于 Dify 的复杂应用时,工作流的稳定性与可维护性高度依赖于组件间的依赖关系管理。依赖检查机制能够提前识别节点间的数据流向问题、资源缺失或循环引用等潜在风险,确保工作流在执行前具备完整的上下文…

作者头像 李华
网站建设 2026/6/9 23:35:32

R语言在金融风控中的应用(波动率预测模型全解析)

第一章:金融风险的 R 语言波动率预测在金融风险管理中,波动率是衡量资产价格变动剧烈程度的核心指标,广泛用于期权定价、投资组合优化与风险价值(VaR)计算。R 语言凭借其强大的统计建模能力和丰富的金融扩展包&#xf…

作者头像 李华
网站建设 2026/6/10 13:19:42

导师没教,但博士都在悄悄用的检测工具,这个工具太给力了

对博士而言,“小论文”从来不是“小事”。无论是阶段性成果汇报、期刊投稿,还是毕业硬性指标,博士小论文都直接关系到科研进度、导师评价,甚至是能否顺利毕业。很多博士真正焦虑的,并不是写不出来,而是——…

作者头像 李华
网站建设 2026/6/10 13:18:32

【高可用多模态系统构建】:必须掌握的3种Docker启动编排策略

第一章:多模态 Agent 的 Docker 启动顺序在构建基于多模态能力的智能 Agent 系统时,Docker 容器化部署成为确保环境一致性与服务解耦的关键手段。合理的启动顺序能够避免因依赖服务未就绪而导致的初始化失败问题。依赖服务优先启动 多模态 Agent 通常依赖…

作者头像 李华
网站建设 2026/6/10 13:20:34

为什么你的AI服务总崩溃?,深度剖析Dify与Spring AI异常传递链

第一章:为什么你的AI服务总崩溃?——异常传递链的隐秘真相 在构建高可用AI服务时,开发者往往聚焦于模型精度与推理性能,却忽视了异常处理机制的设计。一个微小的空指针或网络超时,可能沿着调用链逐层放大,最…

作者头像 李华