Vagrantを使い始めて5年以上は経っているんですが、アップグレードしたら初めてエラーが出て使えなくなりました。
Vagrant本体とプラグインのバージョン違いで不整合が起きて、バージョン互換性の確認を求められます。
その復旧作業の備忘録です。
Vagrant | 2.2.7 -> 2.2.14 |
Windows 10 Pro | ビルド 18363 |
vagrantとプラグインの不整合でエラー
まずはエラーの内容です。
vagrant -version
Vagrant failed to initialize at a very early stage:
The plugins failed to initialize correctly. This may be due to manual
modifications made within the Vagrant home directory. Vagrant can
attempt to automatically correct this issue by running:
vagrant plugin repair
If Vagrant was recently updated, this error may be due to incompatible
versions of dependencies. To fix this problem please remove and re-install
all plugins. Vagrant can attempt to do this automatically by running:
vagrant plugin expunge --reinstall
Or you may want to try updating the installed plugins to their latest
versions:
vagrant plugin update
Error message given during initialization: Unable to resolve dependency: user requested 'vagrant-itamae (= 0.2.1)'
Vagrantはかなり早い段階で初期化に失敗しました。
プラグインが正しく初期化できませんでした。これは手動の Vagrantのホームディレクトリ内で行われた変更。Vagrantは以下のことができます。これを実行して、この問題を自動的に修正しようとします。
vagrant plugin repair
Vagrantが最近更新された場合、このエラーは互換性がないために発生する可能性があります。バージョンの依存関係を確認してください。この問題を修正するには、すべてのプラグインに対応しています。Vagrantはこれを実行することで自動的に試みます。
vagrant plugin expunge --reinstall
または、インストールされているプラグインを最新のバージョンにします。
vagrant plugin update
初期化中にエラーメッセージが表示されました。
Unable to resolve dependency: user requested 'vagrant-itamae (= 0.2.1)'
筆者訳
どうやら 'vagrant-itamae' プラグインとアップグレードしたvagarntのバージョンが合わないらしい。
修復作業
エラーメッセージに出ているとおりに実行してみます。まずはプラグインの修復から。
vagrant plugin repair
Repairing currently installed global plugins. This may take a few minutes...
Fetching thor-1.1.0.gem
Fetching net-telnet-0.1.1.gem
Fetching sfl-2.3.gem
Fetching specinfra-2.82.23.gem
Fetching hashie-4.1.0.gem
Fetching ansi-1.5.0.gem
Fetching schash-0.1.2.gem
Fetching itamae-1.11.2.gem
Fetching vagrant-itamae-0.2.1.gem
Fetching micromachine-3.0.0.gem
Fetching vagrant-vbguest-0.29.0.gem
Failed to automatically repair installed Vagrant plugins. To fix this
problem remove all user installed plugins and reinstall. Vagrant can
do this for you automatically by running the following command:
vagrant plugin expunge --reinstall
Failure message received during repair:
Unable to resolve dependency: user requested 'vagrant-itamae (= 0.2.1)'
インストールされたVagrantプラグインの自動修復に失敗しました。この問題を修正するには、ユーザーがインストールしたプラグインを全て削除して再インストールしてください。Vagrantは以下のコマンドを実行することで自動的にこれを行うことができます。
vagrant plugin expunge --reinstall
修復中に失敗メッセージを受信しました。
Unable to resolve dependency: user requested 'vagrant-itamae (= 0.2.1)'
筆者訳
ダメでしたね? ただ見えてきました。
全プラグインの再インストール
メッセージのとおり、全プラグインの再インストールを行います。
(修復で上手くいった人は不要です。)
vagrant plugin expunge --reinstall
This command permanently deletes all currently installed user plugins. It should only be used when a repair command is unable to properly fix the system.
Continue? [N]:
このコマンドは、現在インストールされているすべてのユーザープラグインを永久に削除します。これは、修復コマンドがシステムを適切に修復できない場合にのみ使用してください。
筆者訳
なんで続けるか確認するかと思ったら、結構ヘビーなやり方らしい。
修復が失敗してるんで、やらないとしょうがないでしょう。
'y' を押します。
Continue? [N]: y
All user installed plugins have been removed from this Vagrant environment!
Vagrant will now attempt to reinstall user plugins that were removed.
Installing the 'vagrant-itamae' plugin. This can take a few minutes...
Fetching thor-1.1.0.gem
Fetching net-telnet-0.1.1.gem
Fetching sfl-2.3.gem
Fetching specinfra-2.82.23.gem
Fetching hashie-4.1.0.gem
Fetching ansi-1.5.0.gem
Fetching schash-0.1.2.gem
Fetching itamae-1.11.2.gem
Fetching vagrant-itamae-0.2.1.gem
Fetching micromachine-3.0.0.gem
Fetching vagrant-vbguest-0.29.0.gem
Installed the plugin 'vagrant-itamae (0.2.1)'!
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Installed the plugin 'vagrant-vbguest (0.29.0)'!
動作確認
復旧作業が終わったので動作確認をします。
vagrant -v
Vagrant 2.2.14
ついでにプラグインも確認。
vagrant plugin list
vagrant-itamae (0.2.1, global)
vagrant-vbguest (0.29.0, global)
- Version Constraint: > 0
大丈夫なよう。念の為、プラグインもアップグレードしとこう。
vagrant plugin update
Updating installed plugins...
All plugins are up to date.
最後の動作確認。
vagrant -v
Vagrant 2.2.14