需要阻止安装包

Bru*_*ira 23 apt

我有一个我不想安装的软件包,即使另一个需要它。

有什么方法可以将一个包“列入黑名单”,即使它是另一个包的依赖项?

我能否克服它是依赖项的事实并且仍然能够升级我的系统?

我正在特别考虑 Unity 的消息指示器。如果我出于某种原因删除它并再次添加 Unity,我不希望再次安装小程序。如何防止它被安装?(或全局菜单,Java 版本删除了我自定义安装的一个,等等......你明白了)。

jdt*_*ood 32

  • 有什么方法可以将一个包“列入黑名单”,即使它是另一个包的依赖项?

为防止apt安装包foo,请将该包的节添加到文件 /etc/apt/preferences 中,如下所示。

Package: foo
Pin: release *
Pin-Priority: -1
Run Code Online (Sandbox Code Playgroud)

这将阻止 apt 安装 foo,也将阻止 apt 安装任何依赖于 foo 的东西。

我能想到的下一个最接近的事情是将foo置于其当前版本的保留状态,以防止 foo 升级(除非 dpkg 提供了--force-hold选项或除非 apt 覆盖保留)。要暂停包 foo,请执行以下操作。

echo foo hold | sudo dpkg --set-selections
Run Code Online (Sandbox Code Playgroud)
  • 我能否克服它是依赖项的事实并且仍然能够升级我的系统?

您可以使用dpkg --force-depends. apt除非您apt-get source依赖于 foo 的包并在不依赖于 foo 的情况下重建它,否则您将无法执行此操作。


enz*_*tib 2

如果一个包需要(依赖)另一个包,那么没有它它就不能正常工作。如果可以,那就是一个错误,它应该是推荐而不是依赖。

要避免安装依赖项:

  1. 下载所需的包:

    sudo apt-get --download-only install pkg-name
    
    Run Code Online (Sandbox Code Playgroud)
  2. 删除不需要的包

    sudo rm /var/cache/apt/archive/bad-pkg_*.deb
    
    Run Code Online (Sandbox Code Playgroud)
  3. 安装所有其他软件包

    sudo apt-get --no-download --ignore-missing install pkg-name
    
    Run Code Online (Sandbox Code Playgroud)

另一方面,要安装没有推荐的软件包:

sudo apt-get --no-install-recommends install pkg-name
Run Code Online (Sandbox Code Playgroud)