【问题标题】:How I can get /vagrant folder on ubuntu/xenial64如何在 ubuntu/xenial64 上获取 /vagrant 文件夹
【发布时间】:2016-05-17 17:59:33
【问题描述】:

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

vagrant init ubuntu/xenial64

然后启动它:

vagrant up --provider virtualbox

ssh-ing 后我找不到文件夹 /vagrant

我做错了什么?

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

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

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

我的宿主环境是:

  • Windows 7
  • 流浪者版本 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

【问题讨论】:

  • 分享你的 vagrant 文件以查看配置
  • 编辑了相关信息的描述。
  • 你能在运行 vagrant up 时分享一下输出吗?
  • Alessandro Caetano,我无法再访问此主机了。与此同时,我已经改为直接使用 virtualbox。没有时间寻找解决方案。所以项目暂时放弃了。

标签: ubuntu vagrant


【解决方案1】:

更新:

这个问题终于在官方 16.04 vagrant box 的v20160921.0.0 及更高版本中得到修复。 v20160909.0.0 之前的版本也已修复,但有另一个不相关的问题,正如 cmets 中的 Poma 所指出的那样。

您可以使用以下命令下载新版本,也可以用新的虚拟机实例替换旧的虚拟机实例。但是,升级盒子会擦除您原来的虚拟机实例。

vagrant box update

如果您出于某种原因不想擦除您的虚拟机,您仍然可以在下面应用我原来的修复。

原帖:

显然官方的ubuntu/xenial64镜像坏了,如this bug report on launchpad所示。

这是 Louis Zuckerman 的 cmets 引述,其中包含截至 20160627.0.0 版本仍未解决的所有问题,据我所知:

xenial 的官方 vagrant box 存在一些问题:

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

[...]

这些步骤为我解决了问题 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
    

要解决第三个问题,您必须通过将 VirtualBox 的提供商特定选项添加到您的 Vagrantfile 来手动为框指定唯一名称。

config.vm.provider "virtualbox" do |vb|
  vb.name = "This_Name_Is_Unique_For_This_Machine"
end

正如对此答案的 cmets 所指出的那样,here 对此问题有更详细的讨论。

【讨论】:

  • 第三期讨论here
  • 谢谢,根据您的评论,我更新了我的答案以包含该修复程序。
  • config.vm.synced_folder ".", "/vagrant/" # 修复损坏的 ubuntu/xenial64 图像 这对我不起作用 :( 主机操作系统是 Mac OS X
  • 您是否还安装了缺少的访客添加?
  • 由于bugs.launchpad.net/cloud-images/+bug/1621393,此图像仍然损坏
【解决方案2】:

人们不使用bento/ubuntu-16.04 有什么原因吗?

看到这个回复: https://github.com/mitchellh/vagrant/issues/7155

canonical 在 16.04 的 ubuntu 命名空间下发布的盒子 非常破碎。他们没有遵循推荐的指南 构建一个 Vagrant 盒子,他们缺少关键组件,例如 guest 添加,所需的包,或者他们做一些事情,比如硬编码 主机名,使运行并发 VM 成为不可能。 ... 一般来说,用户在便当下面的盒子上取得了更大的成功 命名空间。一个常见的误解是像“ubuntu”这样的命名空间 代表 Ubuntu 盒子的规范空间。这是不真实的。

似乎有很多理由不使用 ubuntu/xenial64 框,而只使用来自bento 命名空间的工作框,而不是试图破解 ubuntu 命名空间框来工作。 Ubuntu 品牌对某些人来说可能更舒服,但我认为它与 Vagrant 不同。

【讨论】:

  • 这是正确的答案。应该删除“ubuntu/xenial64”框,因为它仍然不符合标准。 'bento/ubuntu-16.04' 很好,但我用这个:'boxcutter/ubuntu1604'。
【解决方案3】:

由于某种原因,ubuntu/xenial64 没有同步的 /vagrant 文件夹。

我必须在 vagrant 文件中设置自己的:

config.vm.synced_folder ".", "/vagrant"

第一个选项是源(Windows)第二个是目标(Ubuntu)

Vagrant Synced Folders

【讨论】:

  • 我认为同步文件夹的来源应该是当前目录"." 而不是"vagrant"
  • 已更新。我在一个盒子上开发了多个应用程序,并且喜欢 .gitignore “vagrant”中的所有文件。
  • 这解决了丢失 /vagrant 文件夹的问题,无论同步技术如何(对我来说是 nfs)。使用 xenial64 和 vagrant 1.8.5
【解决方案4】:

Vagrant 默认会在客户机上挂载一个 /vagrant 文件夹,该文件夹与 Vagrantfile 所在的文件夹同步。

vagrant 无法挂载您的共享文件夹有一些原因,最常见的原因是您没有正确安装和初始化 virtualbox 驱动程序。当您没有相同版本的内核头文件时会发生这种情况的虚拟盒子包。

首先确保您的 Vagrantfile 中没有此行,因为这将禁用同步文件夹:

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"

第一个参数是主机上文件夹的路径,第二个参数是来宾计算机上文件夹的位置。

希望对你有所帮助。

【讨论】:

  • 对不起,没看到您在主机上使用 Windows。考虑我的回答。
【解决方案5】:

您可以尝试安装 vbguest 添加插件,看看是否有帮助。

$ vagrant plugin install vagrant-vbguest

vb-guest plugin repo

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

如果这些都不起作用,您可以尝试在没有 gui 的情况下启动,并在尝试启动 vagrant 机器时将输出粘贴到此处。

【讨论】:

    猜你喜欢
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 2014-02-07
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多