Bug 1708589 - php:7.2 module dep on nginx:1.14 prevents installing nginx:1.16
Summary: php:7.2 module dep on nginx:1.14 prevents installing nginx:1.16
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: php
Version: 8.0
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: 8.0
Assignee: Remi Collet
QA Contact: Jakub Heger
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-05-10 09:31 UTC by Joe Orton
Modified: 2021-12-18 03:31 UTC (History)
15 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-11-05 20:56:36 UTC
Type: Bug
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2019:3374 0 None None None 2019-11-05 20:56:37 UTC

Description Joe Orton 2019-05-10 09:31:20 UTC
Description of problem:
The explicit module dependency from php:7.2 to nginx:1.14 prevents use of php with nginx stream versions other :1.14.

Version-Release number of selected component (if applicable):
php:7.2:820181215112050:76554e01-0

How reproducible:
always

Steps to Reproduce:
1. yum module install nginx:1.16 php:7.2

Actual results:
 Problem: module php:7.2:820181215112050:76554e01-0.x86_64 requires module(nginx:1.14), but none of the providers can be installed
  - module nginx:1.16:8010020190507152002:cdc1202b-0.x86_64 conflicts with module(nginx:1.14) provided by nginx:1.14:820181214004940:9edba152-0.x86_64
  - module nginx:1.14:820181214004940:9edba152-0.x86_64 conflicts with module(nginx:1.16) provided by nginx:1.16:8010020190507152002:cdc1202b-0.x86_64
  - conflicting requests

Expected results:
Should install.

Additional info:
If all that is required here is that nginx-filesystem is installed from ANY version of nginx, we could drop the module-level dependency entirely.  Since nginx:1.14 is configured as a default stream it will be used to satisfy the dep by default if no other stream is enabled (i.e. equivalent to current behaviour), without excluding the use of other streams.

Comment 2 Petr Pisar 2019-05-10 10:13:44 UTC
(In reply to Joe Orton from comment #0)
> If all that is required here is that nginx-filesystem is installed from ANY
> version of nginx, we could drop the module-level dependency entirely.  Since
> nginx:1.14 is configured as a default stream it will be used to satisfy the
> dep by default if no other stream is enabled

If a user disables all nginx streams, there won't be any nginx-filesystem package. I think it's better to declare the modular dependency as the relation is indeed there than to rely to some unspoken assumptions or contemporary DNF behavior that can change any time.

Comment 3 Joe Orton 2019-05-10 10:40:22 UTC
(In reply to Petr Pisar from comment #2)
> If a user disables all nginx streams, there won't be any nginx-filesystem
> package. I think it's better to declare the modular dependency as the
> relation is indeed there than to rely to some unspoken assumptions or
> contemporary DNF behavior that can change any time.

Fair point.

Comment 13 errata-xmlrpc 2019-11-05 20:56:36 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2019:3374

Comment 14 adam winberg 2021-01-22 14:38:07 UTC
I just hit this trying to enable the nginx:1.18 stream. We use pulp to sync redhat repos locally, and the faulty php module version (820181215112050) is still present in the redhat repos and thus are downloaded by pulp. Even though there are newer versions of the php module where the dependency has been fixed, dnf still complains about the old php module:

Problem: module php:7.2:820181215112050:76554e01-0.x86_64 requires module(nginx:1.14), but none of the providers can be installed

Can the 'bad' php module version be removed from the rhel appstream repo?

Comment 20 adam winberg 2021-06-15 18:01:27 UTC
Got this again today, can the php module with version 820181215112050 be removed from appstream repo?

Comment 21 Matt 2021-08-25 22:11:25 UTC
Following up to what Adam has been saying...it seems to be impossible to install the nginx:1.16 OR nginx:1.18 module, without getting a bunch of warnings. These warnings then show up TWICE for EVERY dnf operation....

PHP 7.2 is EOL, even according to RH (https://access.redhat.com/support/policy/updates/rhel8-app-streams-life-cycle). Can it just be removed please?

[root@host ~]# dnf module install nginx:1.16
Updating Subscription Management repositories.
...
Problems in request:
Modular dependency problems with Defaults:

 Problem: module php:7.2:820181215112050:76554e01-0.x86_64 requires module(nginx:1.14), but none of the providers can be installed
  - module nginx:1.16:8030020201124104955:229f0a1c-0.x86_64 conflicts with module(nginx:1.14) provided by nginx:1.14:820181214004940:9edba152-0.x86_64
  - module nginx:1.14:820181214004940:9edba152-0.x86_64 conflicts with module(nginx:1.16) provided by nginx:1.16:8030020201124104955:229f0a1c-0.x86_64
  - module nginx:1.16:8030020201124104955:229f0a1c-0.x86_64 conflicts with module(nginx:1.14) provided by nginx:1.14:8000020190830002848:f8e95b4e-0.x86_64
  - module nginx:1.14:8000020190830002848:f8e95b4e-0.x86_64 conflicts with module(nginx:1.16) provided by nginx:1.16:8030020201124104955:229f0a1c-0.x86_64
  - conflicting requests
Dependencies resolved.
============================================================================================================================================================================================================================================================
 Package                                                      Architecture                            Version                                                                       Repository                                                         Size
============================================================================================================================================================================================================================================================
Installing group/module packages:
 nginx                                                        x86_64                                  1:1.16.1-2.module+el8.4.0+11155+68135136.1                                    rhel-8-for-x86_64-appstream-rpms                                  580 k
 nginx-all-modules                                            noarch                                  1:1.16.1-2.module+el8.4.0+11155+68135136.1                                    rhel-8-for-x86_64-appstream-rpms                                   24 k
 nginx-filesystem                                             noarch                                  1:1.16.1-2.module+el8.4.0+11155+68135136.1                                    rhel-8-for-x86_64-appstream-rpms                                   25 k
 nginx-mod-http-image-filter                                  x86_64                                  1:1.16.1-2.module+el8.4.0+11155+68135136.1                                    rhel-8-for-x86_64-appstream-rpms                                   36 k
 nginx-mod-http-perl                                          x86_64                                  1:1.16.1-2.module+el8.4.0+11155+68135136.1                                    rhel-8-for-x86_64-appstream-rpms                                   46 k
 nginx-mod-http-xslt-filter                                   x86_64                                  1:1.16.1-2.module+el8.4.0+11155+68135136.1                                    rhel-8-for-x86_64-appstream-rpms                                   34 k
 nginx-mod-mail                                               x86_64                                  1:1.16.1-2.module+el8.4.0+11155+68135136.1                                    rhel-8-for-x86_64-appstream-rpms                                   65 k
 nginx-mod-stream                                             x86_64                                  1:1.16.1-2.module+el8.4.0+11155+68135136.1                                    rhel-8-for-x86_64-appstream-rpms                                   91 k
Installing module profiles:
 nginx/common                                                                                                                                                                                                                                              
Enabling module streams:
 nginx                                                                                                1.16                                                                                                                                                 

Transaction Summary
============================================================================================================================================================================================================================================================
Install  8 Packages

Total download size: 901 k
Installed size: 2.0 M
Is this ok [y/N]: y
Downloading Packages:
...
Total                                                                                                                                                                                                                       5.0 MB/s | 901 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
...
Installed products updated.
Modular dependency problem:

 Problem: module php:7.2:820181215112050:76554e01-0.x86_64 requires module(nginx:1.14), but none of the providers can be installed
  - module nginx:1.16:8030020201124104955:229f0a1c-0.x86_64 conflicts with module(nginx:1.14) provided by nginx:1.14:820181214004940:9edba152-0.x86_64
  - module nginx:1.14:820181214004940:9edba152-0.x86_64 conflicts with module(nginx:1.16) provided by nginx:1.16:8030020201124104955:229f0a1c-0.x86_64
  - module nginx:1.16:8030020201124104955:229f0a1c-0.x86_64 conflicts with module(nginx:1.14) provided by nginx:1.14:8000020190830002848:f8e95b4e-0.x86_64
  - module nginx:1.14:8000020190830002848:f8e95b4e-0.x86_64 conflicts with module(nginx:1.16) provided by nginx:1.16:8030020201124104955:229f0a1c-0.x86_64
  - conflicting requests

Installed:
  nginx-1:1.16.1-2.module+el8.4.0+11155+68135136.1.x86_64                               nginx-all-modules-1:1.16.1-2.module+el8.4.0+11155+68135136.1.noarch           nginx-filesystem-1:1.16.1-2.module+el8.4.0+11155+68135136.1.noarch                  
  nginx-mod-http-image-filter-1:1.16.1-2.module+el8.4.0+11155+68135136.1.x86_64         nginx-mod-http-perl-1:1.16.1-2.module+el8.4.0+11155+68135136.1.x86_64         nginx-mod-http-xslt-filter-1:1.16.1-2.module+el8.4.0+11155+68135136.1.x86_64        
  nginx-mod-mail-1:1.16.1-2.module+el8.4.0+11155+68135136.1.x86_64                      nginx-mod-stream-1:1.16.1-2.module+el8.4.0+11155+68135136.1.x86_64           

Complete!
[root@host ~]# dnf module install nodejs:14
Updating Subscription Management repositories.
...
Modular dependency problem:

 Problem: module php:7.2:820181215112050:76554e01-0.x86_64 requires module(nginx:1.14), but none of the providers can be installed
  - module nginx:1.16:8030020201124104955:229f0a1c-0.x86_64 conflicts with module(nginx:1.14) provided by nginx:1.14:820181214004940:9edba152-0.x86_64
  - module nginx:1.14:820181214004940:9edba152-0.x86_64 conflicts with module(nginx:1.16) provided by nginx:1.16:8030020201124104955:229f0a1c-0.x86_64
  - module nginx:1.16:8030020201124104955:229f0a1c-0.x86_64 conflicts with module(nginx:1.14) provided by nginx:1.14:8000020190830002848:f8e95b4e-0.x86_64
  - module nginx:1.14:8000020190830002848:f8e95b4e-0.x86_64 conflicts with module(nginx:1.16) provided by nginx:1.16:8030020201124104955:229f0a1c-0.x86_64
  - conflicting requests
Problems in request:
Modular dependency problems with Defaults:

 Problem: module php:7.2:820181215112050:76554e01-0.x86_64 requires module(nginx:1.14), but none of the providers can be installed
  - module nginx:1.16:8030020201124104955:229f0a1c-0.x86_64 conflicts with module(nginx:1.14) provided by nginx:1.14:820181214004940:9edba152-0.x86_64
  - module nginx:1.14:820181214004940:9edba152-0.x86_64 conflicts with module(nginx:1.16) provided by nginx:1.16:8030020201124104955:229f0a1c-0.x86_64
  - module nginx:1.16:8030020201124104955:229f0a1c-0.x86_64 conflicts with module(nginx:1.14) provided by nginx:1.14:8000020190830002848:f8e95b4e-0.x86_64
  - module nginx:1.14:8000020190830002848:f8e95b4e-0.x86_64 conflicts with module(nginx:1.16) provided by nginx:1.16:8030020201124104955:229f0a1c-0.x86_64
  - conflicting requests
Dependencies resolved.
Nothing to do.
Complete!
[root@host ~]#

Comment 22 Jens Viebig 2021-08-30 10:37:35 UTC
Had the same issue but found a workaround

We use nginx 1.18 but do NOT use php, so this might not help if php 7.2 is needed. We just switched the module stream of php from 7.2 to 7.4 without installing any php packages

dnf module reset php
dnf module enable php:7.4

Now the warning is gone.

As requested here, removing the bad module would be highly appreciated :-)

Comment 23 Petr Pisar 2021-08-31 11:53:39 UTC
Red Hat retains all historical builds in the repositories. Thus DNF has access to the affected php:7.2:820181215112050:76554e01 module:

$ dnf module info php:7.2
[...]
Name             : php
Stream           : 7.2 [d][a]
Version          : 820181215112050
Context          : 76554e01
Architecture     : x86_64
Profiles         : common [d], devel, minimal
Default profiles : common
Repo             : pulp-appstream
Summary          : PHP scripting language
Description      : php 7.2 module
Requires         : httpd:[2.4]
                 : nginx:[1.14]
                 : platform:[el8]
Artifacts        : apcu-panel-0:5.1.12-1.module+el8+2561+1aca3413.noarch
[...]

And I confirm I can reproduce the warning:

# dnf module install nginx:1.16
Last metadata expiration check: 0:11:12 ago on Tue 31 Aug 2021 01:04:24 PM CEST.
Problems in request:
Modular dependency problems with Defaults:

 Problem: module php:7.2:820181215112050:76554e01.x86_64 requires module(nginx:1.14), but none of the providers can be installed
  - module nginx:1.14:820181214004940:9edba152.x86_64 conflicts with module(nginx:1.16) provided by nginx:1.16:8010020190829151810:cdc1202b.x86_64
  - module nginx:1.16:8010020190829151810:cdc1202b.x86_64 conflicts with module(nginx:1.14) provided by nginx:1.14:820181214004940:9edba152.x86_64
  - module nginx:1.14:8000020190830002848:f8e95b4e.x86_64 conflicts with module(nginx:1.16) provided by nginx:1.16:8010020190829151810:cdc1202b.x86_64
  - module nginx:1.16:8010020190829151810:cdc1202b.x86_64 conflicts with module(nginx:1.14) provided by nginx:1.14:8000020190830002848:f8e95b4e.x86_64
  - conflicting requests
Dependencies resolved.
===========================================================================================================================================
 Package                             Architecture   Version                                             Repository                    Size
===========================================================================================================================================
Installing group/module packages:
 nginx                               x86_64         1:1.16.1-2.module+el8.4.0+11155+68135136.1          pulp-appstream               580 k
 nginx-all-modules                   noarch         1:1.16.1-2.module+el8.4.0+11155+68135136.1          pulp-appstream                24 k
 nginx-filesystem                    noarch         1:1.16.1-2.module+el8.4.0+11155+68135136.1          pulp-appstream                25 k
 nginx-mod-http-image-filter         x86_64         1:1.16.1-2.module+el8.4.0+11155+68135136.1          pulp-appstream                36 k
 nginx-mod-http-perl                 x86_64         1:1.16.1-2.module+el8.4.0+11155+68135136.1          pulp-appstream                46 k
 nginx-mod-http-xslt-filter          x86_64         1:1.16.1-2.module+el8.4.0+11155+68135136.1          pulp-appstream                34 k
 nginx-mod-mail                      x86_64         1:1.16.1-2.module+el8.4.0+11155+68135136.1          pulp-appstream                65 k
 nginx-mod-stream                    x86_64         1:1.16.1-2.module+el8.4.0+11155+68135136.1          pulp-appstream                91 k
Installing dependencies:
 gd                                  x86_64         2.2.5-7.el8                                         pulp-appstream               144 k
 libwebp                             x86_64         1.0.0-5.el8                                         rhel-8.6.0-appstream         273 k
Installing module profiles:
 nginx/common
Enabling module streams:
 nginx                                              1.16

Transaction Summary
===========================================================================================================================================
Install  10 Packages

Total download size: 1.3 M
Installed size: 3.2 M
Is this ok [y/N]: N
Operation aborted.

A shorter reproducer is "dnf module enable nginx:1.16".
It's important to note that this is a warning. Not an error.

As far as I know, DNF gathers all module versions of a given stream, php:7.2 in this case, and explores modular dependencies of all of them. Not only the latest one, php:7.2:8020020191108065827:2c7ca891.
I believe that a reason for this behavior is warn a user in case the latest version has unsatisfied dependencies. If there were no warning, the user could not notice his installed module was left in an out-dated version. I also believe that this behavior only exhibits for modules without static contexts.

I can see four possible fixes:

(1) Remove the old module version from the repositories. Red Hat does that only in serious cases (e.g. a license violation). Though the removal should not affect anybody.
(2) Change php default stream from end-of-life 7.2 to support 7.4. It does not make sense to offer unsupported software in a default installation.
(3) Make a new php:7.2 module version with a static context. That could remove the warning because I think that DNF considers only the latest version for static contexts.
(4) Change DNF to report the unsatisfied modular dependencies only for the latest available version even in case of nonstatic contexts.

I think DNF maintainers could explain when exactly this warning is emitted.

Comment 24 Petr Pisar 2021-09-02 13:38:35 UTC
I tried an approach #3: I turned the latest versions of php:7.2 and all nginx streams to a static context it did not help. I even changed php:7.2 context to much a context of the offending php:7.2:820181215112050:76554e01 build. No luck. Tested with dnf-4.7.0-3.el8.noarch and libdnf-0.63.0-2.el8.x86_64.

Comment 25 Jaroslav Mracek 2021-09-08 06:35:35 UTC
(In reply to Petr Pisar from comment #24)
> I tried an approach #3: I turned the latest versions of php:7.2 and all
> nginx streams to a static context it did not help. I even changed php:7.2
> context to much a context of the offending php:7.2:820181215112050:76554e01
> build. No luck. Tested with dnf-4.7.0-3.el8.noarch and
> libdnf-0.63.0-2.el8.x86_64.

Static_context is supported in RHEL9 not in RHEL8. The support was reverted in RHEL8 to keep the behaviour in RHEL8 unchanged.

Comment 26 Petr Pisar 2021-09-08 06:55:14 UTC
That's unfortunate. Does it mean that DNF won't do anything to improve this php:7.2 particular problem?

Comment 27 kkeane 2021-12-18 03:31:14 UTC
A workaround for the end user appears to be to actually disable the php module, instead of merely resetting it to "default".

dnf module disable php

This will disable all versions of the module stream. If needed, you can then enable the desired php module stream, such as:

dnf module enable php:7.4

Now you should be able to switch to a different module stream of nginx without incurring the warning.


Note You need to log in before you can comment on or make changes to this bug.