需要防止安装软件包

需要防止安装软件包

我有一个包,但我不想安装,即使别人需要它。

是否有任何方法可以将某个包列入“黑名单”,以防止其被安装,即使该包是另一个包的依赖项?

我是否可以克服依赖性问题并且仍然能够升级我的系统?

我特别考虑了 Unity 的消息指示器。如果我出于某种原因删除它并再次添加 Unity,我不想再次安装该小程序。我怎样才能阻止它被安装?(或者全局菜单、Java 版本删除我自定义安装的版本等……你明白了)。

答案1

  • 是否有任何方法可以将某个包列入“黑名单”,以防止其被安装,即使该包是另一个包的依赖项?

为了防止apt安装某个软件包foo,请在文件 /etc/apt/preferences 中为该软件包添加一个节,如下所示。

Package: foo
Pin: release *
Pin-Priority: -1

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

我能想到的下一个最接近的事情是抓住在当前版本上阻止 foo 升级(除非 dpkg 有此--force-hold选项或 apt 覆盖暂停)。要暂停软件包 foo,请执行以下操作。

echo foo hold | sudo dpkg --set-selections
  • 我是否可以克服依赖性问题并且仍然能够升级我的系统?

尽管存在依赖关系冲突,您仍可以使用 安装单个软件包。除非您使用依赖于 foo 的软件包并在没有对 foo 的依赖的情况下重建它,否则dpkg --force-depends您将无法使用apt来执行此操作。apt-get source

答案2

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

为了避免安装依赖项:

  1. 下载所需的软件包:

    sudo apt-get --download-only install pkg-name
    
  2. 删除不需要的包

    sudo rm /var/cache/apt/archive/bad-pkg_*.deb
    
  3. 安装所有其他包

    sudo apt-get --no-download --ignore-missing install pkg-name
    

另一方面,要安装不带建议的包:

sudo apt-get --no-install-recommends install pkg-name

相关内容