首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
华为云
V2EX  ›  Linux

apt 仅卸载某个包而不卸载其依赖

  •  
  •   cnt2ex · 259 天前 · 3121 次点击
    这是一个创建于 259 天前的主题,其中的信息可能已经有所发展或是发生改变。

    操作系统是 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. hold 所有 gnome 的依赖再卸载 gnome
    2. 将 gnome 的依赖全部标记为 manual 的。然后再卸载 gnome。

    不过我都不知道以上的后果是什么,所以问问有没有人比较熟悉类似的操作的。

    22 回复  |  直到 2017-12-08 12:31:07 +08:00
        1
    jyf007   259 天前
    emerge -C app-shells/bash
        2
    jmc891205   259 天前
    卸载 gnome-weather 之后呢?还要把 gnome 装回来?这样应该不行吧。。。
        3
    forestyuan   259 天前
    强行卸载会出问题吧
        4
    sundayhk   259 天前 via Android
    强行将依赖卸载掉的话,重启后你就知道麻烦了。这坑是自己挖。
        5
    jasontse   259 天前 via iPad
    直播作死
        6
    YumeMichi   259 天前   ♥ 2
    总有人喜欢挑战 linux 的包依赖关系(滑稽
        7
    henglinli   259 天前 via iPhone
    @jyf007 zsh 好用,我卸载了 bash
        8
    402645707   259 天前
    要是依赖了 python 全家桶(善意的微笑
        9
    chinanala   259 天前
    我也是 Debian9 stable- Gnome。系统安装后默认自带 Gnome 一大堆用不着的小工具,我都在 gnome-software 中卸载了,没遇到你说的依赖问题。不是在命令行中卸载,是在 Software GUI 程序中卸载
        10
    Gonejack   259 天前 via iPhone
    Linux 这些太脏了,很容易玩挂
        11
    cnt2ex   259 天前
    问题解决了。
    最后还是用了第三种方法,把 gnome 依赖的所有包标记成手动安装,然后再卸载的 gnome 和 gnome-weather,gnome-core 和其他依赖依然保留着。

    @jmc891205
    没有把 gnome 安装回来。其实 gnome 包里本身没有什么内容,主要是 gnome 包依赖了其他包。

    @chinanala
    我并不是默认安装,装的时候把桌面环境给取消了。装好之后只有字符界的那种,在里面自己装的 gnome。
    依赖问题的话,我猜测可能是默认安装的把所有依赖安装的包都标记为手动安装的了。或者你卸载的那几个软件并非是 Depends 这样的依赖而是 Recommends 或者 Suggests 这样的依赖。
        12
    msg7086   259 天前
    没记错的话 apt-get 卸载包不会自动卸载依赖包。
        13
    7654   259 天前
    下载 deb 包,然后压缩软件打开,按照里面的路径,手动 rm
    楼主是有多大的强迫症?
        14
    0Y89tX3MgR4I   259 天前
    有这时间干啥不好
        15
    slack   259 天前 via Android
    用 aptitude 吧,apt 在某些方面可能会破坏依赖关系的
        16
    linuap   259 天前
    强迫症老哥别用 linux 当桌面吧....

    linux 就是把太多东西给你看了,还给了你想怎么玩怎么玩的权限

    像 ios 之类的,你看到的都删不了,别提那些你看不到的了 /doge
        17
    zeny620   259 天前
    借楼问下如何只装必要依赖,不装 suggest 包
        18
    feather12315   259 天前 via Android
    `apt autoremove --purge <package>`
        19
    feather12315   259 天前 via Android
    @zeny620 #17 `man apt`,有个 `no-recommend`之类的参数
        20
    cnt2ex   258 天前
    @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   258 天前
    apt-get 不会自动卸载依赖,所以「平时」是推荐用 apt/aptitude 的,因为「会」自动卸载依赖。
    这里你的特殊要求,正好反过来用 apt-get 才能满足。

    另外上面好多层楼把依赖关系搞反了,不知从哪里开始吐槽。
        22
    leux   249 天前
    安装时不要用 apt install gnome,可以试试 apt install gnome-core,前面那个会为你安装 gnome 全家桶。
    更多包可以使用 https://www.debian.org/distrib/packages 搜索
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   实用小工具   ·   2293 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 20ms · UTC 00:51 · PVG 08:51 · LAX 17:51 · JFK 20:51
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1