Cela fonctionne pour moi, quel est le résultat de strace ln -f -s /var/www/html/releases/build1390 app-current
?
Oh, puisqu'il s'agit d'un répertoire, vous devez ajouter -n
pour l'absence de déréférence, ce qui devrait résoudre le problème. -f
est plus une commodité puisque l'ajout de -f provoque de toute façon la suppression du lien. Bien que je suppose que cela se produirait probablement quelques centaines de ms plus rapidement sur un système normalement chargé.
Par exemple, si arf pointe déjà sur /home :
strace Avec -n
:
strace ln -n -f -s / arf
...
symlink("/", "arf") = -1 EEXIST (File exists)
unlink("arf") = 0
symlink("/", "arf") = 0
strace Sans -n
:
strace ln -f -s / arf
...
write(2, "ln: "..., 4ln: ) = 4
write(2, "`arf/': cannot overwrite director"..., 34`arf/': cannot overwrite directory) = 34
write(2, "\n"..., 1) = 1
Ainsi, sans la -n
arf est déréférencé, donc ln le traite comme arf comme s'il était en fait /
. Dans votre exemple particulier, s'il n'y a pas d'erreur, je pense que vous avez probablement créé un nouveau lien symbolique à l'intérieur de /var/www/html/releases/build1390 app-current
et vous voudrez les nettoyer.