在做了“发布升级”之后,我的笔记本电脑(Thinkpad T460 )已经不能正常启动了。老鼠在启动时出现了,但没有移动。当Kubuntu的登录屏幕出现时,我无法登录,因为击键不被接受(看起来根本没有键盘)。我可以启动到恢复,但没有网络在那里(即使在启动后,从友好的控制台)。
外部键盘和鼠标启动后不工作,但工作类似于内置键盘在恢复模式。
在康复中玩了两天之后,我终于发现了这个问题。
一些组件正在寻找libffi.so.6,但它已被libffi.so.7.1.0所取代。为我设置一个指向v7的符号链接,修复了损坏的笔记本电脑,它现在正在正常运行。
如何找出哪个程序引用了这个旧库?当我试图在恢复中启动网络管理器时,我在日志中找到了引用,但是我无法确定哪个程序真正失败了。
发布于 2022-04-26 17:03:17
当我从20.04升级到22.04的时候,我也遇到了同样的问题,它又变成了libffi。
以下是我采取的一些可能对其他人有所帮助的步骤。如果你不小心,你当然会毁了你的系统,所以以前的备份是很好的做法(虽然没有网络可能会很痛苦)。
当系统在引导期间停止并显示失败的服务时,例如热守护进程、网络管理器或其他。
启动恢复内核(在引导徽标/bios消息后保持shift ),选择"Boot“,并在列表中选择第二行,即新内核的恢复。通常情况下,这是为了获得一个菜单,您可以在其中启动根shell。
检查您的init内存磁盘。我曾经遇到这样的问题:在我的桌面上,从18.04到20.04,initrd是空的(0字节)。在这里,你会发现很多关于如何重建适合你的安装的提示。
检查/var/log/syslog
中指向带grep "error while loading
的失败动态库的条目
如果是这样,请在/usr/lib
或/lib
中查找类似的名为lib的名称,其中xxx是缺少的库的名称。
创建一个从现有库到缺少的库的符号链接。在我的例子中,是ln -s libffi.so.8.1.0 libffi.so.6
。我仍然需要建议,你认为这里更好的方法。所描述的旧链接,或者从网络中获取旧的库,并将其复制到新的库中。
如果有多个重复,则重新启动。
您的系统现在应该定期启动。然后,我遇到了一个问题,那就是等离子体正在崩溃,许多程序没有启动,而是抱怨共享库中缺少了一个符号。这是一个版本不匹配的库,程序加载过时的库,并未能找到它正在寻找的符号。当然,像sudo apt install --fix-broken
和sudo dpkg --configure -a
这样的其他提示也应该被考虑进去。
我现在使用libpango作为示例,检查您的错误消息。
我试着启动filezilla
错误消息看起来像/lib/x86_64-linux-gnu/libpango-1.0.so.0: undefined symbol: g_memdup2
该符号在libpango中没有缺失,而是在libpango试图加载的lib中丢失。你的朋友是ldd
。
输入ldd /lib/x86_64-linux-gnu/libpango-1.0.so.0
在下面的列表中,查找/usr/local/lib
中的库,这是我现在遇到的几次问题。把这些乡下佬移开。在我的例子中,有一个过时的口头禅(不知道它来自哪里) sudo mv libglib-2.0.so* /tmp/oldlibs
。
对每一个错误都重复这一点。
我不知道我是否特别不幸,但这是第二次升级失败,因为libffi...any暗示了这一点?
https://askubuntu.com/questions/1239844
复制相似问题