在 Debian(以及其它 Linux 发行版)中,软链接(symbolic link,软连接)失效通常指执行或访问软链接时报错,例如:
No such file or directoryToo many levels of symbolic links下面按常见原因逐一说明,并给出排查与解决方法。
软链接只是“指针”,目标删除或移动后链接就失效。
ls -l /usr/bin/xxx
# xxx -> /opt/old/xxx (但 /opt/old 已不存在)
ls -l 软链接
readlink 软链接
ln -sf 新目标 软链接
创建软链接时用了相对路径,但当前目录不对。
ln -s file /usr/local/bin/file
# 实际指向 /usr/local/bin/file -> file(错误)
ln -s /opt/app/file /usr/local/bin/file
cd /usr/local/bin
ln -s ../opt/app/file file
如果软链接指向:
当设备未挂载时,软链接“看似存在,实际打不开”。
mount | grep 目标路径
例如:
ln -s a b
ln -s b a
访问时会报:
Too many levels of symbolic links
删除其中一个并重建:
rm b
ln -s 真实文件 b
chmod +x 目标文件
常见于:
apt 删除了旧版本例如:
/usr/bin/python -> python3.9
# 升级后变成 python3.11
ln -sf /usr/bin/python3.11 /usr/bin/python
极少数情况:
chattr +ilsattr 软链接
ls -l 软链接
readlink -f 软链接
file 软链接
ls -l $(readlink 软链接)
如果你愿意,可以把 具体报错信息 + ls -l 输出 发出来,我可以帮你精准判断是哪一种原因。