我想安装最新版本的boto,我通过python setup.py install
然而,当我尝试删除旧版本时,以下软件包也会被删除:
apt-get remove python-boto
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
cloud-init cloud-utils euca2ools python-boto
我如何告诉包管理器删除 boto,并将其标记为外部安装(或类似的东西),以便 apt 不会尝试修复丢失的依赖项?
谢谢你,
马克西姆。
直接使用 dpkg,而不是 apt-get 或 aptitude:
或者
我知道这是一篇旧帖子,但是由于我最近遇到了类似的问题,因此我想分享我的解决方案,希望将来有人会发现它有用。
如果您通过 aptitude 安装了一个包,它会自动将标志分配给依赖项(自动),当您再次尝试删除包时,它会尝试删除其所有仍设置了自动标志的依赖项。
正如你在我的例子中看到的,我想删除的是 zabbix:
如果我们查找 apache 包,它看起来像这样
第一个标志“i”告诉我们安装了 apache
下一个标志“A”代表自动安装
因此,为了解决这个问题并且不卸载 apache、mysql 和 php,我们可以像这样删除带有 aptitude 的 auto 标志:
现在去掉zabbix包后是这样的:
有关更多详细信息,请查看 aptitude 手册页
您可以使用该实用程序创建一个虚拟的 .deb 包
equivs
,它将提供依赖项而无需安装任何文件。然后只需将当前安装的软件包替换为使用dpkg -i fake.deb
.这正是
apt-mark hold
它的用途。apt-mark hold package_name
从文档中:
要取消保留包裹:
apt-mark unhold package_name
AFAIK 没有办法使用 APT 删除一个包而不删除那些依赖它的包。
参考: http: //www.debian.org/doc/manuals/apt-howto/ch-apt-get.en.html
要完成 João Pinto 的回答,您可以使用我的小脚本来修复损坏的包,该脚本将使用 equivs 创建虚拟包并安装它。你可以在我的博客上找到一篇法语文章。
或者直接在gist code上。
要使用它: