一次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根本不是这次问题的元凶。确实好用,再次安利。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。