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

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

  •  
  •   cnt2ex · 2017-11-28 13:34:44 +08:00 · 8841 次点击
    这是一个创建于 2552 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    另外上面好多层楼把依赖关系搞反了,不知从哪里开始吐槽。
    leux
        22
    leux  
       2017-12-08 12:31:07 +08:00
    安装时不要用 apt install gnome,可以试试 apt install gnome-core,前面那个会为你安装 gnome 全家桶。
    更多包可以使用 https://www.debian.org/distrib/packages 搜索
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1822 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:31 · PVG 00:31 · LAX 08:31 · JFK 11:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.