装为非deepin的发行版构建的包其实相当于混源。即便附带的 binary 确实能用,但它包里声明的依赖关系和 deepin 的实际情况不一定对的上(当然那些特地自身最小化系统依赖声明并主动减小系统依赖的包就没太大问题了,比如向日葵 WPS 什么的,这些包里的 binary 一般也会丢到 opt 下面)。其实或许可以考虑给 deepin 打包一下对应的软件。deepin 软件包的构建也是发生在(deepin 自己的)OBS 实例上的,说不定一些配置也可以复用。
顺便其它楼层提到的一些和系统本体弱相关的需求(比如使用版本相对 deepin 所提供的更新的 wine),还是建议考虑 玲珑、Flatpak、Distrobox 之类的方案更合适一些。
事发
事情是这样的,昨天我突发奇想:Linux 下能不能把微软 OneDrive 的内容挂载到文件系统下,这样编辑里面的文档就不用浏览器下载到本地 — 编辑 — 再重新上传了。结果发现一款开源软件 onedriver 可以做到:https://github.com/jstaf/onedriver
不过这个 onedriver 在应用商店和星火都没有上架,看看有没有其他方式安装:作者用 OpenSUSE Build Service(OBS)构建 deb 包,但是构建目标是 Debian 和 Ubuntu,没有 Deepin。嗯......Deepin 以前不是基于 Debian 的嘛,这个给 Debian 12 构建的 deb 包也许能直接用?
于是我把这个 deb 包下载来,没多想直接双击安装(我记得软件包安装器遇到依赖冲突会直接安装失败,感觉没啥风险)还是看一眼详细输出吧,这一看不得了:好几行输出都是 Removing... 开头,这是把什么东西卸载了?!
过了几秒安装器显示安装成功,但是这堆 Removing... 太诡异了,必须翻翻 apt 的日志看它到底干了啥:
sudo tail -n 100 /var/log/apt/term.log
输出直接证实了最坏的猜想:apt 因为依赖问题把好几个软件包卸载掉了,其中甚至有装系统时就在的包。
抢救
之前的经验告诉我,如果现在注销、关机或者重启那系统可能就完蛋了。我也没啥好办法,先把日志里被卸载的那几个软件包装回来再说吧。还好不是很多,手动粘进命令行里:
sudo apt install deepin-desktop-environment-cli flatpak open-vm-tools-desktop ntfs-3g fuse3 gvfs-fuse
装回来以后再把 onedriver 卸掉,这次仔细确认不会删掉别的东西。至此抢救完成,配置文件应该都还在,毕竟是被 remove 不是被 purge。楼主发帖后要重启系统,如果我不回复大家那说明没救活,系统还是寄了。后记
后来发现作者给 Ubuntu 22.04 打的 deb 包恰好能装到 Deepin 上,也能正常使用。给大伙看看俺学校给的 5TB 超大网盘:(关于 onedriver,有兴趣的话我开个新帖)
总结:100%我的锅,但还是要吐槽一句**软件包安装器要卸载软件包竟然不要求确认?**这也太危险了吧?安装器过于简陋了,早该重构一下了。打开 deb 包后应该多显示一些信息,类似于:
还有一点就是部分软件包的 priority 设置有误。看下图,apt竟然想自动移除 syslinux 及其他系统级软件???就问为啥 syslinux 没被标记为手动安装?再者为啥软件源里 syslinux 的 priority 是 optional?
就这样。抢在更多小白不小心用
sudo apt autoremove
把系统干废之前快点修好吧......