我最近发现了软件集合,并了解它们如何通过为每个集合引入命名空间来安装多个版本的软件。在企业 Linux 上,这很好,因为我将能够保持系统的常规稳定性,同时现在能够在更新某些版本的软件时轻松更新(不仅是安全更新,还有功能!)
我希望我系统的主网络服务器是 httpd 2.4。centos-sclo-rh软件合集目前可用的版本是2.4.12,而可用的版本base只有2.4.6。所以我从那个 SCL 安装了 httpd 并启用了它:
> scl enable httpd24-httpd bash
Run Code Online (Sandbox Code Playgroud)
然后使用 systemctl 启用并启动服务
> systemctl enable httpd24-httpd
> systemctl start http24-httpd
Run Code Online (Sandbox Code Playgroud)
所以我希望我的系统应该知道我现在安装了一个网络服务器。但是,当我尝试从 安装 phpmyadmin 时epel,它仍然希望安装标准httpd包base作为依赖项。
查看 rpms 的一些机制,我刚刚了解到包可以在他们的规范文件中包含一个 Provides 行,列出虚拟包,例如webserverhttpd 的 src rpm 确实有一个 Provides: webserver 行。我猜httpd24-httpd我从 SCL 获得的包没有那个描述符。
如何让我的系统识别httpd从 SCL 提供的已安装和启用的webserver虚拟包,以便它不想安装httpd包base来实现webserver虚拟依赖?