news 2026/11/3 6:34:40

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/11/2 23:22:41

揭秘量子模拟误差来源:如何用R实现亚毫秒级测量精度提升

第一章:量子模拟与测量精度的挑战在现代量子计算研究中,量子模拟作为探索复杂物理系统的重要手段,正面临测量精度的根本性挑战。由于量子态的脆弱性和测量过程中的坍缩特性,如何在不破坏系统状态的前提下获取高精度信息&#xff0…

作者头像 李华
网站建设 2026/11/3 4:51:52

Dify导出格式兼容性难题破解,资深工程师亲授调试心法

第一章:Dify导出格式兼容性难题破解,资深工程师亲授调试心法在使用 Dify 构建 AI 应用时,导出功能常用于跨平台迁移或备份工作流配置。然而,不同版本或部署环境间的格式差异,可能导致导入失败或逻辑错乱。这一问题的核…

作者头像 李华
网站建设 2026/11/2 8:13:54

如何通过AI生成想要的标题字

告别手绘草稿和繁琐的软件操作,AI字体生成正在成为设计师和内容创作者的效率加速器。当你急需一个风格独特、抓人眼球的标题字时,AI工具提供了前所未有的可能性。但面对琳琅满目的选择,如何找到那款能精准理解你意图、高效产出高质量结果的神…

作者头像 李华
网站建设 2026/11/2 8:17:42

为什么90%的环境工程师都忽略了R语言的这3个溯源功能?

第一章:环境监测的 R 语言污染物溯源 在现代环境科学中,准确识别污染源是制定有效治理策略的关键。R 语言凭借其强大的统计分析与可视化能力,成为污染物溯源研究中的首选工具。通过多元统计方法结合空间数据分析,研究人员能够从复…

作者头像 李华
网站建设 2026/11/2 17:21:21

CANN 8.0编译器革新与算子融合驱动大模型推理加速新范式

📋 摘要 本文深度解析华为CANN 8.0异构计算架构的技术革新,以七层软件栈重构为基石,贯穿BiSheng编译器多前端支持、智能算子融合引擎、P-D分离推理架构三大核心技术。核心价值在于:首次系统化揭示如何通过Triton兼容前端将CUDA算子…

作者头像 李华
网站建设 2026/11/2 8:06:27

从数据到丰收,R语言构建精准种植建议系统全流程详解

第一章:从数据到丰收——R语言种植建议系统的意义与架构在现代农业中,数据驱动的决策正逐步取代传统经验判断。利用R语言构建种植建议系统,能够整合气象、土壤、作物生长周期等多维数据,为农户提供科学的播种、施肥与灌溉建议&…

作者头像 李华