TAKOYAKING’s blog

たこ焼き系

Mac ElcapitanでVagrantをアップデートしたら動かなくなった

動かなくなる手順

  1. Mac OSをEl Capitanにする
  2. VagrantをUpgradeする (1.4 -> 1.8)
  3. Vagrant upを実行すると「/usr/bin/vagrant Command not found」が表示される


解決手順

1. /usr/local/binの所有者をrootから現在のユーザーに変更する

sudo chown $(whoami):admin /usr/local/bin

(/usr/localもrootなら同様に現在のユーザーにする)

* 注 現在のユーザーがbobの場合
sudo whoami -> root
sudo $(whoami) -> bob


2. /usr/local/bin/vagrantの配下をrootから現在のユーザーに変更する

sudo chown - R $(whoami):admin /usr/local/bin


3. bash_profileを再度読み込ませる

source ~/.bash_profile


解決!
/usr/local/binの配下を全て現在のユーザーにしてしまうのもアリかもしれないけど今は少し様子見します。


原因

1. MacのOS絡みのセキュリティ構造の変化でVagrantの保存場所が追いやられ、変わってしまった
vagrant本体は/opt/vagrant/bin/vagrantに保存され、
シンボリックリンク/usr/local/bin/vagrantから経由される形式となった
*/usr/local/bin配下にショートカットが置かれ、opt配下に本体を配置される方法はLinuxの慣習にのっとった形式らしい

2. しかし、新しい保存場所である/usr/local/bin/配下の所有者はrootになっており、ユーザー権限でvagrant upを実行してもCommand not foundが出されてしまう
*試しにsudo vagant -vを実行するときちんと実行されるのがわかる

3. なので所有者を現在のユーザーに変更し、bashを再度読み込むことで現在のユーザーで実行することが可能となった


感想
最初はかなりイライラしたけどなんだかんだで結構権限周りの復習ができてよかった!
最初はpathが通ってないと思って疑ってたけどpathの設定いじらなくてよかった 笑

参考
Bug vagrant: command not found after install on Mac OSX 10.10.4 · Issue #6034 · mitchellh/vagrant · GitHub
VirtualBox - Vagrantをインストールすると/opt/vagrant以下にインストールされる(13813)|teratail
OS X El Capitanインストール後のエラー諸々の解決 - 文系プログラマによるTIPSブログ


追記 ~ VirtualBox編 ~
Virtualboxも動かなかった

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

調べるとVirtualBoxもElcapitanの新しいセキュリティ構造のせいでVirtualboxにアクセスできなくなっていた

$ which  VirtualBox
/usr/bin/VirtualBox

特に何も考えず、VIrtualBoxを再インストール(最新versionはvagrantにサポートされていないので失敗します)

$ which  VirtualBox
/usr/local/bin/VirtualBox

やっぱりvirtualboxも/usr/local/bin配下に変更されていました
でもVagrantの時に/usr/local/binは現在のユーザーに所有者を変更したからOKなはず

$ Vagrant up
Please install one of
the supported versions listed below to use Vagrant:

4.0, 4.1, 4.2, 4.3, 5.0

最新バージョンはサポートされてなかった・・・
5.0のVirtualBoxを再インストール!
正常に動きました!


Goodby baseball!!