一次Deepin库问题修复


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)。

github的记录

而我系统里面的显示是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根本不是这次问题的元凶。确实好用,再次安利。