如何使用 aptitude 包管理器“自动删除”包?

Ale*_*xey 5 aptitude ubuntu

是否可以执行等效于apt-get autoremovewith aptitude?如果是,如何?

Debian的管理员手册的是aptitude“autoremoves”自动包,但事实却并非如此(并非总是如此)。就我而言(Ubuntu GNOME 16.04),我有一个 linux 内核,它apt-get autoremove建议让我摆脱:

§ sudo apt-get autoremove
[sudo] password for alexey: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.4.0-31 linux-headers-4.4.0-31-generic
  linux-image-4.4.0-31-generic linux-image-extra-4.4.0-31-generic
0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
After this operation, 295 MB disk space will be freed.
Do you want to continue? [Y/n]
Run Code Online (Sandbox Code Playgroud)

aptitude,然而,并不关心它。


这是输出aptitude why linux-image-4.4.0-31-generic

i   ubuntu-gnome-desktop         Depends    gdm3                                                      
i A gdm3                         Recommends xserver-xorg                                              
c   xserver-xorg                 Recommends xserver-xorg-video-all | xorg-driver-video                
p   virtualbox-guest-x11         Provides   xorg-driver-video                                         
p   virtualbox-guest-x11         Depends    virtualbox-guest-utils (= 5.0.32-dfsg-0ubuntu1.16.04.2)   
p   virtualbox-guest-utils       Recommends virtualbox-guest-dkms (= 5.0.32-dfsg-0ubuntu1.16.04.2) | v
                                            irtualbox-guest-source (= 5.0.32-dfsg-0ubuntu1.16.04.2) | 
                                            virtualbox-guest-modules                                  
i A linux-image-4.4.0-31-generic Provides   virtualbox-guest-modules
Run Code Online (Sandbox Code Playgroud)

这是输出aptitude search '~i linux.*4.4.0-31' -F '%c%a%M %p'

i A linux-headers-4.4.0-31
i A linux-headers-4.4.0-31-generic
i A linux-image-4.4.0-31-generic
i A linux-image-extra-4.4.0-31-generic
Run Code Online (Sandbox Code Playgroud)

lbs*_*lbs 4

不再使用的自动包在 aptitude 中标记为“id”。

\n\n

我找到了三种方法来删除它们。

\n\n
    \n
  1. 能力用户界面

    \n\n

    sudo aptitude

    \n\n

    g可预览要安装和删除的软件包。

    \n\n

    在此输入图像描述

    \n\n

    您可以在“由于不再使用而被删除的软件包”下找到这些软件包。然后再按g一次,aptitude 将删除这些包。

  2. \n
  3. 使用 grep 和 xargs 的 Aptitude 命令行

    \n\n

    aptitude search ~i | grep ^id | awk \'{print $2}\' | xargs sudo aptitude purge -y

  4. \n
  5. Aptitude::Delete-Unused带选项的 Aptitude 命令行

    \n\n

    sudo aptitude -o Aptitude::Delete-Unused=1 install

    \n\n
    \n

    选项:Aptitude::删除-未使用

    \n\n

    默认值:true

    \n\n

    说明:如果此选项为 true,则不再需要的自动安装的软件包将被自动删除。有关详细信息,请参阅\n名为 \xe2\x80\x9c 管理自动安装的软件包\xe2\x80\x9d 的部分。

    \n
    \n\n

    我从http://www.lambdacurry.com/2013/12/aptitude-equivalent-of-apt-get-autoremove/找到了这个解决方案。并且该选项在 aptitude 参考手册中的“配置文件参考”中进行了描述。我没有足够的声誉来发布更多链接,因此您可以四处搜索该文档。

  6. \n
\n\n

他们中的任何一个都适合我。

\n\n

根据6.2.7。跟踪自动安装的软件包

\n\n
\n

有了这些信息,当软件包被删除时,软件包管理器可以计算出不再需要的自动软件包列表(因为没有\xe2\x80\x9c手动安装的\xe2\x80\x9d软件包依赖于它们)。

\n
\n\n

管理自动安装的软件包

\n\n
\n

更准确地说:当手动安装的软件包中没有通过 Depends、PreDepends 或 Recommends 的路径时,它们将被删除。

\n
\n\n

我的答案仅适用于从手动安装的包到目标包不存在依赖路径(Depends、PreDepends 或 Recommends)的情况。因此,没有办法使用aptitude来做与问题中描述的情况相同的事情apt-get autoremove(存在来自 的依赖路径ubuntu-gnome-desktop)。

\n