困境 22:python-pillow 和 python-pil apt-get 冲突

困境 22:python-pillow 和 python-pil apt-get 冲突

我想升级到python-pillow但默认安装(Ubuntu 14.04.5)已经给了我python-pil

> sudo apt-get install python-pillow
...
dpkg: error processing archive /var/cache/apt/archives/python-pillow_2.7.0-1_amd64.deb (--unpack):
 trying to overwrite '/usr/bin/pilfont.py', which is also in package python-pil 2.3.0-1ubuntu3
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
...

好的,有冲突。我直接删除这个包吧,因为我不需要它……

> sudo apt-get remove -f python-pil
...
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 python-allspeak-rest : Depends: python-pillow (>= 2.7.0)
 python-imaging : Depends: python-pil but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

不妨尝试一下它所说的...

> sudo apt-get -f install
...
The following NEW packages will be installed:
  python-pillow
...
dpkg: error processing archive /var/cache/apt/archives/python-pillow_2.7.0-1_amd64.deb (--unpack):
 trying to overwrite '/usr/bin/pilfont.py', which is also in package python-pil 2.3.0-1ubuntu3
...

回到开始的地方。无法删除旧版本或安装新版本。我现在该怎么办?


更新:

我可以使用以下命令强制卸载 python-pil(来自这里):

sudo dpkg -r --force-depends python-pil

但现在我遇到了如下错误:

The following packages have unmet dependencies:
 python-allspeak-rest : Depends: python-pillow (>= 2.7.0)
 python-imaging : Depends: python-pil but it is not going to be installed

我不能同时安装两者但依赖关系却说我需要这样做。

答案1

如果您仍在寻找正确答案,那么您可以针对python-pillow此问题提出错误报告。

apport-bug python-pillow

可能的解决方案:

  • /usr/bin/pilfont.py更改中的名称python-pillow,因为它是分叉。
  • /usr/bin/pilfont.py更改两者中的名称python-pillowpython-pil并且两者都应用于update-alternatives创建/usr/bin/pilfont.py符号链接。
  • python-pillowpython-pil在字段中声明Breaks:,所以它们不能在同一个系统中一起安装(这就像扣动战争的扳机:D)。

顺便说一句,python-pillow已从 Ubuntu 16.04 中删除。

答案2

这根本不是一个好的解决方案,但它对我来说是有效的(从评论中复制):

好吧,我终于通过在安装过程中允许文件覆盖让一切都正常运行sudo dpkg -i --force-overwrite /var/cache/apt/archives/python-pillow_2.7.0-1_amd64.deb(参见)。这不是一个好的解决方案,因为包管理器不知道这些文件来自哪个包。但至少我可以继续做我正在做的事情。

相关内容