Vagrant/Homestead provisioning now fails on Composer update


My UserFrosting Homestead Vagrant box worked last weekend, but now when I vagrant up --provision it fails trying to update Composer:

==> homestead-7: Running provisioner: shell...
    homestead-7: Running: script: Update Composer
    homestead-7: Updating to version 1.8.3 (stable channel).
    homestead-7:   [ErrorException]
    homestead-7:   rename(/home/vagrant/.composer/cache/composer-temp.phar,/usr/local/bin/composer): Permission denied
    homestead-7: self-update [-r|--rollback] [--clean-backups] [--no-progress] [--update-keys] [--stable] [--preview] [--snapshot] [--set-channel-only] [--] [<version>]
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.

I can still vagrant ssh, but it seems my UserFrosting installation has the latest version:

vagrant@homestead:~$ ls
phpmyadmin  userfrosting
vagrant@homestead:~$ cd userfrosting/
vagrant@homestead:~/userfrosting$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 0 updates, 0 removals
Generating autoload files

Others with the same problem:


And an older thread:

This probably isn’t a UserFrosting bug, but it looks like it will affect anyone trying to use the Homestead approach in the docs.

Any suggestions for how best to fix this? If not, at least this is a heads-up that the Homestead installation instructions in the docs probably won’t work for new users right now.

Update: Sorry for the multiple edits. I initially thought the laravel/homestead box version 7 contained Homestead 7, but it contains Homestead 8. Removed that text.

Just after posting I found the solution: Updating Homestead to v8.0.2.

Use the instructions here: Laravel Homestead - Laravel - The PHP Framework For Web Artisans

But use git checkout v8.0.2 instead of git checkout v8.0.1. They haven’t updated the docs at the time of writing.

This was a bug that they just fixed: