卸载所有依赖的包,只要它不被其他包依赖即可

卸载所有依赖的包,只要它不被其他包依赖即可

我想卸载packageApackageA 依赖的所有其他包,但不卸载仍然具有依赖项的包。

$ apt-cache depends packageA
packageA
  Depends: packageB
  Depends: packageC

$ apt-cache depends packageD
  Depends: packageC

$ apt-cache rdepends packageB
  Reverse Depends:
    packageA

$ apt-cache rdepends packageC
  Reverse Depends:
    packageA
    packageD

packageApackageBpackageCpackageD当前已安装。我要卸载packageA。因为packageB这是唯一依赖的软件包,packageA我也想卸载它。由于需要,packageC仍应安装。packageD我不想卸载packageD

我知道有apt autoremove。但是我不想使用,apt autoremove因为有一些“未使用”的软件包实际上已被使用。然而,由于数量巨大,我无法分辨哪些是未使用的软件包,并且我不想安装所有未使用的软件包。
依赖关系正在修复,但需要时间。现在我需要一个解决方案。

答案1

Aptitude 应该为您做到这一点。如果packageB标记为自动安装,

aptitude remove packageA

将删除packageApackageB。由于packageC另一个包仍然需要它,因此不会将其删除。

答案2

我找不到像自动删除这样的其他程序。我使用过自动删除,它从未破坏过我的系统。也许这是值得考虑的事情?创建所有已安装软件包的备份列表

sudo cp -a /etc/apt/sources.list{,.bak} && sudo apt install apt-clone -y && mkdir ~/mypackages && sudo apt-clone clone ~/mypackages

现在你可以运行sudo apt 自动删除如果您遇到任何问题,只需恢复即可

sudo apt-clone restore apt-clone-state-ubuntuserver.tar.gz

相关内容