Błąd włóczęgi: NFS zgłasza, że ​​plik eksportu jest nieprawidłowy

95

Próbuję skonfigurować środowisko programistyczne Discourse, korzystając z tych instrukcji . Jednak po uruchomieniu Vagranta pojawia się błąd:

NFS zgłasza, że ​​plik eksportu jest nieprawidłowy. Vagrant sprawdza to przed wprowadzeniem jakichkolwiek zmian w pliku. Popraw poniższe problemy i wykonaj „włóczęgę przeładowanie”:

Nie można otworzyć / etc / export

Sprawdziłem i nie mam folderu etc / export, więc utworzyłem go i uruchomiłem vagrant reload. To dało mi:

/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 'from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/ plugins / synced_folders / nfs / synced_folder.rb: 68: in cleanup' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/builtin/synced_folder_cleanup.rb:24:inblock in call 'from /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 'from /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' from /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/handle_forwarded_port_collisions.rb:118:incall '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/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb:30:incall 'from /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' from /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 'from /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 'from /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' from /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 'from /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' z /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:inblok w finalize_action 'from /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 'from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/util/busy.rb: 19: w busy' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/runner.rb:69:inbiegu 'from /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' from / 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 '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:incall „from /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” z /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 'from /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:95:inblock in finalize_action 'from /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 'from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/util/busy.rb:19 :wbusy' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/runner.rb:69:inuruchom 'from /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' from / Applications / Vagrant / embedded / gems / gems / vagrant -1.4.1 / lib / vagrant / action / builtin / config_validate.rb: 25: 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/plugins/providers/virtualbox/action/check_virtualbox. rb: 17: 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/builtin/call.rb:57:in call' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/action/warden.rb:34:incall' z / Applications / Vagrant / embedded / gems / gems / vagrant-1.4.1 / plugins / provider / virtualbox / action / check_virtualbox.rb: 17: 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 /builtin/config_validate.rb:25:incall' 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/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' from /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 'from /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 'from /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' from /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 'from /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' z /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:inzajęty 'from /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' z /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 'from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/plugin/v2/command.rb: 191: in each' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/plugin/v2/command.rb:191:inwith_target_vms 'from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/plugins/commands/reload/command.rb:36:in execute' from /Applications/Vagrant/embedded/gems/gems/vagrant-1.4.1/lib/vagrant/cli.rb:38:inexecute' from / 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'from /Applications/Vagrant/bin/../embedded/gems/bin/vagrant:23:in load' from /Applications/Vagrant/bin/../embedded/gems/bin/vagrant:23:in'

Korzystam z komputera Mac (OS X 10.6.8). Jak to naprawić? Próbowałem wyszukać oryginalny komunikat o błędzie i znalazłem tylko kilka repozytoriów zawierających kod źródłowy Vagrant, który go generuje.

myśliwy
źródło

Odpowiedzi:

-32

Spróbuj użyć znanych dobrych wersji VirtualBox i Vagrant wymienionych w Discourse jako Your First Rails App :

Miałem ten sam problem na Macu (OS X 10.9 (Mavericks)), ale powrót do tych wersji wydawał się naprawiać go dla mnie.

Lockyer
źródło
Dzięki, wciąż kończę kolejne kroki instalacji, ale wygląda na to, że zadziałało.
Hunter
3
Zmiana na niższą klasę nie jest wymagana. Po prostu musisz biec sudo touch /etc/exports. Zobacz odpowiedź colinhoerniga . Ponadto właśnie zaktualizowałem moją włóczęgę do wersji 1.4.3, a VirtualBox do wersji 4.3.8 i to chyba rozwiązało mój problem.
pączek
5
to jest myląca odpowiedź. wybierz odpowiedź colinhoemig, ponieważ jest o wiele bardziej pomocna!
enjalot
3
Odpowiedź nie jest konstruktywna ani myląca. Zastanawiam się, jak to jest oznaczone jako poprawne. Prawidłowa odpowiedź brzmi: @colinhoernig, na który głosowano ponad 50 razy. Aby błąd został rozwiązany. Musisz naprawić plik / etc / export. Następnie zbuduj ponownie.
Alexandros Spyropoulos
1
Kiedy tworzysz projekt z udokumentowanymi zależnościami po raz pierwszy, pomocne jest użycie dokładnych wersji, o których wiadomo, że działają, tylko dlatego, że istnieje obejście tego jednego konkretnego problemu, nie oznacza, że ​​nie napotkałby innych nieudokumentowanych niezgodności ...
Lockyer
332

Miałem kilka poprzednich obrazów / pudełek zainstalowanych w mojej instalacji VirtualBox, więc było już kilka nieprawidłowych wpisów /etc/exports. Musiałem więc wyczyścić ten plik i ponownie uruchomić mój Vagrant.

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":

Oto, co zrobiłem na moim komputerze głównym:

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

vagrant halt
vagrant up --provision
totas
źródło
9
To był najbardziej odpowiedni, ponieważ miałem dwa włóczęgi montowane w tym samym folderze. Oni się zdezorientowali!
wulftone
33
lub zamiast usuwać wszystko, po prostu usuń wszystkie te wiersze związane z tymi maszynami wirtualnymi, których już tam nie ma.
Alejandro Moreno
2
Miałem ten problem po zmianie nazwy katalogu projektu. Dzięki! :)
Radu
4
Warto wspomnieć, że polecenie to powinno zostać wykonane na komputerze hosta. Ponieważ vagrant box jest faktycznie uruchamiany, mogłem się do niego zalogować, ale nie mogłem znaleźć pliku / etc / export. Ponieważ znajduje się na komputerze głównym.
chuwy
4
Nie jestem pewien, czy --provisionflaga jest konieczna w ostatnim poleceniu, ponieważ zwykle NFS jest zamontowany, upa nie w czasie udostępniania. Może to być wymagane w twojej konfiguracji, ale te kroki zadziałały bez tej flagi.
acobster
79

Napotkałem ten problem z Vagrant 1.4.1 i VirtualBox 4.3.6 na OS X 10.9 Mavericks (13A603). Udało mi się to naprawić za pomocą prostego polecenia, aby utworzyć brakujący plik / etc / export. Uruchom to na OS X, a nie jako gość, jak wskazano w komentarzach poniżej.

$ sudo touch /etc/exports

Wtedy mogłem z powodzeniem biegać vagrant up. Wystąpił inny błąd, w którym dodatki dla gości nie były aktualne, ale naprawiłem ten problem, instalując wtyczkę vagrant-vbguest.

$ vagrant plugin install vagrant-vbguest

a potem szybko vagrant reload i byłem gotowy do pracy!

colinhoernig
źródło
4
Bardzo dobra wskazówka, trzeba to zrobić na komputerze Mac ... Nie na gościu, jak pierwszy raz próbowałem
Ramzi
Dziękuję @Ramzi, zredagowałem oryginał w celu wyjaśnienia.
colinhoernig,
Musiałem użyć sudo rm -rf / etc / export na Linuksie, ponieważ jest to folder
timhc22
5
Musiałem również edytować mój plik / etc / export, ponieważ zawierał wiele wpisów, co było mylące.
enjalot
Musiałem usunąć zawartość mojego pliku eksportu
David
23

U mnie ten błąd zaczął się pojawiać dla działającego środowiska Vagrant.

Zmieniłem nazwę katalogu, z którego biegał Vagrant. Aby to naprawić, uruchomiłem „sudo vi / etc / export” i poprawiłem ścieżkę, tak aby wskazywała na mój bieżący katalog.

Kevin G.
źródło
9

To samo przytrafiło się mnie. Skopiowałem plik Vagrantfile z innego projektu i zapomniałem zmienić ustawień NFS. To spowodowało, że bieżąca maszyna wirtualna zamontowała folder nadrzędny maszyny wirtualnej, z której skopiowałem oryginalny plik Vagrantfile. Więc zrobiłem to:

vagrant halt
vagrant up

Nadal pojawia się ten sam błąd. Więc wyśledziłem mój plik eksportu znajdujący się w / etc / export, który wygląda tak:

# 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

Ostatnie dwie ścieżki są takie same. Więc usunąłem ostatnie trzy linie i uruchomiłem:

vagrant halt && vagrant up

Teraz wydaje się, że wszystko działa dobrze.

OSX 10.11.1 Vagrant 1.7.4

colefner
źródło
8

Nie chciałem przechodzić przez kłopoty związane z degradacją. Oto, co zrobiłem (nadal trwało to chwilę, ale mniej kłopotów niż obniżenie IMHO):

  1. W pliku VM Vagrantfile dla każdego synchronizowanego folderu wyłączono NFS

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

  2. Usunięto / etc / export

    sudo mv /etc/exports ~/Desktop/exports

  3. Przepisz / etc / export

    vagrant up

  4. Włącz ponownie NFS, jeśli chcesz / chcesz, aby był włączony na Twojej maszynie wirtualnej

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

brokenindexfinger
źródło
5

Po prostu uruchom następujące polecenia:

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

Czy nie używać vagrant up --provision, jeśli nie jesteś pewien, że to nie nadpisywanie aktualny stan projektu.

MilanG
źródło
0

W przypadku hosta Ubuntu 12 / gościa Ubuntu 12 z Discourse pracowałem dla mnie :

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

Uwaga: Musiałem również dodać adres IP hosta określony przez Vagrant i adres IP gościa określony przez Vagrant do wyjątków zapory.

niccolox
źródło