操作系统是 debian 9。
当初安装系统的时候没有选择图形界面,而是镜像安装完之后通过 apt install gnome 来自动安装对应的依赖。 最近突然发现很多依赖其实都没必要,于是想卸载一些东西。比如卸载 gnome-weather 之类的。但是这些是通过 gnome 依赖安装进来的,没法直接卸载。
其中依赖关系大概是 gnome -> gnome-weather, gnome-core 如果我直接卸载 gnome-weather 会导致 gnome 的依赖被破坏,而 apt 就会决定把 gnome 也会卸载掉,而卸载 gnome 就会把通过 gnome 安装进来的依赖 gnome-core 给卸载掉。但是我想保留 gnome-core 而卸载 gnome-weather。
所以现在我打算先卸载 gnome 然后保留 gnome 所有的依赖,再继续卸载 gnome-weather。其实就是想卸载一个包而不卸载其依赖。
网上找到的方法是 dpkg -r --force-all
但我现在还能想到的就是
不过我都不知道以上的后果是什么,所以问问有没有人比较熟悉类似的操作的。
1
jyf007 2017-11-28 14:53:43 +08:00
emerge -C app-shells/bash
|
2
jmc891205 2017-11-28 16:07:11 +08:00
卸载 gnome-weather 之后呢?还要把 gnome 装回来?这样应该不行吧。。。
|
3
forestyuan 2017-11-28 16:22:05 +08:00
强行卸载会出问题吧
|
4
sundayhk 2017-11-28 16:25:30 +08:00 via Android
强行将依赖卸载掉的话,重启后你就知道麻烦了。这坑是自己挖。
|
5
jasontse 2017-11-28 16:42:04 +08:00 via iPad
直播作死
|
6
YumeMichi 2017-11-28 16:45:46 +08:00 2
总有人喜欢挑战 linux 的包依赖关系(滑稽
|
8
402645707 2017-11-28 20:36:20 +08:00
要是依赖了 python 全家桶(善意的微笑
|
9
chinanala 2017-11-28 21:06:33 +08:00
我也是 Debian9 stable- Gnome。系统安装后默认自带 Gnome 一大堆用不着的小工具,我都在 gnome-software 中卸载了,没遇到你说的依赖问题。不是在命令行中卸载,是在 Software GUI 程序中卸载
|
10
Gonejack 2017-11-28 21:44:10 +08:00 via iPhone
Linux 这些太脏了,很容易玩挂
|
11
cnt2ex OP 问题解决了。
最后还是用了第三种方法,把 gnome 依赖的所有包标记成手动安装,然后再卸载的 gnome 和 gnome-weather,gnome-core 和其他依赖依然保留着。 @jmc891205 没有把 gnome 安装回来。其实 gnome 包里本身没有什么内容,主要是 gnome 包依赖了其他包。 @chinanala 我并不是默认安装,装的时候把桌面环境给取消了。装好之后只有字符界的那种,在里面自己装的 gnome。 依赖问题的话,我猜测可能是默认安装的把所有依赖安装的包都标记为手动安装的了。或者你卸载的那几个软件并非是 Depends 这样的依赖而是 Recommends 或者 Suggests 这样的依赖。 |
12
msg7086 2017-11-28 22:41:49 +08:00
没记错的话 apt-get 卸载包不会自动卸载依赖包。
|
13
7654 2017-11-28 22:49:27 +08:00
下载 deb 包,然后压缩软件打开,按照里面的路径,手动 rm
楼主是有多大的强迫症? |
14
0Y89tX3MgR4I 2017-11-28 22:50:43 +08:00
有这时间干啥不好
|
15
slack 2017-11-28 23:07:53 +08:00 via Android
用 aptitude 吧,apt 在某些方面可能会破坏依赖关系的
|
16
linuap 2017-11-28 23:11:06 +08:00
强迫症老哥别用 linux 当桌面吧....
linux 就是把太多东西给你看了,还给了你想怎么玩怎么玩的权限 像 ios 之类的,你看到的都删不了,别提那些你看不到的了 /doge |
17
zeny620 2017-11-29 00:04:52 +08:00
借楼问下如何只装必要依赖,不装 suggest 包
|
18
feather12315 2017-11-29 00:07:00 +08:00 via Android
`apt autoremove --purge <package>`
|
19
feather12315 2017-11-29 00:07:50 +08:00 via Android
@zeny620 #17 `man apt`,有个 `no-recommend`之类的参数
|
20
cnt2ex OP @msg7086
这个我倒不清楚了,因为官方文档里推荐从 apt-get 换成 apt,而我也更习惯使用 aptitude。用 aptitude 的时候会卸载自动安装的依赖。 不过 debian 系的那堆包管理工具对我来说很乱,从 dpkg 的一堆到 apt-get, apt-cache, apt-file, apt-mark 再到 aptitude。我不是很清楚是怎么分类的。只是一般倾向于使用 aptitude/apt 而不是 apt-get,因为 aptitude 的 search 支持 search term,比如'~c'可以搜索哪些包还有 conffiles 没被删除,'~o'可以搜索过时的包。 @7654 这样不好。 光我所知道的,dpkg 和 apt 都会记录一些包的相应的状态。比如 dpkg 会记录(/var/lib/dpkg)某些包安装了哪些文件和他们的 md5sum,而 apt 还会记录某些包是自动安装的还是手动安装的,以及一些其他状态。 你通过 rm 删的话,这些对应的状态没改过来显然是不行的。 @zeny620 debian 的包有几种依赖方式 pre-depends/depends/recommends/suggests pre-depends/depends 是必须满足的依赖。而用 apt 安装的时候,suggests 的包是默认不会被安装的,recommends 的包是默认会安装的。不安装 recommends 就是前面 @feather12315 说的那个参数。 |
21
msg7086 2017-11-29 19:35:03 +08:00
apt-get 不会自动卸载依赖,所以「平时」是推荐用 apt/aptitude 的,因为「会」自动卸载依赖。
这里你的特殊要求,正好反过来用 apt-get 才能满足。 另外上面好多层楼把依赖关系搞反了,不知从哪里开始吐槽。 |
22
leux 2017-12-08 12:31:07 +08:00
安装时不要用 apt install gnome,可以试试 apt install gnome-core,前面那个会为你安装 gnome 全家桶。
更多包可以使用 https://www.debian.org/distrib/packages 搜索 |