oracle-java8-installer 会导致“apt”被删除吗?

oracle-java8-installer 会导致“apt”被删除吗?

自从第一个 alpha 版本发布以来,我一直在运行 trusty,并每天获取更新。我还从 WebUpd8 PPA 安装了 oracle-java7-installer。今天我在 dist-upgrade 期间注意到 oracle-java7-installer 被删除了。在我的 edge 系统上,我只允许所有默认设置,因此我允许删除,希望无论如何都能试用 java 8 版本。但是,当我去安装 oracle-java8-installer 包时,它想要删除“apt”!?这显然引起了我的担忧,因为它甚至感觉像是一个安全问题。如果能帮助我理解这一点,我将不胜感激。

$ sudo apt-get install oracle-java8-installer
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  visualvm ttf-baekmuk ttf-unfonts ttf-unfonts-core ttf-kochi-gothic ttf-sazanami-gothic ttf-kochi-mincho ttf-sazanami-mincho
  ttf-arphic-uming
The following packages will be REMOVED:
  apt apturl nautilus-share python3-software-properties software-center software-properties-common software-properties-gtk
  ubuntu-extras-keyring ubuntu-minimal unattended-upgrades
The following NEW packages will be installed:
  oracle-java8-installer
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt
0 upgraded, 1 newly installed, 10 to remove and 0 not upgraded.
Need to get 18.7 kB of archives.
After this operation, 7,838 kB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
 ?] 

答案1

‘apt’ 包 ChangeLog 中引用的最近更改似乎是罪魁祸首:

apt (0.9.15.4ubuntu4) trusty; urgency=low

  Cherry pick fixes from the apt 1.0 branch:

  [ Michael Vogt ]
  * add sun-java{5,6}-jdk to breaks/replaces as that provided a "apt"
    binary as well

oracle-java8-installer 包“提供”了“sun-java6-jdk”包,因此这种冲突会加剧并阻止我们安装 WebUpd8 包——尽管 oracle-java7-installer 和 oracle-java8-installer 实际上都没有安装 apt 变更日志中提到的有问题的“apt”二进制文件。

我继续并为此提交了一个错误报告:https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1302736

答案2

Andy S 发现了这个问题,我希望他能尽快修复。请使用他提供的错误报告链接,并指出它也影响到您,以便它获得更高的优先级。

如果您实在等不及,这里有一个临时的解决方法来忽略依赖性问题并强制安装:

  • 从 apt 下载 .deb 软件包sudo apt-get download oracle-java7-installer

  • 安装您刚刚下载的 .deb,忽略 apt 抱怨的任何依赖项:sudo dpkg -i --ignore-depends=apt file-you-just-downloaded.deb

有两点值得注意:

  1. 您可以通过相应地更改上述命令,以类似的方式将其用于 Java 8。
  2. 至少目前,您的 apt 会认为它存在依赖关系中断,并请求删除 oracle-java7-installer。您可以使用 恢复apt-get -f install

答案3

在修复此问题之前,另一个解决方法是从 webupd8 修改 deb 文件,并从deb 控制文件中的行sun-java6-jdk中删除。这里有一个方便的脚本Provides这个答案在 superuser.com 上。只需获取原始文件,在其上运行脚本,修改行Provides并使用 安装修改后的文件sudo dpkg -i

我上传了修改包,但我强烈建议使用原始文件并自行进行修改,因为您不应该在互联网上由随机人员安装东西;)

相关内容