배경/xy 문제: 필요한 도구가 몇 가지 있지만 libcurl-devel
32비트 버전이 있으면 컴파일할 수 없습니다 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
그러나 완전성을 기하기 위해 설치 스크립트는 libcurl
및 libcurl-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-devel
i686 패키지가 설치됩니다.
# 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-devel
dnf도 설치할 수 있습니다 libcurl.i686
(스크린샷 1). 그러나 dnf
이는 이미 설치된 것과의 충돌로 인한 것이라고 설명되어 libcurl-minimal.i686
있으며 추가를 위한 제안이 제공됩니다 --best --allowerasing
(스크린샷 2), 설치하게 됩니다 libcurl.i686
.
보라, 실제로 이미지에 설치되지 않은 --best --allowerasing
경우에도 도커 컨테이너에서도 작업을 추가할 수 있습니다. 그래서 제 생각에는 실제로는 전혀 문제가 없는데도 dnf가 문제가 있다고 생각하게 만드는 libcurl-minimal
잔재가 어딘가에 여전히 남아 있는 것 같습니다 .libcurl-minimal.i686