windows - Vagrant shell provisioner 在 Mac 主机上失败但在 Windows 主机上工作

标签 windows macos shell vagrant

我有以下带有 shell 供应器的 vagrant 文件,它在 Windows 7 VirtualBox 上运行良好但在我的 macbook pro OSX 10.9.2 上运行时失败

更具体地说,供应商“似乎”无法安装 requirements.txt。如果我通过 SSH 进入盒子并以 root 身份重新运行 bootstrap.sh,它就可以工作。我知道 long error 消息会有所帮助,但我认为这个问题旨在理解为什么虚拟盒子设置会在一个环境而不是另一个环境中工作。尤其是在启动这样一个简单的 shell 脚本时。

非常感谢任何想法或建议!

Vagrant 文件

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.hostname = "test-box"

  config.vm.box = "hashicorp/precise64"

  config.vm.provision :shell, :path => "bootstrap.sh"
end

bootstrap.sh

#!/usr/bin/env bash

apt-get update
apt-get install -y build-essential curl git libffi-dev python-dev python-pip \
libxml2-dev libxslt1-dev python-software-properties g++ make

pip install --upgrade distribute
pip install -r /vagrant/requirements.txt

requirements.txt

Scrapy>=0.18.2
Twisted>=13.1.0
lxml>=3.2.3
queuelib>=1.0
w3lib>=1.3

最佳答案

分配给 VM 的内存是相对于 HOST 的可用内存而言的。在这种情况下,MBP 有 4gb,VM 默认为大约 300mb。这不足以成功安装 requirements.txt。解决方法是增加 Vagrant 文件中所需的最小内存,例如:

config.vm.provider :virtualbox do |vb|

vb.memory = 2048
vb.cpus = 2

end

这方面的教训是确保尽可能详细地设置 Vagrant 文件,以准确地跨系统复制。

关于windows - Vagrant shell provisioner 在 Mac 主机上失败但在 Windows 主机上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23368786/

相关文章:

c++ - 如何使用 C++ 将 Windows 7 锁定为单个程序?

c++ - 解析文件路径的最佳方法是什么?

windows - 是否可以从 32 位应用程序读取 64 位进程的进程内存?

macos - 有没有一种快速、简单的方法来转储 MacOS X 钥匙串(keychain)的内容?

macos - Swift NotificationCenter 无法解包 Optional.None

linux - 如何以最少的击键启动 Bash 脚本

windows - 将 QString 转换为 BSTR,反之亦然

macos - macOS 上奇怪的并行部分 OpenMP 行为

带双引号的 Ruby shell 命令

git - 使用带有格式的bash列出目录中的git分支