Résumé
-
Les liens symboliques ne suivent pas les fichiers vers lesquels ils pointent. Si vous avez link_file -> original_file
et que vous faites mv original_file original_file.backup
, le link_file
sera cassé
-
Si vous recréez le nom de fichier d'origine (ce que l'OP a fait), le lien symbolique fonctionnera à nouveau
-
Si vous devez faire link_file -> original_file.backup
, vous devez supprimer link_file
et le recréer, en pointant vers le nouveau nom de fichier
Réponse
Que se passe-t-il avec un lien symbolique si nous renommons un fichier ?
Une fois que vous déplacez un fichier vers lequel le lien symbolique pointe, le lien symbolique est cassé, aussi appelé lien symbolique suspendu. Vous devez le supprimer et en créer un nouveau si vous souhaitez pointer vers le nouveau nom de fichier.
Par exemple, créons un lien symbolic vers un fichier :
$ ln -s testfile.txt mysymlink
$ ls -l mysymlink
lrwxrwxrwx 1 adm adm 12 Dec 8 13:28 mysymlink -> testfile.txt
Maintenant, renommons le fichier. Vous verrez que le lien symbolique pointe toujours vers le chemin d'accès qui n'existe plus (ce qui est important, le fichier existe, le chemin d'accès - n'existe pas) :
$ mv testfile.txt testfile.txt.bak
$ ls -l mysymlink
lrwxrwxrwx 1 xie xie 12 Dec 8 13:28 mysymlink -> testfile.txt
$ cat mysymlink
cat: mysymlink: Aucun fichier ou dossier de ce type
Comment réparer un lien symbolique cassé ?
Si vous pouvez renommer le fichier avec le chemin d'accès d'origine, le lien symbolique recommencera à fonctionner.
$ mv testfile.txt.bak testfile.txt $ cat mysymlink un deux trois
Si le renommage n'est pas une option et que vous ne pouvez pas renommer le fichier, créez un nouveau lien symbolique et supprimez l'ancien.
# casser le lien symbolique
$ mv testfile.txt testfile.txt.bak
$ cat mysymlink
cat: mysymlink: Aucun fichier ou dossier de ce type
# supprimer l'ancien lien symbolique
$ rm mysymlink
# créer un lien symbolique avec le même nom de fichier mais pointant vers un nouveau chemin d'accès
$ ln -s testfile.txt.bak mysymlink
$ cat mysymlink
un deux trois
Question de l'OP: Le lien a-t-il été déplacé vers le nouveau programme minergate.cli
?
Si la cible du lien symbolique /opt/minergate-cli
a été recréée lors de l'installation de la nouvelle version de l'application, le lien symbolique pointera vers le nouveau fichier. Si le nouveau fichier a un nom de fichier différent, alors le lien symbolique sera cassé. Les liens symboliques ne suivent pas le nom de fichier s'il a été déplacé, comme dans l'exemple de l'OP lorsqu'ils ont fait mv /opt/minergate-cli /opt/minergate.old
, le lien symbolique continuera donc de pointer vers /opt/minergate-cli
que ce fichier existe ou non.
Voir aussi