2013-08-01 11 views
14

Ich habe wie so ein Vagabund vm Set-up mit einer Projektstruktur auf meinem Host-Maschine bekam:Vagrant SSH kann nicht Verzeichnis gemeinsamen Zugriff

PlayApps --> App1 -----------> all application/project files 
      App2 -----------> "" 
      App3 -----------> "" 
      (etc..) 
      .VagrantFiles --> VagrantFile 
           bootstrap.sh 
           (etc...) 

ich cd in mein .VagrantFiles Verzeichnis und starten Sie dann die VM. In meinem VagrantFile für diese VM bin ich teile dieses Verzeichnis:

config.vm.synced_folder "../", "/Shared" 

mit dem Ziel, alles im PlayApps Verzeichnis (mehrere Projekte) mit der VM zu teilen. Wenn ich die VM und ssh in starten sehe ich das Verzeichnis/Shared und ich kann cd hinein, aber wenn ich versuche, den Inhalt mit ls -al zur Liste ich die folgende Fehlermeldung erhalten:

ls: cannot open directory .: Operation not permitted. 

Wenn ich ls -al tun auf dem Verzeichnis, das ist enthalten/Shared was ich sehe (unter anderem Verzeichnissen): denken

d????????? ? ? ?  ?   ? Shared/ and 
d????????? ? ? ?  ?   ? vagrant/ 

ich sudo chmod 666 versucht, das/Shared-Verzeichnis, dass es einen Berechtigungsfehler war, bekam aber den folgenden Fehler:

chmod: cannot access '/Shared': Protocol error 

Vagrant, ssh, und "ops" im Allgemeinen ist ziemlich neu für mich, so dass alle Hinweise, Vorschläge, Antworten sehr geschätzt werden.

Antwort

36

Haben Sie ein Eltern-Verzeichnis Ihrer Vagrant-Box verschoben oder umbenannt, während es gesperrt war?

Wenn ja, führen Sie vagrant halt, machen Sie alle umbenennen, dann vagrant up und Sie Projekt sollte zurück sein!

Ich stieß auf das gleiche Problem nach dem Umbenennen des übergeordneten Verzeichnisses, wo meine Vagrantfile + Projektdateien befinden.

Weitere Szenarios, die bestätigen, dass Umbenennen des übergeordneten Verzeichnisses eines vagabundierenden Projekts, während die VM angehalten ist, verursacht dieses Berechtigungsproblem; jedoch, , wenn Sie die VM vollständig mit vagrant halt herunterfahren, sind Sie frei, umzubenennen.

Gestern hatte eine perfekt funktionale RoR env auf Ubuntu Precise32 Box. Habe die Shell beendet, vagrant suspend ausgeführt und meine Workstation heruntergefahren.

Heute Tag gebootet ich meine Workstation (Host-Computer) und umbenannt das übergeordnete Verzeichnis meiner vagrant Projekt auf, etwa so:

└── ORIGINAL_DIR_NAME 
    ├── Vagrantfile 
    └── PROJECT 

└── NEW_DIR_NAME 
    ├── Vagrantfile 
    └── PROJECT 

Nachdem ich vagrant up lief, vagrant ssh. Einmal in der VM-Shell konnte ich nicht in/vagrant cd.

ls -alh / vom Gast Shell zurückgegeben:

ls: cannot access /vagrant: Protocol error 
[...] 
drwxrwxrwt 2 root root 4.0K Aug 4 21:17 tmp 
drwxr-xr-x 10 root root 4.0K Sep 14 2012 usr 
d????????? ? ? ?  ?   ? vagrant 
drwxr-xr-x 11 root root 4.0K Aug 4 19:23 var 
[...] 

versuchte auch chmod auf /vagrant und bekam dies:

chmod: cannot access `/vagrant': Protocol error 

Zuerst versuchte fix vagrant suspend ausgeführt wurde, Umbenennen das übergeordnete Verzeichnis zurück auf den ursprünglichen Wert , dann läuft vagrant up. Leider hat das die gesamte Vagabund-VM zerstört und sie ist im vaganten Pergatory steckengeblieben - wird nicht vollständig booten oder herunterfahren.

Also, die richtig fix ist es, alle vagrant ssh Schalen zu beenden, führen vagrant halt (nicht aussetzen), um sicherzustellen, dass es OFF (nicht einschlafen), und gehen alle bisherigen Umbenennungen geordneten Verzeichnissen. Dann vagrant up und sehen, ob Sie in /vagrant gelangen können! Danach, wenn Sie Ihre Ordner nur vagrant halt umbenennen möchten, umbenennen und vagrant up.

+0

Puh, Lebensretter, danke! –

+0

Hat mir sehr geholfen. Danke – Victor

3

Nach @ musophobs großartige detaillierte Antwort, erkannte ich, dass, wenn Sie einfach Ihre VagrantFile in einen anderen Projektordner verschieben möchten Sie immer die VM neu laden müssen, um /vagrant Zugriff zu beheben.

Da ich am Ende oft genug, benutze ich die Abkürzung vagrant reload command - dies tut einfach vagrant halt gefolgt von einem vagrant up und die VM ist fertig.

1

Ich habe erlebe die gleiche Problem mehrmals jetzt - wenn auch nicht während des Verzeichnis übergeordnet Umbenennen oder das Vagrantfile bewegen, aber wenn nur erstellen oder Dateien auf dem Host umbenennen. Da dies sehr selten aus unbekannten Gründen geschieht, konnte ich dies nicht absichtlich reproduzieren.

Dennoch behebt ein einfaches vagrant reload das Problem.

Verwandte Themen