我刚刚用命令安装了vagrant box:
vagrant init ubuntu/xenial64
并启动它:
vagrant up --provider virtualbox
在ssh-ing之后我找不到文件夹/ vagrant
我做错了什么?
根据documentation,应该有/vagrant
文件夹:
默认情况下,Vagrant将共享您的项目目录(目录 使用Vagrantfile)到/ vagrant。
这是screenshot,显然没有/ vagrant文件夹
我的主机环境是:
这是我的Vagrant文件:
# -*- 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
这是我的配置文件:
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
答案 0 :(得分:10)
<强>更新强>
此问题最终在版本v20160921.0.0
及更高版本的官方16.04流浪盒中修复。 v20160909.0.0
之前的版本也已修复,但还有另一个不相关的问题,正如Poma在评论中指出的那样。
您可以使用以下命令下载新版本,并使用新版本替换旧虚拟机实例。但是,升级该框会擦除原始VM实例。
vagrant box update
如果您因某些原因不想擦除虚拟机,您仍然可以在下方应用我原来的修补程序。
原帖:
显然官方的ubuntu / xenial64图片已损坏,如this bug report on launchpad所示。
以下是路易斯·扎克曼(Louis Zuckerman)对所有问题的引用,这些问题从我所知道的20160627.0.0
版本开始仍未修改:
xenial的官方流浪盒有很多问题:
- 缺少必要的包(同步文件夹无效,无配置管理)
- 默认/ vagrant synced文件夹已禁用
- vm名称是静态的,因此您只能在主机上拥有该框的一个实例
醇>[...]
这些步骤为我解决了问题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
本答案的评论中指出了对此问题进行更详细的讨论here。
答案 1 :(得分:3)
人们有没有使用bento / ubuntu-16.04的原因?
看到此回复: https://github.com/mitchellh/vagrant/issues/7155
由规范在ubuntu命名空间下发布的16.04框 非常破碎。他们不遵循建议的指南如何 构建一个Vagrant框,它们缺少诸如guest之类的关键组件 添加,必需的包,或他们做硬编码的事情 无法运行并发VM的主机名。 ... 一般来说,用户在便当下的盒子上取得了更大的成功 命名空间。一个常见的误解是命名空间如&#34; ubuntu&#34; 代表Ubuntu盒子的规范空间。这是不真实的。
似乎有很多理由不使用ubuntu / xenial64框,只使用bento命名空间中的工作框而不是试图破解ubuntu命名空间框才能工作。 Ubuntu品牌可能会让一些人看得更舒服,但我认为它已经被Vagrant打破了。
答案 2 :(得分:2)
由于某种原因,ubuntu / xenial64没有同步/流浪文件夹。
我必须在流浪文件中设置自己的文件:
config.vm.synced_folder ".", "/vagrant"
第一个选项是源(Windows),第二个选项是目标(Ubuntu)
答案 3 :(得分:0)
默认情况下,Vagrant会在与Vagrantfile所在文件夹同步的来宾计算机上安装/ vagrant文件夹。
为什么流浪汉无法安装您的共享文件夹有一些原因,最常见的是您没有正确安装和初始化虚拟机驱动程序。当您没有相同版本的虚拟盒包上的内核头文件。
首先请确保您的Vagrantfile上没有此行,因为这会禁用同步文件夹:
config.vm.synced_folder ".", "/vagrant", disabled: true
如果您没有,系统上的虚拟盒模块可能出错,我建议您检查驱动程序是否执行了以下步骤。
销毁正在运行的虚拟机:
vagrant destroy -f
您可以使用以下方法检查内核版本:
uname -r
之后安装内核的标头:
sudo apt-get install linux-headers-'uname-r'
然后,安装内核的虚拟机包:
sudo apt-get install virtualbox virtualbox-dkms virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-additions-iso
加载虚拟机驱动程序:
sudo modprobe vboxdrv
现在您可以尝试再次使用vagrant安装虚拟机:
vagrant up
请记住,您可以将vm重新配置为拥有所需数量的共享文件夹,您可以使用以下命令执行此操作:
config.vm.synced_folder "src/", "/srv/website"
第一个参数是主机上文件夹的路径,第二个参数是客户机上文件夹的位置。
希望这会对你有所帮助。
答案 4 :(得分:0)
您可以尝试安装vbguest添加插件,看看是否有帮助。
$ vagrant plugin install vagrant-vbguest
此外,有时当您在计算机上安装vbox时,如果您未授予其要安装的其他驱动程序的权限,则它将无法正常运行。您可能需要重新安装以确保在要求安装某些驱动程序时接受提示。
如果这一切都不起作用,你可能会尝试在没有gui的情况下启动,并在尝试启动流浪机时粘贴输出。