Beim Versuch, PostgreSQL auf einer von Vagrant verwalteten Virtualbox-VM zu starten, tritt der folgende Fehler auf:
LOG: could not link file "pg_xlog/xlogtemp.29" to "pg_xlog/000000010000000000000001" (initialization of log file): Operation not permitted
FATAL: could not open file "pg_xlog/000000010000000000000001": No such file or directory
```
Antwort1
Dies geschieht, wenn sich das Datenverzeichnis von PostgreSQL beispielsweise in einem freigegebenen Vagrant-Ordner befindet /vagrant
und der Vagrant-Host Windows ist. In diesem Fall können die Berechtigungen nicht auf die Unix-Art festgelegt werden.
Verschieben Sie diesen Ordner an einen anderen Ort (z. B. in das Home-Verzeichnis des Vagrant-Benutzers), und PostgreSQL wird gestartet.
Lösung gefunden unter:https://gitlab.com/gitlab-org/gitlab-development-kit/issues/20
Antwort2
Der Grund hierfür ist, dass vboxsf keine Dateisystemlinks unterstützt (weder harte noch symbolische). Sie können das Problem reproduzieren, indem Sie einen Host-Ordner in einem VirtualBox-Gast mounten und Folgendes versuchen:
ln /path/to/mounted/share/existingfile.txt /some/path/link-to-file.txt
zum Beispiel (mit /var/data als vboxsf-Freigabe gemountet)
jim@a55a005fc5a5:/~ ln /var/data/foo.txt ~/data/link-to-foo ln: failed to create hard link ‘/users/jim/data/link-to-foo’ => ‘/var/data/foo.txt’: Operation not permitted
Hierzu gibt es zahlreiche Tickets auf virtualbox.org (#818,#10085), aber da sie 7 Jahre zurückliegen, kann es noch eine Weile dauern, bis das Problem behoben ist!