我如何在ubuntu / xenial64上获取/ vagrant文​​件夹

时间:2016-05-17 17:59:33

标签: ubuntu vagrant

我刚刚用命令安装了vagrant box:

vagrant init ubuntu/xenial64

并启动它:

vagrant up --provider virtualbox
在ssh-ing之后我找不到文件夹/ vagrant

我做错了什么?

根据documentation,应该有/vagrant文件夹:

  

默认情况下,Vagrant将共享您的项目目录(目录   使用Vagrantfile)到/ vagrant。

这是screenshot,显然没有/ vagrant文​​件夹

我的主机环境是:

  • windows 7
  • Vagrant版本1.8.1
  • Vbox版本5.0.20r106931

这是我的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

5 个答案:

答案 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的官方流浪盒有很多问题:

     
      
  1. 缺少必要的包(同步文件夹无效,无配置管理)
  2.   
  3. 默认/ vagrant synced文件夹已禁用
  4.   
  5. vm名称是静态的,因此您只能在主机上拥有该框的一个实例
  6.         

    [...]

这些步骤为我解决了问题1和2:

  1. ssh进入框并手动安装缺少的客人添加

    vagrant ssh
    sudo apt-get install virtualbox-guest-utils
    exit 
    
  2. 手动将缺失的挂载点添加到Vagrantfile

    config.vm.synced_folder ".", "/vagrant/" # fix broken ubuntu/xenial64 image
    
  3. 要解决第三个问题,您必须手动为该框添加一个唯一名称,方法是将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)

Vagrant Synced Folders

答案 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

vb-guest plugin repo

此外,有时当您在计算机上安装vbox时,如果您未授予其要安装的其他驱动程序的权限,则它将无法正常运行。您可能需要重新安装以确保在要求安装某些驱动程序时接受提示。

如果这一切都不起作用,你可能会尝试在没有gui的情况下启动,并在尝试启动流浪机时粘贴输出。