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

이런 사항은 꼭 확인해보세요아치 리눅스 뉴스. 이 경우 우리가 원하는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가 모두 있는 경우 서로 충돌하므로 하나를 선택하고 수동으로 설치해야 합니다. JDK/JRE/JRE-headless pacman 중 하나만 있는 경우 종속성은 별도의 조치 없이 정상적으로 해결되어야 합니다. 현재 이는 곧 출시될 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

관련 정보