LoginSignup
8
5

More than 5 years have passed since last update.

Windows版vagrantの起動時にhostsでPermission deniedになる件の対策

Last updated at Posted at 2016-02-24

思い出したころにvagrant upしようとすると、起きなくなっていることがあります。

管理者権限のPowerShellやCMDから起動しているのに(以前は起動していたのに)DNSの設定ができないというだけで、全てがままならない状況でした。

エラー内容
==> default: adding to (C:/WINDOWS/system32/drivers/etc/hosts) : 192.168.33.10  wordpress.local  # VAGRANT: 2ff7cf4b5937
c1d75349461cf6fc5b78 (default) / 1c5c4c7c-1f49-498c-9ce2-98da43b72b7e
C:/Users/***/.vagrant.d/gems/gems/vagrant-hostsupdater-1.0.1/lib/vagrant-hostsupdater/HostsUpdater.rb:85:in `initialize
': Permission denied @ rb_sysopen - C:/WINDOWS/system32/drivers/etc/hosts (Errno::EACCES)

vagrantのアンインストール→新規インストール等で治ることもあるようですが、いま1回起動してくれればいい!というときの応急処置をメモ。

環境

  • OS Microsoft Windows [Version 10.0.10586]
  • Ruby ruby 2.2.2p95 (2015-04-13 revision 50295) [x64-mingw32]
  • Vagrant 1.8.1
  • VirtualBox 4.4.34

※Windows10だと、VirtualBox 5.0のインストールに失敗するんですよね…。

hostsへ手動で追記する

書き込む内容について

エラー文の中に含まれる設定値をコピーしておきます。
設定によって変わるので必ず確認を。

今回はVCCW( http://vccw.cc/ )を使っている為下記のとおり。

hostsへ追記する内容
192.168.33.10  wordpress.local  # VAGRANT

管理者権限で起動した「メモ帳」を使って、hostsを手動編集

Windows10での例)
スタートメニューを開いて「メモ」などと入力>検索結果のメモ帳を右クリックして「管理者で実行」のうえ、hostsを開いてさっきの内容を新しい行に追記。

Windowsのhostsの所在
C:/WINDOWS/system32/drivers/etc/hosts

※「開く」ダイアログでは、ファイルの種類を「テキスト文書(*.txt)」から「すべての種類」に変更すること。

CMD.exe等で、DNSをフラッシュする

cmd.exe
C:\xxx> ipconfig /flushdns

Windows IP 構成

DNS リゾルバー キャッシュは正常にフラッシュされました。

vagrant up時にエラーを出力している部分を書き換え

※当方Rubyを扱ったことがありませんので、もっと良い方法がありましたらお知らせください。

C:/Users/***/.vagrant.d/gems/gems/vagrant-hostsupdater-1.0.1/lib/vagrant-hostsupdater/HostsUpdater.rb

85から87までの行頭に#をつけてコメントアウト

HostsUpdater.rb
 81       if !File.writable_real?(@@hosts_path)
 82         sudo(%Q(sh -c 'echo "#{content}" >> #@@hosts_path'))
 83       else
 84         content = "\n" + content
 85 #       hostsFile = File.open(@@hosts_path, "a")
 86 #       hostsFile.write(content)
 87 #       hostsFile.close()
 88       end

※2016/2/24現在、File.writable_realの結果がtrueでも書き込めない模様...?

あとは普通にvagrant upで無事起動しました。

todo

RubyInstallerでRuby2.2.4が提供されているようなのでアップグレードしてみる。
(2016/2/26追記)Ruby2.2.4へアップグレードしたところvagrant up時にhostsへの書き込みができるようになりました。

一瞬動きましたが、数日後には動かなくなっておりました。

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5