终端软链接创建失败引发依赖安装及APT更新系列故障求助
看起来你现在被一串连锁问题缠上了——软链接搞砸之后,连APT包管理都跟着出问题,确实头大。咱们一步步来拆解解决:
一、先解决「过多符号链接」的根源问题
你提到修改软链接时出现“too many symbolic links”错误,大概率是出现了循环软链接(比如A指向B,B又指向A),或者同一路径下创建了多层嵌套的无效链接。
你可以先定位问题链接:
- 用
find命令查找目标目录下的所有软链接,查看它们的指向:find /your/target/directory -type l -printf '%p -> %l\n' - 重点检查有没有指向自身或者形成循环的链接,找到后用
rm命令删除这些无效链接:sudo rm /path/to/broken/link
另外提醒你:创建软链接时尽量用绝对路径,避免相对路径导致的意外循环,正确的创建命令示例:
ln -s /absolute/path/to/source/file /absolute/path/to/target/link
二、修复APT找不到基础包的问题
你遇到的E: Unable to locate package xxx错误,大概率是系统的APT源配置出了问题——连vim、git这种基础包都找不到,说明源列表可能失效或者不匹配你的系统版本。
先检查当前的源配置:
cat /etc/apt/sources.list ls -l /etc/apt/sources.list.d/确认里面的源地址是对应你系统版本(比如Ubuntu 22.04对应jammy,20.04对应focal)的有效源,若有无效源可以注释掉或者替换成官方源。
先解决APT更新的脚本错误(下面会详细说),然后重新执行更新:
sudo apt-get update之后再尝试安装需要的包:
sudo apt-get install vim dh-autoreconf git make libexpat1-dev
三、解决APT更新时的Post-Invoke-Success脚本错误
你遇到的这个错误,是APT更新完成后执行cnf-update-db(用于更新「命令未找到」提示数据库)时出了问题。你已经试过安装command-not-found但没用,可以试试以下方法:
先备份原配置文件,避免改坏了没法恢复:
sudo cp /etc/apt/apt.conf.d/99cnf-update-db /etc/apt/apt.conf.d/99cnf-update-db.bak临时禁用这个自动执行的脚本:
编辑99cnf-update-db文件,把里面的脚本行注释掉:sudo nano /etc/apt/apt.conf.d/99cnf-update-db将原来的内容:
APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi';修改为:
#APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi';保存退出后,再执行
sudo apt-get update,看是否还报错。如果还是不行,可以尝试重新安装
command-not-found包:sudo apt-get purge command-not-found sudo apt-get install command-not-found
按这个顺序排查下来,应该能逐步解决你的连锁问题。如果某一步还是有问题,可以把具体的错误信息再贴出来,咱们再调整方案。
备注:内容来源于stack exchange,提问作者error

