[Share Experiences] 关于一个DEB包如何差点干翻Deepin 23这档事
Tofloor
poster avatar
fengshuo
Deepin Wiki Editor
2024-09-21 18:37
Author

事发

事情是这样的,昨天我突发奇想:Linux 下能不能把微软 OneDrive 的内容挂载到文件系统下,这样编辑里面的文档就不用浏览器下载到本地 — 编辑 — 再重新上传了。结果发现一款开源软件 onedriver 可以做到:https://github.com/jstaf/onedriver

不过这个 onedriver 在应用商店和星火都没有上架,看看有没有其他方式安装:作者用 OpenSUSE Build Service(OBS)构建 deb 包,但是构建目标是 Debian 和 Ubuntu,没有 Deepin。嗯......Deepin 以前不是基于 Debian 的嘛,这个给 Debian 12 构建的 deb 包也许能直接用?

于是我把这个 deb 包下载来,没多想直接双击安装(我记得软件包安装器遇到依赖冲突会直接安装失败,感觉没啥风险)还是看一眼详细输出吧,这一看不得了:好几行输出都是 Removing... 开头,这是把什么东西卸载了?!

scream

过了几秒安装器显示安装成功,但是这堆 Removing... 太诡异了,必须翻翻 apt 的日志看它到底干了啥:sudo tail -n 100 /var/log/apt/term.log 输出

Log started: 2024-09-20  17:37:50
(Reading database ... 328425 files and directories currently installed.)
Removing deepin-desktop-environment-cli (2024.09.03) ...
Removing flatpak (1.14.10-1) ...
Removing open-vm-tools-desktop (2:12.4.0-1deepin1) ...
Removing ntfs-3g (1:2022.10.3-1) ...
dpkg: fuse3: dependency problems, but removing anyway as you requested:
gvfs-fuse depends on fuse3.
xdg-desktop-portal depends on fuse; however:
Package fuse is not installed.
Package fuse3 which provides fuse is to be removed.
exfat-fuse depends on fuse; however:
Package fuse is not installed.
Package fuse3 which provides fuse is to be removed.
cryfs depends on fuse; however:
Package fuse is not installed.
Package fuse3 which provides fuse is to be removed.
avfs depends on fuse; however:
Package fuse is not installed.
Package fuse3 which provides fuse is to be removed.Removing fuse3 (3.14.0-5) ...
update-initramfs: deferring update (trigger activated)
Selecting previously unselected package fuse.
(Reading database ... 328202 files and directories currently installed.)
Preparing to unpack .../fuse_2.9.9.1-1_amd64.deb ...
Unpacking fuse (2.9.9.1-1) ...
(Reading database ... 328213 files and directories currently installed.)
Removing gvfs-fuse (1.48.1.4-deepin5) ...
Setting up fuse (2.9.9.1-1) ...
Installing new version of config file /etc/fuse.conf ...
update-initramfs: deferring update (trigger activated)
Processing triggers for man-db (2.12.0-1) ...
Processing triggers for dbus (1.14.10-3) ...
Processing triggers for initramfs-tools (0.142-0deepin2) ...
update-initramfs: Generating /boot/initrd.img-6.9.6-amd64-desktop-rolling
setupcon is missing. Please install the 'console-setup' package.
live-boot: core filesystems devices utils udev blockdev dns.
Log ended: 2024-09-20  17:38:16

直接证实了最坏的猜想:apt 因为依赖问题把好几个软件包卸载掉了,其中甚至有装系统时就在的包。

抢救

之前的经验告诉我,如果现在注销、关机或者重启那系统可能就完蛋了。我也没啥好办法,先把日志里被卸载的那几个软件包装回来再说吧。还好不是很多,手动粘进命令行里:sudo apt install deepin-desktop-environment-cli flatpak open-vm-tools-desktop ntfs-3g fuse3 gvfs-fuse 装回来以后再把 onedriver 卸掉,这次仔细确认不会删掉别的东西。至此抢救完成,配置文件应该都还在,毕竟是被 remove 不是被 purge。楼主发帖后要重启系统,如果我不回复大家那说明没救活,系统还是寄了。

joy

后记

后来发现作者给 Ubuntu 22.04 打的 deb 包恰好能装到 Deepin 上,也能正常使用。给大伙看看俺学校给的 5TB 超大网盘:(关于 onedriver,有兴趣的话我开个新帖)
图片.png

总结:100%我的锅,但还是要吐槽一句**软件包安装器要卸载软件包竟然不要求确认?**这也太危险了吧?安装器过于简陋了,早该重构一下了。打开 deb 包后应该多显示一些信息,类似于:

安装此软件会进行以下操作

一并安装依赖:

  • abc (1.0.0)

升级软件包:

  • def (0.5.1 -> 0.5.5)

卸载冲突项:

  • ghi

继续安装吗?

【取消】【继续】

还有一点就是部分软件包的 priority 设置有误。看下图,apt竟然想自动移除 syslinux 及其他系统级软件???就问为啥 syslinux 没被标记为手动安装?再者为啥软件源里 syslinux 的 priority 是 optional?
图片.png

就这样。抢在更多小白不小心用 sudo apt autoremove把系统干废之前快点修好吧......

pride

Reply Favorite View the author
All Replies
1 / 2
To page
神末shenmo
deepin
Spark-App
2024-09-21 18:39
#1

可以试试RClone

Reply View the author
神末shenmo
deepin
Spark-App
2024-09-21 18:47
#2
Reply View the author
zmqsybzc
deepin
2024-09-21 18:48
#3

我装原版Wine时把系统干崩了,还好靠昨天的备份退回去了

Reply View the author
xclimbing
deepin
2024-09-21 18:49
#4

先给楼主点赞。

后来发现作者给 Ubuntu 22.04 打的 deb 包恰好能装到 Deepin 上,也能正常使用。

楼主能不能直接提供一下这个deb包的下载地址?我也想装一下,我的OneDrive虽然没有5T,但也有1T。

Reply View the author
enforcee
deepin
2024-09-21 18:50
#5

要是用apt装的话估计就有提醒了

confused

Reply View the author
fengshuo
Deepin Wiki Editor
2024-09-21 19:05
#6
xclimbing

先给楼主点赞。

后来发现作者给 Ubuntu 22.04 打的 deb 包恰好能装到 Deepin 上,也能正常使用。

楼主能不能直接提供一下这个deb包的下载地址?我也想装一下,我的OneDrive虽然没有5T,但也有1T。

https://download.opensuse.org/repositories/home:/jstaf/xUbuntu_22.04/amd64/onedriver_0.14.1-1_amd64.deb

如果登录微软账户的弹窗显示不出来的话就关掉程序,终端运行 onedriver -a --no-browser ~/Documents/OneDrive/(其中~/Documents/OneDrive/是网盘挂载点)把输出的链接粘贴进浏览器里,登录你的微软账户,最后会给你跳到一个空白页,这时复制浏览器地址栏里的链接粘贴回终端就行了。再重启onedriver你的账户就绑定好了。反正我是遇到了这个问题。

Reply View the author
Oli
deepin
2024-09-21 20:14
#7

applaud applaud

Reply View the author
LINUX小白菜
deepin
2024-09-21 21:08
#8

我的电脑主力系统是deepin,只要通过VMware安装其他系统,deepin会死机。

Reply View the author
yanjuner
Super Moderator
2024-09-21 21:55
#9

牛🐮 like like

Reply View the author
昨夜的星辰
deepin
2024-09-21 22:02
#10

sudo apt autoremove

这个命令尽量少用,不懂的千万不要用的,稍微懂点的一定要看一下要卸载的软件,有系统级的软件要被卸载千万别回车,不然系统大概率要崩

Reply View the author
麻烦告诉我小浣熊哪里有
deepin
2024-09-21 22:14
#11

like like

Reply View the author
xclimbing
deepin
2024-09-21 23:28
#12
fengshuo

https://download.opensuse.org/repositories/home:/jstaf/xUbuntu_22.04/amd64/onedriver_0.14.1-1_amd64.deb

如果登录微软账户的弹窗显示不出来的话就关掉程序,终端运行 onedriver -a --no-browser ~/Documents/OneDrive/(其中~/Documents/OneDrive/是网盘挂载点)把输出的链接粘贴进浏览器里,登录你的微软账户,最后会给你跳到一个空白页,这时复制浏览器地址栏里的链接粘贴回终端就行了。再重启onedriver你的账户就绑定好了。反正我是遇到了这个问题。

谢谢,已经搞定。其实我太懒了,顶楼给出的线索足够找到安装包。在我这里,直接就可以打开浏览器登录微软账号。

我有一个疑问,deepin在安装包上到底跟哪个发行版是兼容的,按理说,它应该跟debian 12是兼容的吧?为什么却变成了Ubuntu 22.04?

Reply View the author
安洛
deepin
2024-09-22 00:43
#13

onedriver会将所有打开的文件直接整个加载进内存里,而且onedriver用了非常低效的数据库形式来存储本地缓存,目前还没有提供部分清除缓存的功能。所以onedriver只适合用来访问一些小文件,千万不能用onedriver访问大文件,包括打开、下载、上传。否则你会遇到onedriver吃掉10几G内存和几百G磁盘的情况。

Reply View the author
fengshuo
Deepin Wiki Editor
2024-09-22 02:14
#14
昨夜的星辰

sudo apt autoremove

这个命令尽量少用,不懂的千万不要用的,稍微懂点的一定要看一下要卸载的软件,有系统级的软件要被卸载千万别回车,不然系统大概率要崩

这个命令本身是安全的,出问题的是外部因素。还是拿 syslinux 包举例子,这个软件包显然是安装操作系统时装上去的,但不知为何没有被标记为手动安装(APT-Manual-Installed: no),而当自动安装的软件包没有其他包依赖于它时,apt 就认为它可以被 autoremove 掉。总之这是 Deepin 系统安装器的锅,Ubuntu 就没这问题。

Reply View the author
昨夜的星辰
deepin
2024-09-22 09:47
#15
fengshuo

这个命令本身是安全的,出问题的是外部因素。还是拿 syslinux 包举例子,这个软件包显然是安装操作系统时装上去的,但不知为何没有被标记为手动安装(APT-Manual-Installed: no),而当自动安装的软件包没有其他包依赖于它时,apt 就认为它可以被 autoremove 掉。总之这是 Deepin 系统安装器的锅,Ubuntu 就没这问题。

软件多了依赖容易乱,尤其是装的外部软件多了

ubuntu用这命令也搞崩过系统,主要看怎么用

理论上来讲这个命令是安全的,但是现实容易出意外,我还见过一个用这命令加-y的,毫无意外,以前用着没事,在某一次用过之后系统崩了😂

Reply View the author
ljq790615
deepin
2024-09-22 17:21
#16

不确定的deb包,我一般都在终端安装,会有很详细的提示的。

Reply View the author
放屁大王
deepin
2024-09-22 21:00
#17

like like like

Reply View the author
fengshuo
Deepin Wiki Editor
2024-09-23 00:48
#18
ljq790615

不确定的deb包,我一般都在终端安装,会有很详细的提示的。

是呀。我发这个帖子也是提醒开发团队重视一下软件包安装器,虽说它不是新立得但是安装个deb包会装什么依赖之类的得告诉我吧。现在的软件包安装器就是帮你运行 sudo apt install ./xxx.deb -y 而已,非常鸡肋。

Reply View the author
zeno
deepin developers team
2024-09-23 09:32
#19

syslinux priority 是 optional 这本身没有什么问题,这本就不是强制的必选依赖项 你可以看看其他发行版也是一样的,另外你这个操作相当于在混源使用

Reply View the author
最帅的那位
deepin
2024-09-23 16:00
#20

楼主反馈的问题,我这边也有遇见,赶脚有2方面问题:1. 在卸载的时候 ,包安装器deepin-deb-installer 确实有必要提示卸载信息,如果没有回导致功能性问题,尤其是针对Windows搬家过来的,导致炸裂性问题;2. 针对fuse3,fuse3 实际上是包含了fuse的,那么deepin-deb-installer有依赖检查错误之嫌。

建议新版本中尽快处理此问题吧。

image.png

Reply View the author
1 / 2
To page