패키지 순서는 yum/dnf의 종속성 해결에 어떤 영향을 줍니까?

패키지 순서는 yum/dnf의 종속성 해결에 어떤 영향을 줍니까?

배경/xy 문제: 필요한 도구가 몇 가지 있지만 libcurl-devel32비트 버전이 있으면 컴파일할 수 없습니다 libcurl. 도구를 고치는 것은 또 다른 날입니다. 오늘은 32비트 버전의 설치를 방지하고 싶습니다 libcurl. 더 정확하게 말하면 향후 유사한 문제를 예측하고 예방하는 방법을 배우고 싶습니다.

64비트 버전은 libcurl새로운 Fedora 38 Docker 컨테이너에 사전 설치되어 제공됩니다.

# cat /etc/redhat-release 
Fedora release 38 (Thirty Eight)
# dnf list --installed | grep libcurl
libcurl.x86_64                           8.0.1-3.fc38               @koji-override-0

그러나 완전성을 기하기 위해 설치 스크립트는 libcurllibcurl-devel. 하지만 이렇게 하면 32비트 버전이 설치됩니다 libcurl.

# dnf install libcurl libcurl-devel | grep curl
Package libcurl-8.0.1-3.fc38.x86_64 is already installed.
 libcurl-devel            i686         8.0.1-4.fc38         updates       987 k
 libcurl                  i686         8.0.1-4.fc38         updates       335 k

패키지 순서를 바꾸지 않는 한:

# dnf install libcurl-devel libcurl | grep curl
 libcurl-devel            x86_64       8.0.1-4.fc38         updates       987 k
 libcurl                  x86_64       8.0.1-4.fc38         updates       313 k

나는 이 동작이 이상하다고 생각합니다. 패키지의 순서는 중요하지 않을 것이라고 예상했습니다.

패키지 순서는 dnf/yum의 종속성 해결에 어떤 영향을 미치며, 특정 순서의 효과를 예측하는 것이 가능합니까?


몇 가지 설명.

문제의 원인 중 하나는 libcurl최신 Fedora 이미지의 현재 버전이 .so 7.85.0-10.fc37에 상대적이기 때문이라고 생각합니다 7.85.0-11.fc37. 따라서 이 버전의 fedora 37을 사용해야 할 수도 있습니다.https://hub.docker.com/layers/library/fedora/37/images/sha256-210908a224d08874dc70ca2013439c4e2849047c5bb8711802f86ee48b1cf3f5

더 완전한 예:

> docker run -ti fedora:37@sha256:210908a224d08874dc70ca2013439c4e2849047c5bb8711802f86ee48b1cf3f5

# dnf list --installed | grep curl
curl.x86_64                              7.85.0-10.fc37             @koji-override-0
libcurl.x86_64                           7.85.0-10.fc37             @koji-override-0

# dnf list --installed | grep i686

따라서 처음에는 i686 패키지가 전혀 없었습니다.

순서대로 설치하면 libcurl-devel libcurl문제가 없습니다( 사용 --assumeno).

# dnf install --assumeno libcurl-devel libcurl
Last metadata expiration check: 0:01:46 ago on Fri Oct  6 12:43:11 2023.
Package libcurl-7.85.0-10.fc37.x86_64 is already installed.
Dependencies resolved.
===============================================================================================
 Package                     Architecture    Version                    Repository        Size
===============================================================================================
Installing:
 libcurl-devel               x86_64          7.85.0-11.fc37             updates          977 k
Upgrading:
 libcurl                     x86_64          7.85.0-11.fc37             updates          303 k
Installing dependencies:
 libpkgconf                  x86_64          1.8.0-3.fc37               fedora            36 k
 pkgconf                     x86_64          1.8.0-3.fc37               fedora            41 k
 pkgconf-m4                  noarch          1.8.0-3.fc37               fedora            14 k
 pkgconf-pkg-config          x86_64          1.8.0-3.fc37               fedora            10 k

Transaction Summary
===============================================================================================
Install  5 Packages
Upgrade  1 Package

Total download size: 1.3 M
Operation aborted.

다른 순서로 설치하면 libcurl libcurl-develi686 패키지가 설치됩니다.

# dnf install --assumeno libcurl libcurl-devel
Last metadata expiration check: 0:01:23 ago on Fri Oct  6 12:43:11 2023.
Package libcurl-7.85.0-10.fc37.x86_64 is already installed.
Dependencies resolved.
===============================================================================================
 Package                        Architecture   Version                   Repository       Size
===============================================================================================
Installing:
 libcurl-devel                  i686           7.85.0-11.fc37            updates         976 k
Upgrading:
 glibc                          x86_64         2.36-14.fc37              updates         2.2 M
 glibc-common                   x86_64         2.36-14.fc37              updates         359 k
 glibc-minimal-langpack         x86_64         2.36-14.fc37              updates          79 k
Installing dependencies:
 cyrus-sasl-lib                 i686           2.1.28-8.fc37             fedora          861 k
 gdbm-libs                      i686           1:1.23-2.fc37             fedora           60 k
 glibc                          i686           2.36-14.fc37              updates         2.0 M
 glibc-gconv-extra              x86_64         2.36-14.fc37              updates         1.7 M
 keyutils-libs                  i686           1.6.1-5.fc37              fedora           32 k
 krb5-libs                      i686           1.19.2-13.fc37            updates         770 k
 libbrotli                      i686           1.0.9-9.fc37              fedora          317 k
 libcom_err                     i686           1.46.5-3.fc37             fedora           26 k
 libcurl                        i686           7.85.0-11.fc37            updates         329 k
 libevent                       i686           2.1.12-7.fc37             fedora          279 k
 libgcc                         i686           12.3.1-1.fc37             updates         123 k
 libidn2                        i686           2.3.4-1.fc37              updates         161 k
 libnghttp2                     i686           1.51.0-1.fc37             updates          80 k
 libpkgconf                     x86_64         1.8.0-3.fc37              fedora           36 k
 libpsl                         i686           0.21.1-6.fc37             fedora           64 k
 libselinux                     i686           3.5-1.fc37                updates          91 k
 libsepol                       i686           3.5-1.fc37                updates         336 k
 libssh                         i686           0.10.5-1.fc37             updates         224 k
 libunistring                   i686           1.0-2.fc37                fedora          551 k
 libverto                       i686           0.3.2-4.fc37              fedora           21 k
 libxcrypt                      i686           4.4.36-1.fc37             updates         123 k
 openldap                       i686           2.6.4-1.fc37              updates         273 k
 openssl-libs                   i686           1:3.0.9-1.fc37            updates         2.1 M
 openssl-pkcs11                 x86_64         0.4.12-2.fc37             fedora           74 k
 pcre2                          i686           10.40-1.fc37.1            fedora          234 k
 pkgconf                        x86_64         1.8.0-3.fc37              fedora           41 k
 pkgconf-m4                     noarch         1.8.0-3.fc37              fedora           14 k
 pkgconf-pkg-config             x86_64         1.8.0-3.fc37              fedora           10 k
 zlib                           i686           1.2.12-5.fc37             fedora           92 k
Installing weak dependencies:
 glibc-gconv-extra              i686           2.36-14.fc37              updates         1.7 M
 openssl-pkcs11                 i686           0.4.12-2.fc37             fedora           76 k

Transaction Summary
===============================================================================================
Install  32 Packages
Upgrade   3 Packages

Total download size: 16 M
Operation aborted.

새로운 발견: 문제는 와 관련이 있을 수 있습니다 libcurl-minimal.

달리다Fedora 라이브 CD 이미지, 예를 들어 QEMU에서 실행하면 dnf install libcurl libcurl-develdnf도 설치할 수 있습니다 libcurl.i686(스크린샷 1). 그러나 dnf이는 이미 설치된 것과의 충돌로 인한 것이라고 설명되어 libcurl-minimal.i686있으며 추가를 위한 제안이 제공됩니다 --best --allowerasing(스크린샷 2), 설치하게 됩니다 libcurl.i686.

보라, 실제로 이미지에 설치되지 않은 --best --allowerasing경우에도 도커 컨테이너에서도 작업을 추가할 수 있습니다. 그래서 제 생각에는 실제로는 전혀 문제가 없는데도 dnf가 문제가 있다고 생각하게 만드는 libcurl-minimal잔재가 어딘가에 여전히 남아 있는 것 같습니다 .libcurl-minimal.i686

관련 정보