[系统救援]桌面程序启动不了
Tofloor
poster avatar
qinfl
deepin
2020-06-10 21:24
Author
本帖最后由 qinfl 于 2020-6-11 10:46 编辑

更新了一堆系统的软件.然后安装了一个apipost的工具,第一次安装的时候提示失败,然后又安装了一遍,成功了.用了几个小时,重启系统,出问题了.
问题描述:
1、桌面就只有背景,没有图标.确认 Desktop文件夹里面的内容还在.
2、文件管理器不能打开。(已卸载重装过)。报错
dde-file-manager: symbol lookup error: /lib/x86_64-linux-gnu/libdde-file-manager.so.1: undefined symbol: _ZN12DDiskManager14opticalChangedERK7QString
3、平时右侧的那个工具栏也没有了。就是有显示设置那一丢丢的那个出不来了。

系统版本:15.X 正式版最新的那个.

已处理手段:
1、卸载apipost,不能恢复
2、重装dde,不能恢复
3、重装dde-file-manager,不能恢复

实在没招了,求大神指点
-------------------------------17:28 继续补充  控制中心错误信息

***deepin:/home/qinfl# dde-control-center
QStandardPaths: wrong ownership on runtime directory /run/user/1000, 1000 instead of 0
QStandardPaths: wrong ownership on runtime directory /run/user/1000, 1000 instead of 0
load translate "/usr/share/dtkwidget/translations/dtkwidget2_zh_CN"
load translate "/usr/share/dde-control-center/translations/dde-control-center_zh_CN"
2020-06-10, 17:23:23.921 [Debug  ] [                                                         0] "accounts"
2020-06-10, 17:23:23.943 [Debug  ] [                                                         0] "cloudsync"
......看上去都是正常的........
2020-06-10, 17:23:24.064 [Debug  ] [                                                         0] "systeminfo"
2020-06-10, 17:23:24.074 [Debug  ] [                                                         0] QVariant DBusExtendedAbstractInterface::internalPropGet(const char*, void*) "This Extended DBus interface is not valid yet."
2020-06-10, 17:23:24.074 [Debug  ] [                                                         0] dbus service already registered!
-----------------------2020.06.11  10:00 继续处理
根据文件管理器的提示,是  /lib/x86_64-linux-gnu/libdde-file-manager.so.1 文件依赖的一个函数 _ZN12DDiskManager14opticalChangedERK7QString 找不到了.
确认下信息是否准确.

***-deepin:~$ whereis dde-file-manager
dde-file-manager: /usr/bin/dde-file-manager /usr/share/dde-file-manager

然后
qinfl@qinfl***
  NEEDED               libjemalloc.so.1
  NEEDED               libdde-file-manager.so.1
  NEEDED               libgio-2.0.so.0

........
然后
***-deepin:~$ objdump -x /lib/x86_64-linux-gnu/libdde-file-manager.so.1 | grep NEEDED
  NEEDED               libjemalloc.so.1
  NEEDED               libgsettings-qt.so.1
  NEEDED               libsecret-1.so.0
  NEEDED               libgio-2.0.so.0
  NEEDED               libgobject-2.0.so.0
  NEEDED               libglib-2.0.so.0
  NEEDED               libpoppler-cpp.so.0
  NEEDED               libdtkwidget.so.2
  NEEDED               libdtkcore.so.2
  NEEDED               libudisks2-qt5.so.0
  NEEDED               libdisomaster.so.1
  NEEDED               libQt5Svg.so.5
  NEEDED               libQt5Widgets.so.5
  NEEDED               libQt5X11Extras.so.5
  NEEDED               libQt5Multimedia.so.5
  NEEDED               libQt5Gui.so.5
  NEEDED               libQt5DBus.so.5
  NEEDED               libQt5Concurrent.so.5
  NEEDED               libQt5Network.so.5
  NEEDED               libQt5Xml.so.5
  NEEDED               libKF5Codecs.so.5
  NEEDED               libQt5Sql.so.5
  NEEDED               libQt5Core.so.5
  NEEDED               libGL.so.1
  NEEDED               libpthread.so.0
  NEEDED               libstdc++.so.6
  NEEDED               libm.so.6
  NEEDED               libgcc_s.so.1
  NEEDED               libc.so.6
  NEEDED               ld-linux-x86-64.so.2

这里只能跟踪到库一级,至少信息没问题.
*deepin:~$  objdump -T /lib/x86_64-linux-gnu/libdde-file-manager.so.1 | grep opticalChanged
0000000000000000      DF *UND*  0000000000000000              _ZN12DDiskManager14opticalChangedERK7QString

确实有这个函数的依赖.
不确定是具体是那个模块.启动google搜索(百度这玩意,啥有用的信息都没有,针对我这个问题).https://google.fuckcloudnative.io/    不用翻墙,直接来.

看上去有用.通过比较.确定应该是属于     NEEDED               libudisks2-qt5.so.0     这个模块
继续查找
find / -name "libudisks2-qt5.so.0"
在这个位置找到了  /usr/lib/x86_64-linux-gnu/libudisks2-qt5.so.0
**-deepin:~$ ll /usr/lib/x86_64-linux-gnu/libudisks2-qt5.so.0
lrwxrwxrwx 1 root root 23 7月  12  2019 /usr/lib/x86_64-linux-gnu/libudisks2-qt5.so.0 -> libudisks2-qt5.so.0.0.1
&&-deepin:~$ ll /usr/lib/x86_64-linux-gnu/libudisks2-qt5.so.0.0.1
-rw-r--r-- 1 root root 489336 7月  12  2019 /usr/lib/x86_64-linux-gnu/libudisks2-qt5.so.0.0.1

继续查找输出
objdump -T /usr/lib/x86_64-linux-gnu/libudisks2-qt5.so.0.0.1 | grep DDiskManager14
就为空,啥玩意没有.我擦.
但是看这个日期,2019年7月12号就存在了啊,现在出问题,啥意思啊?
进来的朋友帮忙执行下  objdump -T /usr/lib/x86_64-linux-gnu/libudisks2-qt5.so.0.0.1 | grep DDiskManager14  
看看输出是啥.


Reply Favorite View the author
All Replies
jingle
deepin
2020-06-10 21:56
#1
sudo apt update 看看提示什么  
Reply View the author
jingle
deepin
2020-06-10 22:05
#2
估计是apipost 出现了依赖问题
Reply View the author
今风
deepin
2020-06-10 22:18
#3
试试  sudo apt -f install
Reply View the author
qinfl
deepin
2020-06-11 01:26
#4
https://bbs.deepin.org/post/195798
sudo apt update 看看提示什么

获取:18 http://deb.playonlinux.com cosmic/main amd64 Packages [564 B]                     
获取:19 http://www.scootersoftware.com bcompare4 Release.gpg [198 B]
获取:20 http://www.scootersoftware.com bcompare4/non-free i386 Packages [684 B]
获取:21 http://www.scootersoftware.com bcompare4/non-free amd64 Packages [662 B]
已下载 365 kB,耗时 4秒 (89.4 kB/s)
正在读取软件包列表... 完成
正在分析软件包的依赖关系树      
正在读取状态信息... 完成      
有 1061 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
Reply View the author
qinfl
deepin
2020-06-11 01:27
#5
https://bbs.deepin.org/post/195798
试试  sudo apt -f install

***-deepin:~$ sudo apt -f install
E: 不能理解命令行选项 “f” [来自 -f install] 与其他选项的搭配。
Reply View the author
Comments
maicss
2020-06-11 01:49
-f 放在install 后面
jingle
deepin
2020-06-11 01:54
#6
https://bbs.deepin.org/post/195798
获取:18 http://deb.playonlinux.com cosmic/main amd64 Packages [564 B]                     
获取:1 ...

最好把 /etc/apt/sources.list.d 下的这个playonlinux  bcompare4 删除或屏蔽
Reply View the author
qinfl
deepin
2020-06-11 19:35
#7
本帖最后由 qinfl 于 2020-6-11 12:27 编辑

知道是那个模块(/usr/lib/x86_64-linux-gnu/libudisks2-qt5.so.0.0.1)的问题(缺少导出函数_ZN12DDiskManager14opticalChangedERK7QString )后,通过搜索到github地址(https://github.com/linuxdeepin/udisks2-qt5/blob/master/ddiskmanager.h) 找提交记录,发现在2019年4月份才新增了该函数(    void opticalChanged(const QString &path);).
https://github.com/linuxdeepin/udisks2-qt5/commit/3b39c8df16ce09530a85268eb902daad0a0aaea0#diff-c937c72b954a145a8798cfe76fc4ec57
而我系统里面的显示是7月份的,但是不知道编译的版本
,所以下一步直接从网上找一个对应的版本,检查 是否有这个函数.
最终找到一个下载地址http://ftp.us2.freshrpms.net/linux/rpm2html/search.php?query=libudisks2-qt5.so.0()(64bit),下载回来的是一个rpm包.简单解包 解包参考 后得到文件 libudisks2-qt5.so.0.0.1 ,通过
objdump -T libudisks2-qt5.so.0.0.1 | grep opticalChanged
检查是否有我们需要的内容.如下:
000000000004d444 g    DF .text  000000000000004b  Base        _ZN12DDiskManager14opticalChangedERK7QString
这不就是之前我报错的内容.直接将原模块/usr/lib/x86_64-linux-gnu/libudisks2-qt5.so.0.0.1 备份,然后将新下载的放进去.----这里是将软链接指向新的那个模块
dde-file-manager 文件管理器顺利打开.
重启系统,桌面图标又回来了.
至此,问题1\2解决,
问题3又有新的变化了:
2020-06-11, 11:34:42.432 [Debug  ] [                                                         0] "keyboard"
2020-06-11, 11:34:42.441 [Debug  ] [                                                         0] "wacom"
2020-06-11, 11:34:42.449 [Debug  ] [                                                         0] "update"
2020-06-11, 11:34:42.452 [Debug  ] [                                                         0] "systeminfo"
2020-06-11, 11:34:42.466 [Debug  ] [                                                         0] "bluetooth"
2020-06-11, 11:34:42.466 [Debug  ] [                                                         0] "wacom"
2020-06-11, 11:34:42.466 [Debug  ] [                                                         0] "Cloud Sync"
2020-06-11, 11:34:42.526 [Debug  ] [                                                         0] void UpdateNotifier::updatablePkgsChanged(const QStringList&) setVisible:  true
2020-06-11, 11:34:42.542 [Warning] [                                                         0] QLayout: Attempting to add QLayout "" to MainWidget "", which already has a layout

然后啥都没有~~~~
Reply View the author
qinfl
deepin
2020-06-11 20:01
#8
问题3 解决过程
sudo apt-get remove dde-control-center
sudo apt-get install dde-control-center

至此问题解决完成.感谢各位的支持和帮助.
Reply View the author