Ошибка Vagrant: NFS сообщает, что ваш файл экспорта недействителен.

95

Я пытаюсь настроить среду разработки Discourse, используя эти инструкции . Однако, когда я запускаю Vagrant, я получаю сообщение об ошибке:

NFS сообщает, что ваш файл экспорта недействителен. Vagrant выполняет эту проверку перед внесением каких-либо изменений в файл. Пожалуйста, исправьте проблемы ниже и выполните «бродячую перезагрузку»:

Не могу открыть / etc / exports

Я проверил, и у меня нет папки etc / exports, поэтому я создал ее и запустил vagrant reload. Это меня достало:

/Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/plugins/hosts/bsd/host.rb:146:in read': Is a directory - /etc/exports (Errno::EISDIR) from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/plugins/hosts/bsd/host.rb:146:innfs_prune 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/ plugins / synced_folders / nfs / synced_folder.rb: 68: в cleanup' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builtin/synced_folder_cleanup.rb:24:inблоке при вызове 'от /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builtin/synced_folder_cleanup.rb:22:in each_key' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builtin/synced_folder_cleanup.rb:22:incall 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/plugins/providers/virtualbox/action/prepare_nfs_valid_ids.rb:12:incall' из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4 .1 / lib / vagrant / action / warden.rb: 34: в call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb:118:inвызове 'от /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:incall' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb:30:incall 'от /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builtin/env_set.rb:19:incall' от /Applications/Vagrant/embedded/gems/gems/vagrant-1.4 .1 / lib / vagrant / action / warden.rb: 34: in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builtin/provision.rb:52:incall 'от /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/plugins/providers/virtualbox/action/clear_forwarded_ports.rb:13:incall 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/plugins/providers/virtualbox/action/set_name.rb:19:incall' из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4. 1 / lib / vagrant / action / warden.rb: 34: in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/plugins/providers/virtualbox/action/clean_machine_folder.rb:17:incall 'от /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/plugins/providers/virtualbox/action/check_accessible.rb:18:incall' из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:incall' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:95:inблок в finalize_action 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:incall' from / Applications / Vagrant / embedded / gems / gems / vagrant -1.4.1 / lib / vagrant / action / builder.rb: 116: in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/runner.rb:69:inblock in run 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/util/busy.rb: 19: при busy' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/runner.rb:69:inзапуске из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builtin/call.rb:51: при call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:inвызове из / Applications / Vagrant / embedded / gems / gems / vagrant-1.4.1 / lib / vagrant / action / warden.rb: 95: в block in finalize_action' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:inвызове от /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb : 34: вcall' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builder.rb:116:inвызов 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/runner.rb:69:in block in run' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/util/busy.rb:19:inbusy' из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4 .1 / lib / vagrant / action / runner.rb: 69: in run' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builtin/call.rb:51:incall 'от /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:в call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:95:inблоке в finalize_action 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:incall' from / Applications / Vagrant / embedded / gems / gems / vagrant- 1.4.1 / lib / vagrant / action / builder.rb: 116: in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/runner.rb:69:inblock in run 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/util/busy.rb:19 :вbusy' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/runner.rb:69:inзапустить 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builtin/call.rb:51:in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:incall' из / Applications / Vagrant / embedded / gems / gems / vagrant -1.4.1 / lib / vagrant / action / builtin / config_validate.rb: 25: в call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:inвызове от /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/plugins/providers/virtualbox/action/check_virtualbox. rb: 17: в call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:inвызове из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builtin/call.rb:57: в call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:inвызове из / Applications / Vagrant / embedded / gems / gems / vagrant-1.4.1 / plugins / sizes / virtualbox / action / check_virtualbox.rb: 17: в call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:inвызове от /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action /builtin/config_validate.rb:25:incall' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:incall 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:95:in block in finalize_action' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:incall' из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4 .1 / lib / vagrant / action / warden.rb: 34: in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builder.rb:116:incall 'от /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/runner.rb:69:in block in run' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/util/busy.rb:19:inbusy 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/runner.rb:69:in run' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builtin/call.rb:51:incall' из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4. 1 / lib / vagrant / action / warden.rb: 34: in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/plugins/providers/virtualbox/action/check_virtualbox.rb:17:incall 'от /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builder.rb:116:incall' из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/runner.rb:69:inblock in run' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/util/busy.rb:19:inзанято 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/runner.rb:69:in run' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/machine.rb:147:inaction' из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4 .1 / plugins / commands / reload / command.rb: 37: in block in execute' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/plugin/v2/command.rb:193:inblock in with_target_vms 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/plugin/v2/command.rb: 191: в each' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/plugin/v2/command.rb:191:inwith_target_vms 'из /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/plugins/commands/reload/command.rb:36:36:in execute' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/cli.rb:38:inexecute' из / Applications / Vagrant / embedded / gems / gems / vagrant-1.4.1 / lib / vagrant / environment.rb: 484: in cli' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/bin/vagrant:127:in'из /Applications/Vagrant/bin/../embedded/gems/bin/vagrant:23:in load' from /Applications/Vagrant/bin/../embedded/gems/bin/vagrant:23:in'

Я использую Mac (OS X 10.6.8). Как это исправить? Я попытался найти исходное сообщение об ошибке, и все, что я нашел, это несколько репозиториев, содержащих исходный код Vagrant, который его выдает.

Охотник
источник

Ответы:

-32

Попробуйте использовать известные хорошие версии VirtualBox и Vagrant, указанные в Discourse, в качестве вашего первого приложения Rails :

У меня была такая же проблема на Mac (OS X 10.9 (Mavericks)), но откат к этим версиям, похоже, решил ее для меня.

Локьер
источник
Спасибо, я все еще заканчиваю следующие шаги по установке, но похоже, что это сработало.
Hunter
3
Переход на более раннюю версию не требуется. Тебе просто нужно бежать sudo touch /etc/exports. См . Ответ Колинхёрнига . Кроме того, я только что обновил свою vagrant install до v1.4.3 и VirtualBox до v4.3.8, и это, похоже, решило мою проблему.
пончик
5
это вводящий в заблуждение ответ. пожалуйста, выберите ответ colinhoemig, так как он намного полезнее!
enjalot
3
Ответ неконструктивный и неверный. Интересно, как это помечено как правильное. Правильный ответ - это ответ @colinhoernig, за который проголосовали более 50 раз. Чтобы Ошибка была разрешена. Вам нужно исправить файл / etc / exports. Затем строим снова.
Александрос Спиропулос
1
Когда вы впервые создаете проект с задокументированными зависимостями, это помогает использовать точные версии, о которых известно, что они работают, просто потому, что для этой конкретной проблемы есть обходной путь, не означает, что он не столкнется с другими недокументированными несовместимости ...
Lockyer
332

В моей установке VirtualBox было несколько предыдущих изображений / ящиков, поэтому в них уже было несколько недопустимых записей /etc/exports. Поэтому мне пришлось очистить этот файл и перезапустить мой Vagrant box.

NFS is reporting that your exports file is invalid. Vagrant does
this check before making any changes to the file. Please correct
the issues below and execute "vagrant reload":

Вот что я сделал на своей главной машине:

sudo rm /etc/exports
sudo touch /etc/exports

vagrant halt
vagrant up --provision
Totas
источник
9
Это было наиболее подходящим вариантом, так как у меня были две бродячие коробки, в которые устанавливалась одна и та же папка. Они запутались!
wulftone
33
или вместо удаления всех просто удалите все строки, относящиеся к тем виртуальным машинам, которых больше нет.
Алехандро Морено,
2
У меня возникла эта проблема после переименования имени каталога проекта. Спасибо! :)
Раду
4
Стоит отметить, что эта команда должна выполняться на хост-машине. Поскольку бродячий ящик фактически загружен, я мог войти в него, но не смог найти файл / etc / exports. Потому что он находится на хост-машине.
chuwy
4
Я не уверен, что этот --provisionфлаг необходим в последней команде, поскольку обычно NFS монтируется, upа не во время подготовки. Это может потребоваться в вашей настройке, но эти шаги работали для меня без этого флага.
акобстер
79

Я столкнулся с этой проблемой с Vagrant 1.4.1 и VirtualBox 4.3.6 на OS X 10.9 Mavericks (13A603). Я смог исправить это с помощью простой команды, чтобы создать отсутствующий файл / etc / exports. Запустите это в OS X, а не в гостевой системе, как указано в комментариях ниже.

$ sudo touch /etc/exports

После этого я смог успешно бежать vagrant up. Я столкнулся с другой ошибкой, когда гостевые дополнения не были обновлены, но я исправил эту проблему, установив плагин vagrant-vbguest.

$ vagrant plugin install vagrant-vbguest

а затем быстро, vagrant reloadи я был готов!

Colinhoernig
источник
4
Очень хороший совет, это нужно делать на хосте Mac ... Не на гостях, как я сначала пытался
Рамзи
Спасибо @Ramzi, я отредактировал оригинал, чтобы уточнить.
colinhoernig 09
Мне пришлось использовать sudo rm -rf / etc / exports на linux, поскольку это папка
timhc22
5
Мне также пришлось отредактировать мой файл / etc / exports, потому что в нем было несколько записей, которые сбивали с толку бродягу.
enjalot
Мне пришлось удалить содержимое моего файла экспорта
Дэвид
23

Для меня эта ошибка начала появляться для рабочей среды Vagrant.

Я переименовал каталог, из которого бежал Бродяга. Чтобы исправить это, я запустил sudo vi / etc / exports и исправил путь, чтобы он указывал на мой текущий каталог.

Кевин Г.
источник
9

То же самое случилось со мной. Я скопировал свой Vagrantfile из другого проекта и забыл изменить настройки NFS. Это заставило текущую виртуальную машину смонтировать родительскую папку виртуальной машины, из которой я скопировал исходный файл Vagrantfile. Итак, я сделал это:

vagrant halt
vagrant up

Все еще та же ошибка. Итак, я отследил свой файл экспорта, расположенный в / etc / exports, который выглядит так:

# VAGRANT-BEGIN: 501 64e10d4d-342e-4f55-b69a-97edda35742f
"/Users/[username]/vagrant" 192.168.11.12 -alldirs -mapall=501:20
# VAGRANT-END: 501 64e10d4d-342e-4f55-b69a-97edda35742f
# VAGRANT-BEGIN: 501 b3c6e7fe-95d4-48db-8876-c89d3e07af8d
"/Users/[username]/Sites/molitech-oms" 192.168.11.124 -alldirs -mapall=501:20
# VAGRANT-END: 501 b3c6e7fe-95d4-48db-8876-c89d3e07af8d
# VAGRANT-BEGIN: 501 3e2aabfd-ce63-441b-85a2-1b51e8beb863
"/Users/[username]/Sites/app" 192.168.11.125 -alldirs -mapall=501:20
# VAGRANT-END: 501 3e2aabfd-ce63-441b-85a2-1b51e8beb863
# VAGRANT-BEGIN: 501 ff92e353-9f6d-48ee-9d76-e29b33f1dd60
"/Users/[username]/Sites" 192.168.11.126 -alldirs -mapall=501:20
# VAGRANT-END: 501 ff92e353-9f6d-48ee-9d76-e29b33f1dd60

Последние два пути совпадают. Я удалил последние три строчки и запустил:

vagrant halt && vagrant up

Теперь вроде все работает нормально.

OSX 10.11.1 Бродяга 1.7.4

Колефнер
источник
8

Я не хотел испытывать трудности с переходом на более раннюю версию. Это то, что я сделал (все еще заняло время, но меньше хлопот, чем откатиться на более раннюю версию, ИМХО):

  1. В Vagrantfile ВМ для любой синхронизируемой папки отключен NFS

    config.vm.synced_folder ".", "/vagrant", nfs: false

  2. Удален / etc / exports

    sudo mv /etc/exports ~/Desktop/exports

  3. Перепишите / etc / exports

    vagrant up

  4. Повторно включите NFS, если вы хотите / хотите, чтобы он был включен на вашей виртуальной машине.

    config.vm.synced_folder ".", "/vagrant", nfs: true

сломанный
источник
5

Просто выполните следующие команды:

sudo rm /etc/exports
sudo touch /etc/exports
vagrant reload

Как НЕ использовать , vagrant up --provisionесли вы не уверены в том, что она не будет переписывать текущее состояние вашего проекта.

МиланГ
источник
0

На хосте Ubuntu 12 / гостевом Ubuntu 12 у меня с Discourse работало следующее :

nfs_setting = RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/
config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", type: "nfs", nfs_udp: "true", nfs_version: "4", :nfs => nfs_setting

Примечание: мне также пришлось добавить IP-адрес хоста, определяемый Vagrant, и гостевой IP-адрес, определенный Vagrant, в исключения брандмауэра.

никколокс
источник