web-dev-qa-db-fra.com

Impossible de changer la destination du lien symbolique

Je souhaite modifier la destination d'un lien symbolique existant, sans supprimer le lien ou l'ancienne destination.

J'ai déjà créé un lien symbolique vers un répertoire tel que:

$ cd /usr/lib/jvm/

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:22  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07

$ Sudo ln -s jdk1.7.0_04 Oracle-jdk-7

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:22  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07
lrwxrwxrwx 1 root root   12 May 11 11:27  Oracle-jdk-7 -> jdk1.7.0_04/

Maintenant, je veux changer ceci, pour créer un lien vers l'autre répertoire:

$ Sudo ln --force -s jdk1.7.0_07 Oracle-jdk-7

Mais cela ne fonctionne pas sans erreur:

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:36  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07
lrwxrwxrwx 1 root root   12 May 11 11:27  Oracle-jdk-7 -> jdk1.7.0_04/

De l'aide ?

21
Seyed Mohammad

Pour créer un lien symbolique vers un répertoire, utilisez l'option 'n':

ln -sfn DESTINATION_DIRECTORY LINK_NAME
  • DESTINATION_DIRECTORY est le nom de la cible du lien;
  • LINK_NAME est le nom du lien.
  • L'option f signifie remplacer le lien existant (c.-à-d. Le supprimer en premier).

L'option n est un peu compliquée. Je pense que votre commande a peut-être créé un lien vers jdk1.7.0_07 dans le répertoire jdk1.7.0_04, via le lien Oracle-jdk-7 au lieu de remplacer le lien. Si tel est le cas, vous devez supprimer le lien pour éviter toute confusion.

31
Marty Fried