为何Vagrant已装Homestead v10.1.1却尝试下载v9.7.2?
问题分析与解决方法
哥们,我来给你捋捋为啥会出现这个让人头疼的情况:你的问题核心在于Homestead的Vagrantfile里设置了Box版本约束为~> 9,这个约束的意思是「只允许9.x系列的最新版本,不兼容10.x及以上版本」。所以哪怕你本地已经装了10.1.1版的Box,Vagrant会判定它不符合约束条件,进而去下载符合~>9的最高版本(也就是9.7.2)。
具体原因拆解
你执行git checkout release拿到的Homestead代码,大概率对应的是仍绑定9.x Box版本的分支——不同版本的Homestead代码会对应不同的Box版本要求,旧的release分支会把版本锁在9.x,而新的分支才会适配10.x的Box。
解决办法
这里给你几个可行的方案:
方案1:修改Homestead的Vagrantfile版本约束
进入你的homestead目录,找到Vagrantfile文件,搜索到类似下面的代码行:
config.vm.box_version = "~> 9"
把它改成适配10.x版本的约束:
config.vm.box_version = "~> 10" # 或者直接指定你已安装的版本: # config.vm.box_version = "10.1.1"
保存后再执行vagrant up,Vagrant就会乖乖使用你本地的10.1.1版本Box了。
方案2:在Homestead.yaml里指定版本
你已经知道可以在Homestead.yaml里添加版本配置,这个设置会直接覆盖Vagrantfile里的版本约束,是个快速解决的办法:
# 在Homestead.yaml中新增这一行 version: 10.1.1
方案3:切换到对应10.x Box的Homestead分支
如果你想长期使用10.x的Box,建议确认你是否拉到了最新的release分支,或者直接切换到明确适配10.x的分支:
cd homestead # 切换到v10分支 git checkout v10 # 或者拉取最新的release代码 git pull origin release
更新代码后,Vagrantfile里的版本约束应该会自动适配10.x系列,不用再手动修改。
内容的提问来源于stack exchange,提问作者scibuff
相关产品推荐
相关产品推荐

