当我尝试更新系统时出现jdk-openjdk and jre-openjdk are in conflict
错误:
这是更新尝试的日志:
:: Synchronizing package databases...
core is up to date
extra is up to date
community is up to date
multilib is up to date
:: Searching AUR for updates...
:: Searching databases for updates...
-> Packages not in AUR: bunjs-bin flite1-patched jellyfin-server-bin jellyfin-web-bin js78 libgweather libopenaptx libvterm01 nodejs-lts-gallium progsreiserfs python-backcall
-> Orphan (unmaintained) AUR Packages: anki-official-binary-bundle jdk-jetbrains jetbrains-clion-pj python-gymnasium-notices python-hijri-converter python-jax-jumpy python-pep517
-> Flagged Out Of Date AUR Packages: anki-official-binary-bundle blades-bin logseq-desktop-wayland-bin marp-cli python-mypy-protobuf steamcmd vrms-arch
-> gcc10: local (1:10.3.0-2) is newer than AUR (10.5.0-1)
-> gcc10-libs: local (1:10.3.0-2) is newer than AUR (10.5.0-1)
:: 8 packages to upgrade/install.
8 extra/jdk-openjdk 21.u35-3 -> 21.u35-7
7 extra/jdk11-openjdk 11.0.21.u9-2 -> 11.0.21.u9-3
6 extra/jre-openjdk 21.u35-3 -> 21.u35-7
5 extra/jre-openjdk-headless 21.u35-3 -> 21.u35-7
4 extra/jre11-openjdk 11.0.21.u9-2 -> 11.0.21.u9-3
3 extra/jre11-openjdk-headless 11.0.21.u9-2 -> 11.0.21.u9-3
2 extra/jre17-openjdk 17.0.9.u8-1 -> 17.0.9.u8-2
1 extra/jre17-openjdk-headless 17.0.9.u8-1 -> 17.0.9.u8-2
==> Packages to exclude: (eg: "1 2 3", "1-3", "^4" or repo name)
-> Excluding packages may cause partial upgrades and break systems
==>
Sync Dependency (4): jre11-openjdk-headless-11.0.21.u9-3, jre17-openjdk-headless-17.0.9.u8-2, jre-openjdk-headless-21.u35-7, jre11-openjdk-11.0.21.u9-3
Sync Explicit (4): jre17-openjdk-17.0.9.u8-2, jdk-openjdk-21.u35-7, jdk11-openjdk-11.0.21.u9-3, jre-openjdk-21.u35-7
:: Synchronizing package databases...
core is up to date
extra is up to date
community is up to date
multilib is up to date
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...
error: unresolvable package conflicts detected
error: failed to prepare transaction (conflicting dependencies)
:: jdk-openjdk and jre-openjdk are in conflict
-> error installing repo packages
解决这一冲突的最佳方法是什么?
谢谢你的帮助
编辑:
我尝试过sudo pacman -R jre-openjdk
,但收到此错误:
checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: removing jre-openjdk breaks dependency 'jre21-openjdk=21.u35-3' required by jdk-openjdk
答案1
对于此类事情,请务必检查一下Arch Linux 新闻。在这种情况下,我们想要JDK / JRE 21 包中的传入更改可能需要手动干预:
JDK / JRE 21 包中的传入更改可能需要手动干预
2023-11-02 - 弗雷德里克·施万
我们正在对发行版的 JDK/JRE 包进行更改。这是由现代版本的 Java (>9) 中构建 JRE 的方式触发的。我们在 Java 21 中引入了这一更改。
总而言之,我们不会让 JDK 和 JRE 包共存于同一个系统中,而是会让它们发生冲突。 JDK变体包包含了执行Java应用程序的运行环境,因此以后如果需要Java的编译和运行时,只需要JDK包即可。另一方面,如果他们只需要 Java 运行时,那么 JRE(或 jre-headless)就可以工作。
这(可能)需要在升级期间进行手动用户操作:
如果您同时安装了 JDK 和 JRE,您可以手动安装 JDK,
pacman -Syu jdk-openjdk
这会删除 JRE 相关包。如果您同时拥有 JRE 和 JRE-headless,则需要选择其中之一并手动安装,因为它们现在会相互冲突。如果您只有 JDK/JRE/JRE-headless pacman 之一,应该可以正常解析依赖关系,无需执行任何操作。目前,这仅对即将发布的 JDK 21 版本有效。
就我的具体情况而言,我昨天修复了这个问题:
sudo pacman -R jre-openjdk
sudo pacman -Suy
但具体细节取决于您安装的内容以及您需要的内容,如引用的文章中所述。
答案2
第一次更新jdk-openjdk
,这将建议jre-openjdk
按照中所述删除JDK / JRE 21 包中的传入更改可能需要手动干预。
手动安装 JDK ...这会删除 JRE 相关包。
然后再进行全面升级。
sudo pacman -S jdk-openjdk
sudo pacman -Syu