パッケージの順序は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の依存関係の解決にどのような影響を与えますか?特定の順序の効果を予測することは可能ですか?


いくつかの説明。

問題の原因の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-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 Live CD イメージ、例えばQEMUで実行すると、dnf install libcurl libcurl-develdnfもインストールできますlibcurl.i686スクリーンショット1)。しかし、dnfこれはすでにインストールされているものとの競合によるものであると説明されており、追加のlibcurl-minimal.i686提案が提供されています--best --allowerasingスクリーンショット2)、インストールしますlibcurl.i686

見て、実際にイメージにインストールされていない--best --allowerasing場合でも、Dockerコンテナからタスクを追加できます。だから私の考えには実際には全く問題がないのにdnfが問題があると思わせる残材がlibcurl-minimalどこかにまだ残っているようです。libcurl-minimal.i686

ベストアンサー1

おすすめ記事