osx – ¿Por qué no funcionaría un enlace simbólico a un enlace simbólico?

Me he encontrado con un problema extraño al instalar SWI-Prolog usando homebrew en mi cuadro OSX 10.9. Estoy tratando de depurarlo para descubrir de quién es el error (SWI-Prolog, homebrew u OSX), para poder informarlo adecuadamente y solucionarlo.

El swipl en mi ruta es /usr/local / bin / swipl que enlaza simbólicamente con /usr/local/Cellar/swi-prolog/6.2.3/bin/swipl
que enlaza a /usr/local/Cellar/swi-prolog/6.2.3/lib/swipl-6.2.3/bin/x86_64-darwin13.0.0/swipl.

% which swipl
/usr/local/bin/swipl
% find /usr/local -name swipl -exec ls -l {} \;
lrwxr-xr-x  1 rampion  admin  36 Oct 23 20:54 /usr/local/bin/swipl -> ../Cellar/swi-prolog/6.2.3/bin/swipl
lrwxr-xr-x  1 rampion  admin  48 Oct 23 20:54 /usr/local/Cellar/swi-prolog/6.2.3/bin/swipl -> ../lib/swipl-6.2.3/bin/x86_64-darwin13.0.0/swipl
-r-xr-xr-x  1 rampion  admin  8760 Oct 23 20:54 /usr/local/Cellar/swi-prolog/6.2.3/lib/swipl-6.2.3/bin/x86_64-darwin13.0.0/swipl

Puedo ejecutar el ejecutable real en /usr/local/Cellar/swi-prolog/6.2.3/lib/swipl-6.2.3/bin/x86_64-darwin13.0.0/swipl:

% /usr/local/Cellar/swi-prolog/6.2.3/lib/swipl-6.2.3/bin/x86_64-darwin13.0.0/swipl
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 6.2.3)
...

Y puedo usar el enlace simbólico en /usr/local/Cellar/swi-prolog/6.2.3/bin/swipl:

% /usr/local/Cellar/swi-prolog/6.2.3/bin/swipl
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 6.2.3)
...

Pero cuando trato de usar el enlace simbólico en /usr/local / bin / swipl, que solo enlaces simbólicos
al otro enlace simbólico, aparece un error:

% /usr/local/bin/swipl
Abort trap: 6
% echo $?
134

También puedo hacer mis propios enlaces simbólicos a /usr/local/Cellar/swi-prolog/6.2.3/lib/swipl-6.2.3/bin/x86_64-darwin13.0.0/swipl, y funcionan:

% ln -s /usr/local/Cellar/swi-prolog/6.2.3/lib/swipl-6.2.3/bin/x86_64-darwin13.0.0/swipl swipl.0
% ./swipl.0 
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 6.2.3)
...

Y mis propios enlaces simbólicos a /usr/local/Cellar/swi-prolog/6.2.3/bin/swipl, y fallan:

% ln -s /usr/local/Cellar/swi-prolog/6.2.3/bin/swipl swipl.1
% ./swipl.1
Abort trap: 6
% echo $?
134

Así que no tengo idea de qué va mal. ¿Por qué un enlace simbólico a un archivo funciona, pero un enlace simbólico a un enlace simbólico a un archivo falla?

Mejor respuesta
intente hacer algún ejemplo, su sistema admite enlaces simbólicos encadenados, por ejemplo
discos compactos

ln -s /bin/ls myls1
ln -s myls1 myls2
ln -s myls2 myls3

iniciar experimento:

./myls1 should work
./myls2 works or not?
./myls3 works or not?

Cuando myls3 funciona, su sistema admite enlaces simbólicos encadenados. No creo que no 🙂 Entonces creo que el problema no es con los enlaces simbólicos, sino con SWI-Prolog. Creo que está tratando de resolver los enlaces simbólicos porque él quiere saber su ubicación física. Por lo general, es necesario para encontrar bibliotecas predeterminadas y otros productos. En mi opinión, esto puede ser un error en SWI-Prolog. Tal vez está reparado en una versión superior. Tal vez deberías reportar este error. Tal vez hay alguna solución disponible.

Por favor indique la dirección original:osx – ¿Por qué no funcionaría un enlace simbólico a un enlace simbólico? - Código de registro