TL;DR Arch Linux,pacman,两个包冲突,第一个是需要的,第二个是所需元包的依赖项。删除了第二个包,但是更新pacman的时候报错,怎么删除呢?
Arch linux中有一些包openbabel存在babel-cli冲突。一个包openbabel就是一个包依赖kalzium,也就是一个包依赖kde-meta-kdeedu就是一个包依赖kde-applications-meta。这是依赖关系图:
kde-applications-meta
|
v
kde-meta-kdeedu
|
v
kalzium
|
v
openbabel
该软件包kde-applications-meta很可能有用,因此无法删除。我不需要包openbabel(有一些与化学有关的东西),所以在安装包时,我通过运行babel-cli删除了包。然而,现在当更新系统()时,pacman 尝试重新安装(作为依赖项),当然它失败了:openbabelpacman -Rdd openbabelpacman -Syuopenbabelkalzium
разрешение зависимостей...
проверка конфликтов...
ошибка: обнаружен неразрешимый конфликт пакетов
ошибка: не удалось подготовить транзакцию (конфликтующие зависимости)
:: 'babel-cli' и 'openbabel' конфликтуют
kalzium告诉 pacman不要尝试安装的最正确方法是什么openbabel?
评论建议添加openbabel要忽略的包,并IgnorePkg在/etc/pacman.conf. 建议很好,但是每次更新 pacman 时都会询问,如下所示:
разрешение зависимостей...
предупреждение: пропуск пакета openbabel-2.4.1-4
предупреждение: не удалось разрешить "openbabel", зависимость "kalzium"
:: Этот пакет не может быть обновлен из-за неразрешимых зависимостей:
kalzium
:: Вы уверены что хотите пропустить этот пакет при обновлении? [y/N]
那么如何去掉这个问题呢?
创建一个 openbabel-fake 虚拟包,它将提供 openbabel 的替代方案。由于明显的冲突,它不起作用。在某些时候,维护者将不得不处理这个问题。目前:
它似乎不是一个非常有用的包。让我们替换它,然后元不会发誓。
创建一个 kalzium-fake 虚拟包,它将提供 kalzium 的替代品
aur/akonadi-假的例子。如果您只安装一次,那么您可以当场修复 PKGBUILD。
如果您安装不止一次,请创建您的包。并且包的全文会是这样的: