说明:

解决方案

查找到一个方法 用 rsync 解决 win7 下 vagrant 共享目录读取速度慢问题, 解决了, 附上解决方法

在 Vagrantfile 文件中设置同步目录为 rsync

  1. config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__auto: true

下载Cygwin然后查找出rsync然后安装。
把rsync.exe的路径加入windows的path环境。
执行 vagrant reload 如果加载失败,提示目录不对什么的,需要修改下vagrant的代码。
Vagrant\embedded\gems\gems\vagrant-1.*.*\plugins\synced_folders\rsync\helper.rb

  1. if Vagrant::Util::Platform.windows?
  2. # rsync for Windows expects cygwin style paths, always.
  3. hostpath = "/cygdrive" + Vagrant::Util::Platform.cygwin_path(hostpath)
  4. end

再次执行 vagrant reload 现在可以享受 windows下的vbox极速共享目录了。

追溯历史

  • rsync 报错
    报错简要内容是 : connection unexpectedly closed (0 bytes received so far) [receiver]
  1. Error: Warning: Permanently added '[127.0.0.1]:2222' (RSA) to the list of known hosts.
  2. rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
  3. rsync error: error in rsync protocol data stream (code 12) at io.c(600) [receiver=3.0.6]
  4. rsync: connection unexpectedly closed (0 bytes received so far) [sender]
  5. rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]

由于当时登陆 vargrant 时候用的是 git 文件夹下边的 ssh.exe, 运行 vagrant ssh 登陆时候需要客户端, 所以我使用了这个, 网上有个文章是考虑使用 rsyncssh 客户端使用同一个程序下的, 所以我下载了 cygwin Cygwin, 在 [Vagrant] 中 RSYNC
中提示使用 Cygwin 或者 MinGW, 将 git 取消掉全局路径, 然后加入 Cygwin 的全局路径, 至此这个错误已经解决 , 重新运行 vagrant reload 时候又出现了另一个错误

  • rsync 第二个错误
  1. Error: Warning: Permanently added '[127.0.0.1]:2222' (RSA) to the list of known hosts.
  2. rsync: change_dir "/g/wamp/www" failed: No such file or directory (2)
  3. FATAL I/O ERROR: dying to avoid a --delete-during issue with a pre-3.0.7 receiver.
  4. rsync error: requested action not supported (code 4) at flist.c(1882) [sender=3.1.0]

这里提示的错误是 FATAL I/O ERROR: dying to avoid a --delete-during issue with a pre-3.0.7 receiver, 这里的意思是说之前的版本的一个参数导致的严重的 I/O 错误
从网上找的问题是 rsync 本地用的版本是 3.1.1, 而服务器上用的 3.0.7, 这里就解决服务器上安装 rsync 3.1.1

  1. configure: error:
  2. *** These critical programs are missing or too old: as ld compiler
  1. wget http://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.gz
  2. tar -zxvf binutils-2.25.tar.gz
  3. cd binutils-2.25
  4. ./configure
  5. make
  6. make install
  7. ld v

gcc
安装 compiler 是不是传说中的 gcc, 经提示就是 gcc
参考编译地址: CentOS 6.4 编译安装 gcc 4.8.1
我还是下载的最新版 : http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/

  1. wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.9.2/gcc-4.9.2.tar.gz
  2. tar -zxvf gcc-4.9.2.tar.gz
  3. cd gcc-4.9.2
  4. ./contrib/download_prerequisites # download dependence
  5. mkdir build
  6. cd build
  7. ../configure --disable-multilib # disable 32bit
  8. make
  9. make install

这里发现出错了

  1. make[3]: *** [s-attrtab] Killed
  2. make[3]: Leaving directory ...
  3. make[2]: *** [all-stage1-gcc] Error 2
  4. make[2]: Leaving directory ...
  5. make[1]: *** [stage1-bubble] Error 2
  6. make[1]: Leaving directory ...

以下的解决方案是 , 来自 Make exits with “Error 2” when trying to install gcc-4.8.1

  1. SWAP=/tmp/swap
  2. dd if=/dev/zero of=$SWAP bs=1M count=500
  3. mkswap $SWAP
  4. swapon $SWAP

文章中给出的翻译的结果是, 首先要安装 binutils 这个我们第一步已经安装了. 这个问题是 OOM 杀掉了进程, 安装中使用的 RAMEC2内存要大, 导致进程被杀掉了. 上边代码就是把 swap 设置为 500M

至此未成功, 任务 终结~~~