我刚刚用命令安装了stream浪盒子:
vagrant init ubuntu/xenial64
并启动它:
vagrant up --provider virtualbox
在ssh-ing之后,我找不到文件夹/stream浪汉
我做错了什么?
根据文件应该有/vagrant
文件夹:
默认情况下,Vagrant会将您的项目目录(包含Vagrantfile的目录)共享到/ vagrant。
这里是一个截图 ,显然没有/ vagrant文件夹
我的主机环境是:
这是我的stream浪文件:
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure(2) do |config| config.vm.box = "ubuntu/xenial64" config.vm.provision "shell", path: "provision.sh" config.vm.provider "virtualbox" do |vb| # Display the VirtualBox GUI when booting the machine vb.gui = true # Customize the amount of memory on the VM: vb.memory = "4096" vb.cpus = "2" # Hack for nom global install # https://github.com/npm/npm/issues/7308 vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"] end end
这里是我的configuration文件:
echo "------------------------------" echo "--- Updating packages list ---" echo "------------------------------" apt-get -y update echo "-----------------------" echo "--- Installing curl ---" echo "-----------------------" apt-get -y install curl echo "----------------------" echo "--- Installing git ---" echo "----------------------" apt-get -y install git echo "-----------------------------" echo "--- Installing python-pip ---" echo "-----------------------------" apt-get -y install python-pip yes | pip install --upgrade pip echo "--------------------------" echo "--- Installing node.js ---" echo "--------------------------" apt-get -y install nodejs echo "----------------------" echo "--- Installing npm ---" echo "----------------------" apt-get -y install npm
更新:
这个问题终于在官方的16.04流浪盒v20160921.0.0
及更高版本中得到了修复。 在此之前的版本v20160909.0.0
也是固定的,但有另一个无关的问题,如波马在评论中指出的。
您可以使用以下命令下载新版本,并用新的版本替换旧的VM实例。 但是, 升级该框会清除原始VM实例。
vagrant box update
如果由于某种原因不想擦除虚拟机,则仍然可以应用下面的原始修复程序。
原帖:
显然官方的ubuntu / xenial64图像被破坏了,正如这个启动板上的bug报告所示 。
这里有一个由Louis Zuckerman的评论引用,所有的问题仍然是从20160627.0.0
版本中20160627.0.0
出来的:
官方的xenial流浪箱有很多问题:
- 必要的软件包丢失(同步文件夹不工作,没有配置管理)
- 默认/流浪同步文件夹被禁用
- 虚拟机名称是静态的,所以你只能在主机上有一个虚拟机的实例
[…]
这些步骤为我解决了问题1和2:
ssh进入包装盒并手动安装缺少的客人补充品
vagrant ssh sudo apt-get install virtualbox-guest-utils exit
手动将缺少的安装点添加到您的Vagrantfile
config.vm.synced_folder ".", "/vagrant/" # fix broken ubuntu/xenial64 image
要解决第三个问题,您必须手动为该框添加一个特定的名称,方法是将VirtualBox的提供程序特定选项添加到您的Vagrant文件中。
config.vm.provider "virtualbox" do |vb| vb.name = "This_Name_Is_Unique_For_This_Machine" end
在这个问题的评论中指出了这个问题的更详细的讨论。
人们有没有使用bento / ubuntu-16.04的原因?
看到这个回应: https : //github.com/mitchellh/vagrant/issues/7155
在16.04的ubuntu命名空间下的规范发布的框非常破碎。 他们不按照建议的指导如何建立一个Vagrant框,他们缺少关键组件,如客人增加,所需的软件包,或者他们做的事情,如硬编码的主机名,使运行并发虚拟机不可能。 …一般来说,用户在bento命名空间下的盒子已经取得了更大的成功。 一个常见的误解是像“ubuntu”这样的命名空间代表了Ubuntu盒的规范空间。 这是不真实的。
似乎有很多原因不使用ubuntu / xenial64框,只是使用bento命名空间中的工作框,而不是试图破解ubuntu命名空间框的工作。 Ubuntu品牌对某些人来说可能会更舒服,但我认为它与Vagrant打破了关系。
出于某种原因,ubuntu / xenial64不带有同步/ vagrant文件夹。
我必须在流浪文件中设置我自己的:
config.vm.synced_folder ".", "/vagrant"
第一个选项是源(Windows),第二个是目标(Ubuntu)
流浪同步文件夹
Vagrant默认在与流浪文件所在的文件夹同步的访客机器上安装/ vagrant文件夹。
有一些原因,为什么vagrant无法安装您的共享文件夹,最常见的是,您没有正确安装和初始化virtualbox驱动程序。当没有在相同版本的虚拟内核标头时发生这种情况盒包装。
首先确保你的Vagrant文件没有这一行,因为这将禁用同步文件夹:
config.vm.synced_folder ".", "/vagrant", disabled: true
如果你没有,可能是你的系统上的virtualbox模块出现错误,我建议你检查驱动程序,执行以下步骤。
销毁正在运行的虚拟机:
vagrant destroy -f
您可以使用以下命令检查内核版本:
uname -r
之后,安装你的内核的标题:
sudo apt-get install linux-headers-'uname-r'
然后,为您的内核安装virtualbox软件包:
sudo apt-get install virtualbox virtualbox-dkms virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-additions-iso
加载virtualbox驱动程序:
sudo modprobe vboxdrv
现在,您可以尝试再次使用vagrant挂载虚拟机:
vagrant up
请记住,您可以重新配置您的虚拟机有尽可能多的共享文件夹,你可以做到这一点:
config.vm.synced_folder "src/", "/srv/website"
第一个参数是主机上文件夹的路径,第二个参数是文件夹出现在客机上的位置。
希望这可以帮助你。
你可以尝试安装vbguest addition插件,看看是否有帮助。
$ vagrant plugin install vagrant-vbguest
vb-guest插件回购
另外,有时当你在计算机上安装vbox时,如果你不想给它安装额外的驱动程序的权限,它将无法正常工作。 您可能需要重新安装,以确保在请求安装某些驱动程序时接受提示。
如果这些都不起作用,那么可以尝试在没有GUI的情况下启动,并在试图启动流浪机时粘贴输出。