AlmaLinuxでDNFとのパッケージ競合を解決する方法

AlmaLinuxでDNFとのパッケージ競合を解決する方法

私はAlmaLinux v9.3.0とcPanel 120.0.1がインストールされているホストされた仮想サーバーを使用しています。

EasyApacheもインストールされます。

EPEL Repoに「mapserver」というパッケージをインストールしようとしています。

コマンドの実行 dnf install -y mapserver

次のエラーが発生します。 -

Last metadata expiration check: 0:04:58 ago on Thu 11 Apr 2024 05:04:00 PM BST.
Error:
 Problem: problem with installed package ea-apache24-2.4.59-1.1.1.cpanel.x86_64
  - package ea-apache24-2.4.59-1.1.1.cpanel.x86_64 from @System conflicts with httpd-mmn provided by httpd-core-2.4.57-5.el9.x86_64 from appstream
  - package ea-apache24-2.4.58-1.1.5.cpanel.x86_64 from EA4-c9 conflicts with httpd-mmn provided by httpd-core-2.4.57-5.el9.x86_64 from appstream
  - package ea-apache24-2.4.58-1.1.6.cpanel.x86_64 from EA4-c9 conflicts with httpd-mmn provided by httpd-core-2.4.57-5.el9.x86_64 from appstream
  - package ea-apache24-2.4.58-3.3.5.cpanel.x86_64 from EA4-c9 conflicts with httpd-mmn provided by httpd-core-2.4.57-5.el9.x86_64 from appstream
  - package ea-apache24-2.4.58-3.3.6.cpanel.x86_64 from EA4-c9 conflicts with httpd-mmn provided by httpd-core-2.4.57-5.el9.x86_64 from appstream
  - package ea-apache24-2.4.59-1.1.1.cpanel.x86_64 from EA4-c9 conflicts with httpd-mmn provided by httpd-core-2.4.57-5.el9.x86_64 from appstream
  - package httpd-2.4.57-5.el9.x86_64 from appstream requires httpd-core = 2.4.57-5.el9, but none of the providers can be installed
  - package mapserver-8.0.0-3.el9.x86_64 from epel requires httpd, but none of the providers can be installed
  - conflicting requests
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

システムは、次のリポジトリを有効にするように構成されています。

dnf repolist enabled

repo id                                                                                              repo name
EA4-c9                                                                                               EA4 ( EasyApache 4 - c9 )
appstream                                                                                            AlmaLinux 9 - AppStream
baseos                                                                                               AlmaLinux 9 - BaseOS
cpanel-addons-production-feed                                                                        cPanel Addons Production Feed
cpanel-plugins                                                                                       cPanel Plugins project
crb                                                                                                  AlmaLinux 9 - CRB
epel                                                                                                 Extra Packages for Enterprise Linux 9 - x86_64
epel-cisco-openh264                                                                                  Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64
extras                                                                                               AlmaLinux 9 - Extras
fortimonitor.repo                                                                                    FortiMonitor Repository
imunify360                                                                                           EL-9 - Imunify360
imunify360-rollout-1                                                                                 Imunify360 - Gradual Rollout Slot 1
imunify360-rollout-2                                                                                 Imunify360 - Gradual Rollout Slot 2
imunify360-rollout-3                                                                                 Imunify360 - Gradual Rollout Slot 3
imunify360-rollout-4                                                                                 Imunify360 - Gradual Rollout Slot 4
imunify360-rollout-5                                                                                 Imunify360 - Gradual Rollout Slot 5
imunify360-rollout-6                                                                                 Imunify360 - Gradual Rollout Slot
imunify360-rollout-7                                                                                 Imunify360 - Gradual Rollout Slot 7
imunify360-rollout-8                                                                                 Imunify360 - Gradual Rollout Slot 8
kernelcare                                                                                           kernelcare
mysql-connectors-community                                                                           MySQL Connectors Community
mysql-tools-community                                                                                MySQL Tools Community
mysql80-community                                                                                    MySQL 8.0 Community Server
wp-toolkit-cpanel                                                                                    WP Toolkit for cPanel
wp-toolkit-thirdparties                                                                              WP Toolkit third parties

Map Server パッケージには次の要件があります。

dnf repoquery --requires mapserver

dejavu-sans-fonts
httpd
libc.so.6(GLIBC_2.34)(64bit)
libfcgi.so.0()(64bit)
libmapserver.so.2()(64bit)
rtld(GNU_HASH)

EasyApacheのインストールを削除/アップグレード/などしたくありません。

「--nobest」提案オプションの意味が何であるかを理解しようとしています。

標準ApacheとEasy Apacheの間の競合を無視しますか?

Mapserverには「httpd」の直接コンパイル要件はありませんが、これはパッケージで利用可能なオプションの「FastCGI」ライブラリから来ることができます。

MapserverバイナリはFastCGI以外のものを介して使用できるスタンドアロンバイナリなので、オプションの「FastCGI」機能は使用されていないようです。

DNFを使用してインストールし、「httpd」の依存関係を無視する方法はありますか?

「FastCGI」サポートを除外するために、ソースからマップサーバーをコンパイルしたくありません。

答え1

欠落している依存関係を提供するためにダミーパッケージを作成できます。私はこれを比較的簡単にするツールを(数年前)書きました。https://github.com/larsks/fakeprovide

スクリプトをインストールした後、次を実行できます。

fakeprovide httpd

これにより、次の内容が生成されます。

fakeprovide-httpd-20240411151453-1.fc39.noarch.rpm

このパッケージは指定された依存関係を提供します。

$ rpm -qp fakeprovide-httpd-20240411151453-1.fc39.noarch.rpm --provides
fakeprovide-httpd = 20240411151453-1.fc39
httpd

パッケージをインストールすると、依存関係をインストールできますhttpd

答え2

問題は、「Easy Apache」パッケージと無効な「Mapserver」パッケージの組み合わせが原因で発生します。

パッケージで構築されたMapserverには「httpd」は必要ありません。 「httpd」は、デフォルトではなく実験的な「Apacheモジュール」を有効にする場合にのみ必要です。

私が望む解決策はRPMSPECを使用することです。

https://src.fedoraproject.org/rpms/mapserver/blob/epel9/f/mapserver.spec

次の行を削除してください: -

Requires:       httpd
BuildRequires:  httpd-devel

パッケージの新しいバージョンをrpmbuildします。

私もこのバグを上げました。https://bugzilla.redhat.com/show_bug.cgi?id=2274733問題が解決することを願っています。

関連情報