Al intentar iniciar postgresql en una máquina virtual Virtualbox administrada por Vagrant, aparece el siguiente error:
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
```
Respuesta1
Esto sucede cuando el directorio de datos de postgresql está en una carpeta compartida de Vagrant ( /vagrant
por ejemplo), y el host de Vagrant es Windows. En ese caso, los permisos no se pueden configurar de forma Unix.
Mueva esa carpeta a otra ubicación (el directorio de inicio del usuario vagabundo, por ejemplo) y se iniciará postgresql.
Solución encontrada en:https://gitlab.com/gitlab-org/gitlab-development-kit/issues/20
Respuesta2
La causa subyacente de esto es que vboxsf no admite enlaces al sistema de archivos (ni físicos ni simbólicos). Puede reproducir el problema montando una carpeta de host dentro de un invitado de VirtualBox e intentando hacer lo siguiente:
ln /path/to/mounted/share/existingfile.txt /some/path/link-to-file.txt
por ejemplo (con /var/data montado como un recurso compartido de vboxsf)
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
Hay numerosos boletos para esto en virtualbox.org (#818,#10085) pero dado que se remontan a 7 años atrás, ¡podría pasar otro tiempo antes de que se solucione!