我有一个包,但我不想安装,即使别人需要它。
是否有任何方法可以将某个包列入“黑名单”,以防止其被安装,即使该包是另一个包的依赖项?
我是否可以克服依赖性问题并且仍然能够升级我的系统?
我特别考虑了 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
如果一个软件包需要(依赖)另一个软件包,那么如果没有这个软件包,它就无法正常工作。如果可以,那就是一个错误,应该推荐使用,而不是依赖。
为了避免安装依赖项:
下载所需的软件包:
sudo apt-get --download-only install pkg-name
删除不需要的包
sudo rm /var/cache/apt/archive/bad-pkg_*.deb
安装所有其他包
sudo apt-get --no-download --ignore-missing install pkg-name
另一方面,要安装不带建议的包:
sudo apt-get --no-install-recommends install pkg-name