背景/ 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の依存関係の解決にどのような影響を与えますか?特定の順序の効果を予測することは可能ですか?
いくつかの説明。
問題の原因の1つは、libcurl
最新のFedoraイメージの現在のバージョンが.so7.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 Live CD イメージ、例えばQEMUで実行すると、dnf install libcurl libcurl-devel
dnfもインストールできますlibcurl.i686
(スクリーンショット1)。しかし、dnf
これはすでにインストールされているものとの競合によるものであると説明されており、追加のlibcurl-minimal.i686
提案が提供されています--best --allowerasing
(スクリーンショット2)、インストールしますlibcurl.i686
。
見て、実際にイメージにインストールされていない--best --allowerasing
場合でも、Dockerコンテナからタスクを追加できます。だから私の考えには実際には全く問題がないのにdnfが問題があると思わせる残材がlibcurl-minimal
どこかにまだ残っているようです。libcurl-minimal.i686