postman在Deepin(15.10.2 桌面版)上启动较慢,遂准备换一个.了解到[apipost](https://www.apipost.cn/)还不错,又支持团队协作,于是下了一个linux deb包安装测试.按照正常的安装流程进行安装,第一次失败.中间不做任何变更,再次安装成功. 然后又手贱的用aptget进行了一把更新.
用了几个小时候后,发现在webstorm里通过文件管理器打开文件不行了,也没有任何错误提示,反正就是打不开了.考虑到系统已经几天没有重启过了.于是重启一下电脑.重启之后就出问题了.
问题现象
1、桌面就只有背景,没有图标.确认 Desktop文件夹里面的内容还在.
2、文件管理器不能打开(已卸载重装过)。通过终端启动报错
dde-file-manager: symbol lookup error: /lib/x86_64-linux-gnu/libdde-file-manager.so.1: undefined symbol: _ZN12DDiskManager14opticalChangedERK7QString
3、设置中心点不开。出错信息:
***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!
解决过程
1、卸载apipost,不能恢复
2、重装dde,不能恢复
3、重装dde-file-manager,不能恢复
这时候我已经到Deepin论坛发帖求助,暂时还没有有效的方案。继续自己的尝试。我也想过重装系统,但是需要配置的东西、安装的软件实在是太多了。还是努力抢救一下吧。
4、根据文件管理器的错误提示,是 /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
----------------分析依赖-------
***-deepin:~$ objdump -x /usr/bin/dde-file-manager | grep NEED
NEEDED libjemalloc.so.1
NEEDED libdde-file-manager.so.1
NEEDED libgio-2.0.so.0
------------------依赖路径--------------
***-deepin:~$ ldd /usr/bin/dde-file-manager
linux-vdso.so.1 (0x00007fffe11df000)
libjemalloc.so.1 => /lib/x86_64-linux-gnu/libjemalloc.so.1 (0x00007fa0f04b3000)
libdde-file-manager.so.1 => /lib/x86_64-linux-gnu/libdde-file-manager.so.1 (0x00007fa0efb49000)
libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007fa0ef7ab000)
----------确实有libdde-file-manager.so.1 这个库,看看这个库有没有提示错误函数的依赖---
*deepin:~$ objdump -T /lib/x86_64-linux-gnu/libdde-file-manager.so.1 | grep opticalChanged
0000000000000000 DF *UND* 0000000000000000 _ZN12DDiskManager14opticalChangedERK7QString
有,看看这个函数是那个库提供的
***-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
---------根据我的了解,不能确定具体是下面那个库提供的了(有知道的朋友还请指点下)
请出搜索引擎,启动google搜索(百度这玩意,啥有用的信息都没有,针对我这个问题).https://google.fuckcloudnative.io/ 不用翻墙,直接来.
看上去有用.通过比较.确定应该是属于NEEDED 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号就存在了啊,现在出问题,啥意思啊?
知道是那个模块(/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月份才新增了该函数](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 .解包命令
rpm2cpio xxx.rpm | cpio -div 或者参考[这里](https://www.cnblogs.com/cool4ever/p/5734202.html)
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解决。
5、问题3 解决过程
sudo apt-get remove dde-control-center
sudo apt-get install dde-control-center
至此系统问题解决完成。
6、后来我解压了apipost的deb包,根本没有对这些配置的修改。所以apipost根本不是这次问题的元凶。确实好用,再次安利。