Arch linux - パッケージ更新エラー:jdk-openjdkとjre-openjdkの競合

Arch linux - パッケージ更新エラー:jdk-openjdkとjre-openjdkの競合

システムを更新しようとすると、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-openjdkJRE 関連パッケージが削除されます。 JREとJRE-headlessの両方がある場合は互いに競合するため、1つを選択して手動でインストールする必要があります。 JDK/JRE/JRE-headless pacman の 1 つだけがある場合、依存関係は別途の処置なしに正常に解決する必要があります。現在、これはすぐにリリースされるJDK 21リリースでのみ機能します。

私の場合、昨日この問題を解決しました。

sudo pacman -R jre-openjdk
sudo pacman -Suy

ただし、参考資料に記載されているように、詳細はインストールする項目と必要な項目によって異なります。

答え2

最初のアップデートでは、次の説明に従って削除をjdk-openjdk提案します。jre-openjdkJDK/JRE 21 パッケージに入る変更には手動介入が必要な場合があります。

JDKを手動でインストールすると、JRE関連パッケージが削除されます。

その後、フルアップグレードを実行します。

sudo pacman -S jdk-openjdk
sudo pacman -Syu

関連情報