自从第一个 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
有两点值得注意:
- 您可以通过相应地更改上述命令,以类似的方式将其用于 Java 8。
- 至少目前,您的 apt 会认为它存在依赖关系中断,并请求删除 oracle-java7-installer。您可以使用 恢复
apt-get -f install
。