WPS Office 携带了奇怪的依赖

如题,有群友反馈说使用 opi 安装 wps-office 会引入一个名为 discord 的依赖。

@fusionfuture

c004-vm2@c004-vm2:~> opi wps-office
1. wps-office
2. wps-office-updater
3. wps-office-language-ru
4. wps-office-language-all
Pick a number (0 to quit): 1
You have selected package name: wps-office
1. home:alveus:main !                        | 11.1.0.11664              | x86_64
2. home:fusionfuture:office !                | 11.1.0.11664              | x86_64
3. home:opensuse_zh !                        | 11.1.0.10161              | x86_64
Pick a number (0 to quit): 2
You have selected binary package: home:fusionfuture:office ! | 11.1.0.11664 | x86_64
BE CAREFUL! The package is from a personal repository and NOT reviewed by others.
You can ask the author to submit the package to development projects and openSUSE:Factory.
Learn more at https://en.opensuse.org/openSUSE:How_to_contribute_to_Factory
Adding repo 'home:fusionfuture:office'
正在检索软件源 'home:fusionfuture:office' 的元数据 ....................................................................................................................................[完毕]
软件源 'opentuna-non-oss' 是最新的。                                                                                                                                                         
软件源 'opentuna-oss' 是最新的。                                                                                                                                                             
软件源 'packman' 是最新的。                                                                                                                                                                  
全部软件源均已刷新。正在加载软件源数据...
正在读取已安装的软件包...
正在解决软件包依赖关系...

将安装以下 6 个新软件包: discord libc++1 libc++abi1 libodbc2 libtcmalloc_minimal4 wps-office

6 个软件包将新装.
总下载大小:473.3 MiB。已缓存:0 B。 操作完成后,将使用额外的 1.6 GiB。继续吗? [y/n/v/...? 显示全部选项] (y): n
Do you want to keep the repo "home_fusionfuture_office"? (Y/n) n
已移除软件源 'home:fusionfuture:office'。
c004-vm2@c004-vm2:~> 

啊这,我直接用 zypper 安装无法复现,特意把 wps-office 卸了重装。discord 没装过。

> sudo zypper in wps-office
正在加载软件源数据...
正在读取已安装的软件包...
正在解决软件包依赖关系...

将安装以下 1 个新软件包: wps-office

1 个软件包将新装.
总下载大小:415.1 MiB。已缓存:0 B。 操作完成后,将使用额外的 1.4 GiB。

确实如此,这似乎是一个奇怪的 bug

问题: 要安装的 wps-office-11.1.0.11664-3.6.x86_64 需要 "libEGL.so()(64bit)",但无法满足此要求
  无法安装的提供者: discord-0.0.22-64.2.x86_64[games_tools]
                   discord-canary-0.0.146-1.1.x86_64[games_tools]
                   discord-0.0.22-79.1.x86_64[packman]
                   discord-0.0.22-1.3.x86_64[repo-non-oss]

似乎是依赖 libEGL.so()(64bit) 带来的 ,似乎是打包的时候搞掉了?

找一下 /usr/lib/python/3.10/site-packages/opi/init.py

里面应该有一行:

args = ['sudo', 'zypper', 'in']

改成:

args = ['sudo', 'zypper', 'in', '—debug-solver', '--dry-run']

然后再跑一次把 /var/log/zypper.solverTestCase 里的内容传上来看看。

注意那个 —debug-solver --dry-run 用完要去掉。

solver.result 里面是这样的:

install discord-0.0.22-79.1.x86_64@packman
install libtcmalloc_minimal4-2.10-1.2.x86_64@repo-oss
install wps-office-11.1.0.11664-3.6.x86_64@home_fusionfuture_office

也就是只有开着 packman 的时候才能够复现。继续:

$ sudo zypper se --requires-pkg -v discord
| wps-office        | 软件包 | 11.1.0.11664-3.6 | x86_64 | fusionfuture
requires: libEGL.so()(64bit)
$ sudo zypper se --provides "libEGL.so()(64bit)"
| discord | Voice and Text Chat for Gamers | 软件包

简单说就是 wps-office 软件包需要 libEGL.so()(64bit) 只有 packman 的 discord 提供了。所以会有这么尴尬的结果。

为什么会这样?这是一个瞎猫碰死耗子的结果,wps-office 这边和 discord 这边都有错。

libEGL.so 是一个显卡驱动相关的库,正常是由 nvidia 的驱动程序或者 libglvnd 软件包来提供的。但是注意根本就没有 libEGL.so 只有 libEGL.so.1,也就是说只有 libEGL.so.1()(64bit) 这个符号名和 /usr/lib64/libEGL.so.1 这个文件。要改的话就需要 @fusionfuture 这边看看是哪个文件没有删除干净了。

4赞

可能是这个文件,/opt/kingsoft/wps-office/office6/addons/cef/libEGL.so,我屏蔽掉吧。

其它软件包也存在这个问题,比如 Teams。

确切地说,大部分电子应用,如果不是只打包资源文件的话,都会带 libEGL.so。这下名副其实电子垃圾了……

1赞

@fusionfuture Debian 系的好像有这个文件,cef 可能是从 Ubuntu 拷过来的,要那样还没什么问题,但感觉 chromium 的人不会蠢到拷一个符号链接,更有可能是这帮家伙自己编译的…

本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。