Description of problem: The recently updated nodejs to 16.X requires -devel and -doc to be installed and can't be removed. Version-Release number of selected component (if applicable): How reproducible: yum remove nodejs-devel nodejs-docs Steps to Reproduce: 1. 2. 3. Actual results: # yum remove nodejs-devel nodejs-docs Loaded plugins: fastestmirror, priorities, product-id, search-disabled-repos, subscription-manager, versionlock Resolving Dependencies --> Running transaction check ---> Package nodejs-devel.x86_64 1:16.13.2-3.el7 will be erased --> Processing Dependency: nodejs-devel(x86-64) = 1:16.13.2-3.el7 for package: 2:v8-devel-9.4.146.24-1.16.13.2.3.el7.x86_64 ---> Package nodejs-docs.noarch 1:16.13.2-3.el7 will be erased --> Processing Dependency: nodejs-docs = 1:16.13.2-3.el7 for package: 1:npm-8.1.2-1.16.13.2.3.el7.x86_64 --> Running transaction check ---> Package npm.x86_64 1:8.1.2-1.16.13.2.3.el7 will be erased --> Processing Dependency: npm >= 1:8.1.2-1.16.13.2.3.el7 for package: 1:nodejs-16.13.2-3.el7.x86_64 --> Processing Dependency: npm >= 1:8.1.2-1.16.13.2.3.el7 for package: 1:nodejs-16.13.2-3.el7.x86_64 ---> Package v8-devel.x86_64 2:9.4.146.24-1.16.13.2.3.el7 will be erased --> Running transaction check ---> Package nodejs.x86_64 1:16.13.2-3.el7 will be erased --> Processing Dependency: nodejs(x86-64) = 1:16.13.2-3.el7 for package: 1:nodejs-full-i18n-16.13.2-3.el7.x86_64 --> Running transaction check ---> Package nodejs-full-i18n.x86_64 1:16.13.2-3.el7 will be erased --> Finished Dependency Resolution --> Finding unneeded leftover dependencies ---> Marking libuv-devel to be removed - no longer needed by nodejs-devel ---> Marking nodejs-packaging to be removed - no longer needed by nodejs-devel ---> Marking brotli-devel to be removed - no longer needed by nodejs-devel ---> Marking openssl11 to be removed - no longer needed by nodejs ---> Marking redhat-rpm-config to be removed - no longer needed by nodejs-packaging ---> Marking perl-srpm-macros to be removed - no longer needed by redhat-rpm-config ---> Marking python-srpm-macros to be removed - no longer needed by redhat-rpm-config ---> Marking dwz to be removed - no longer needed by redhat-rpm-config ---> Marking zip to be removed - no longer needed by redhat-rpm-config Found and removing 9 unneeded dependencies --> Running transaction check ---> Package brotli-devel.x86_64 0:1.0.7-5.el7 will be erased ---> Package dwz.x86_64 0:0.11-3.el7 will be erased ---> Package libuv-devel.x86_64 1:1.43.0-2.el7 will be erased ---> Package nodejs-packaging.noarch 0:25-1.el7 will be erased ---> Package openssl11.x86_64 1:1.1.1k-2.el7 will be erased ---> Package perl-srpm-macros.noarch 0:1-8.el7 will be erased ---> Package python-srpm-macros.noarch 0:3-34.el7 will be erased ---> Package redhat-rpm-config.noarch 0:9.1.0-88.el7 will be erased ---> Package zip.x86_64 0:3.0-11.el7 will be erased --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Removing: nodejs-devel x86_64 1:16.13.2-3.el7 @epel 808 k nodejs-docs noarch 1:16.13.2-3.el7 @epel 70 M Removing for dependencies: brotli-devel x86_64 1.0.7-5.el7 @epel 53 k dwz x86_64 0.11-3.el7 @rhel-7-hpc-node-rpms 220 k libuv-devel x86_64 1:1.43.0-2.el7 @epel 100 k nodejs x86_64 1:16.13.2-3.el7 @epel 835 k nodejs-full-i18n x86_64 1:16.13.2-3.el7 @epel 27 M nodejs-packaging noarch 25-1.el7 @epel 41 k npm x86_64 1:8.1.2-1.16.13.2.3.el7 @epel 7.9 M openssl11 x86_64 1:1.1.1k-2.el7 @epel 1.0 M perl-srpm-macros noarch 1-8.el7 @rhel-7-hpc-node-rpms 794 python-srpm-macros noarch 3-34.el7 @rhel-7-hpc-node-rpms 3.7 k redhat-rpm-config noarch 9.1.0-88.el7 @rhel-7-hpc-node-rpms 170 k v8-devel x86_64 2:9.4.146.24-1.16.13.2.3.el7 @epel 0.0 zip x86_64 3.0-11.el7 @rhel-7-hpc-node-rpms 796 k Transaction Summary ======================================================================================================================== Remove 2 Packages (+13 Dependent packages) Installed size: 109 M Is this ok [y/N]: Expected results: Additional info:
I installed nodejs in a centos:7 container and it *did* pull in nodejs-docs, but not nodejs-devel: =========================================================================================================== Package Arch Version Repository Size =========================================================================================================== Installing: nodejs x86_64 1:16.13.2-3.el7 epel 205 k Installing for dependencies: brotli x86_64 1.0.7-5.el7 epel 318 k libuv x86_64 1:1.43.0-2.el7 epel 143 k nodejs-docs noarch 1:16.13.2-3.el7 epel 8.7 M nodejs-full-i18n x86_64 1:16.13.2-3.el7 epel 7.6 M nodejs-libs x86_64 1:16.13.2-3.el7 epel 14 M npm x86_64 1:8.1.2-1.16.13.2.3.el7 epel 2.1 M openssl11 x86_64 1:1.1.1k-2.el7 epel 692 k openssl11-libs x86_64 1:1.1.1k-2.el7 epel 1.5 M Transaction Summary =========================================================================================================== Install 1 Package (+8 Dependent packages) Total download size: 35 M Installed size: 165 M The core of the problem is that RHEL 7 does not support weak dependencies in RPM (Recommends: vs. Requires:), so we have to choose between making it a strict dependency or not. I may drop the nodejs-docs dependency on npm; I suppose that isn't really necessary. Similarly, nodejs currently Requires: npm, but that shouldn't be the case either. I'll get these fixed up. It's tricky to strike a balance between minimization and providing functionality. It's much nicer with Recommends: available.
Not sure why mine is different but I can't remove nodejs-devel either: # yum remove nodejs-devel Loaded plugins: fastestmirror, priorities, product-id, search-disabled-repos, subscription-manager, versionlock Resolving Dependencies --> Running transaction check ---> Package nodejs-devel.x86_64 1:16.13.2-3.el7 will be erased --> Processing Dependency: nodejs-devel(x86-64) = 1:16.13.2-3.el7 for package: 2:v8-devel-9.4.146.24-1.16.13.2.3.el7.x86_64 --> Running transaction check ---> Package v8-devel.x86_64 2:9.4.146.24-1.16.13.2.3.el7 will be erased --> Finished Dependency Resolution --> Finding unneeded leftover dependencies ---> Marking libuv-devel to be removed - no longer needed by nodejs-devel ---> Marking nodejs to be removed - no longer needed by nodejs-devel ---> Marking nodejs-packaging to be removed - no longer needed by nodejs-devel ---> Marking brotli-devel to be removed - no longer needed by nodejs-devel ---> Marking openssl11 to be removed - no longer needed by nodejs ---> Marking nodejs-full-i18n to be removed - no longer needed by nodejs ---> Marking npm to be removed - no longer needed by nodejs ---> Marking redhat-rpm-config to be removed - no longer needed by nodejs-packaging ---> Marking nodejs-docs to be removed - no longer needed by npm ---> Marking perl-srpm-macros to be removed - no longer needed by redhat-rpm-config ---> Marking python-srpm-macros to be removed - no longer needed by redhat-rpm-config ---> Marking dwz to be removed - no longer needed by redhat-rpm-config ---> Marking zip to be removed - no longer needed by redhat-rpm-config Found and removing 13 unneeded dependencies --> Running transaction check ---> Package brotli-devel.x86_64 0:1.0.7-5.el7 will be erased ---> Package dwz.x86_64 0:0.11-3.el7 will be erased ---> Package libuv-devel.x86_64 1:1.43.0-2.el7 will be erased ---> Package nodejs.x86_64 1:16.13.2-3.el7 will be erased ---> Package nodejs-docs.noarch 1:16.13.2-3.el7 will be erased ---> Package nodejs-full-i18n.x86_64 1:16.13.2-3.el7 will be erased ---> Package nodejs-packaging.noarch 0:25-1.el7 will be erased ---> Package npm.x86_64 1:8.1.2-1.16.13.2.3.el7 will be erased ---> Package openssl11.x86_64 1:1.1.1k-2.el7 will be erased ---> Package perl-srpm-macros.noarch 0:1-8.el7 will be erased ---> Package python-srpm-macros.noarch 0:3-34.el7 will be erased ---> Package redhat-rpm-config.noarch 0:9.1.0-88.el7 will be erased ---> Package zip.x86_64 0:3.0-11.el7 will be erased --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Removing: nodejs-devel x86_64 1:16.13.2-3.el7 @epel 808 k Removing for dependencies: brotli-devel x86_64 1.0.7-5.el7 @epel 53 k dwz x86_64 0.11-3.el7 @rhel-7-hpc-node-rpms 220 k libuv-devel x86_64 1:1.43.0-2.el7 @epel 100 k nodejs x86_64 1:16.13.2-3.el7 @epel 835 k nodejs-docs noarch 1:16.13.2-3.el7 @epel 70 M nodejs-full-i18n x86_64 1:16.13.2-3.el7 @epel 27 M nodejs-packaging noarch 25-1.el7 @epel 41 k npm x86_64 1:8.1.2-1.16.13.2.3.el7 @epel 7.9 M openssl11 x86_64 1:1.1.1k-2.el7 @epel 1.0 M perl-srpm-macros noarch 1-8.el7 @rhel-7-hpc-node-rpms 794 python-srpm-macros noarch 3-34.el7 @rhel-7-hpc-node-rpms 3.7 k redhat-rpm-config noarch 9.1.0-88.el7 @rhel-7-hpc-node-rpms 170 k v8-devel x86_64 2:9.4.146.24-1.16.13.2.3.el7 @epel 0.0 zip x86_64 3.0-11.el7 @rhel-7-hpc-node-rpms 796 k Transaction Summary ======================================================================================================================== Remove 1 Package (+14 Dependent packages) Installed size: 109 M Is this ok [y/N]: nodejs-devel isn't critical, but nodejs-doc more so since it uses up 70MB for each deployment (container, disk image, etc). Thanks.
I think the issue with nodejs-dev is related to v8. My core issue was triggered by having v8 and v8-devel installed. When I upgraded, v8 was replaced by nodejs-libs which caused the cascade of issues: # yum update v8 ...... ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Installing: nodejs-libs x86_64 1:16.13.2-3.el7 epel 14 M replacing v8.x86_64 1:3.14.5.10-25.el7 Installing for dependencies: brotli x86_64 1.0.7-5.el7 epel 318 k brotli-devel x86_64 1.0.7-5.el7 epel 27 k dwz x86_64 0.11-3.el7 rhel-7-hpc-node-rpms 99 k libuv x86_64 1:1.43.0-2.el7 epel 143 k libuv-devel x86_64 1:1.43.0-2.el7 epel 25 k nodejs x86_64 1:16.13.2-3.el7 epel 205 k nodejs-devel x86_64 1:16.13.2-3.el7 epel 176 k nodejs-docs noarch 1:16.13.2-3.el7 epel 8.7 M nodejs-full-i18n x86_64 1:16.13.2-3.el7 epel 7.6 M nodejs-packaging noarch 25-1.el7 epel 20 k npm x86_64 1:8.1.2-1.16.13.2.3.el7 epel 2.1 M openssl11 x86_64 1:1.1.1k-2.el7 epel 692 k openssl11-libs x86_64 1:1.1.1k-2.el7 epel 1.5 M perl-srpm-macros noarch 1-8.el7 rhel-7-hpc-node-rpms 4.7 k python-srpm-macros noarch 3-34.el7 rhel-7-hpc-node-rpms 8.8 k redhat-rpm-config noarch 9.1.0-88.el7 rhel-7-hpc-node-rpms 81 k zip x86_64 3.0-11.el7 rhel-7-hpc-node-rpms 260 k Updating for dependencies: v8-devel x86_64 2:9.4.146.24-1.16.13.2.3.el7 epel 8.8 k Transaction Summary ======================================================================================================================== Install 1 Package (+17 Dependent packages) Upgrade ( 1 Dependent package) Total download size: 36 M Is this ok [y/d/N]: However, while nodejs-16.X obsoletes v8: # yum install v8 Loaded plugins: fastestmirror, priorities, product-id, search-disabled-repos, subscription-manager, versionlock Loading mirror speeds from cached hostfile * cm-rhel7-7.3: updates-us-east.brightcomputing.com * cm-rhel7-7.3-updates: updates-us-east.brightcomputing.com * epel: mirror.math.princeton.edu 171 packages excluded due to repository priority protections Package 1:v8-3.14.5.10-25.el7.x86_64 is obsoleted by 1:nodejs-libs-16.13.2-3.el7.x86_64 which is already installed Nothing to do v8-devel is NOT obsoleted by nodejs-devel-16.x: # yum install v8-devel Loaded plugins: fastestmirror, priorities, product-id, search-disabled-repos, subscription-manager, versionlock Loading mirror speeds from cached hostfile * cm-rhel7-7.3: updates-us-east.brightcomputing.com * cm-rhel7-7.3-updates: updates-us-east.brightcomputing.com * epel: mirror.math.princeton.edu 171 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package v8-devel.x86_64 2:9.4.146.24-1.16.13.2.3.el7 will be installed --> Processing Dependency: nodejs-devel(x86-64) = 1:16.13.2-3.el7 for package: 2:v8-devel-9.4.146.24-1.16.13.2.3.el7.x86_64 --> Running transaction check ---> Package nodejs-devel.x86_64 1:16.13.2-3.el7 will be installed --> Processing Dependency: libuv-devel(x86-64) for package: 1:nodejs-devel-16.13.2-3.el7.x86_64 --> Running transaction check ---> Package libuv-devel.x86_64 1:1.43.0-2.el7 will be installed --> Finished Dependency Resolution --> Finding unneeded leftover dependencies Found and removing 0 unneeded dependencies Dependencies Resolved ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Installing: v8-devel x86_64 2:9.4.146.24-1.16.13.2.3.el7 epel 8.8 k Installing for dependencies: libuv-devel x86_64 1:1.43.0-2.el7 epel 25 k nodejs-devel x86_64 1:16.13.2-3.el7 epel 176 k Transaction Summary ======================================================================================================================== Install 1 Package (+2 Dependent packages) Total download size: 210 k Installed size: 909 k Is this ok [y/d/N]: This is what caused the confusion in my images. nodejs-libs replaced v8 on yum update v8-devel update required nodejs-devel nodejs-devel required other nodejs components (like nodejs-docs) If nodejs-libs is not dependent on nodejs: # rpm -qa | grep nodejs # yum install nodejs-libs Loaded plugins: fastestmirror, priorities, product-id, search-disabled-repos, subscription-manager, versionlock Loading mirror speeds from cached hostfile * cm-rhel7-7.3: updates-us-east.brightcomputing.com * cm-rhel7-7.3-updates: updates-us-east.brightcomputing.com * epel: mirror.umd.edu 171 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package nodejs-libs.x86_64 1:16.13.2-3.el7 will be installed --> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_0)(64bit) for package: 1:nodejs-libs-16.13.2-3.el7.x86_64 --> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_0g)(64bit) for package: 1:nodejs-libs-16.13.2-3.el7.x86_64 --> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_1)(64bit) for package: 1:nodejs-libs-16.13.2-3.el7.x86_64 --> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_1b)(64bit) for package: 1:nodejs-libs-16.13.2-3.el7.x86_64 --> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_1e)(64bit) for package: 1:nodejs-libs-16.13.2-3.el7.x86_64 --> Processing Dependency: libssl.so.1.1(OPENSSL_1_1_0)(64bit) for package: 1:nodejs-libs-16.13.2-3.el7.x86_64 --> Processing Dependency: libssl.so.1.1(OPENSSL_1_1_1)(64bit) for package: 1:nodejs-libs-16.13.2-3.el7.x86_64 --> Processing Dependency: libbrotlidec.so.1()(64bit) for package: 1:nodejs-libs-16.13.2-3.el7.x86_64 --> Processing Dependency: libbrotlienc.so.1()(64bit) for package: 1:nodejs-libs-16.13.2-3.el7.x86_64 --> Processing Dependency: libcrypto.so.1.1()(64bit) for package: 1:nodejs-libs-16.13.2-3.el7.x86_64 --> Processing Dependency: libssl.so.1.1()(64bit) for package: 1:nodejs-libs-16.13.2-3.el7.x86_64 --> Processing Dependency: libuv.so.1()(64bit) for package: 1:nodejs-libs-16.13.2-3.el7.x86_64 --> Running transaction check ---> Package brotli.x86_64 0:1.0.7-5.el7 will be installed ---> Package libuv.x86_64 1:1.43.0-2.el7 will be installed ---> Package openssl11-libs.x86_64 1:1.1.1k-2.el7 will be installed --> Finished Dependency Resolution --> Finding unneeded leftover dependencies Found and removing 0 unneeded dependencies Dependencies Resolved ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Installing: nodejs-libs x86_64 1:16.13.2-3.el7 epel 14 M Installing for dependencies: brotli x86_64 1.0.7-5.el7 epel 318 k libuv x86_64 1:1.43.0-2.el7 epel 143 k openssl11-libs x86_64 1:1.1.1k-2.el7 epel 1.5 M Transaction Summary ======================================================================================================================== Install 1 Package (+3 Dependent packages) Total download size: 16 M Installed size: 58 M Is this ok [y/d/N]: y Downloading packages: (1/4): libuv-1.43.0-2.el7.x86_64.rpm | 143 kB 00:00:00 (2/4): brotli-1.0.7-5.el7.x86_64.rpm | 318 kB 00:00:00 (3/4): nodejs-libs-16.13.2-3.el7.x86_64.rpm | 14 MB 00:00:00 (4/4): openssl11-libs-1.1.1k-2.el7.x86_64.rpm | 1.5 MB 00:00:00 ------------------------------------------------------------------------------------------------------------------------ Total 14 MB/s | 16 MB 00:00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : 1:openssl11-libs-1.1.1k-2.el7.x86_64 1/4 Installing : brotli-1.0.7-5.el7.x86_64 2/4 Installing : 1:libuv-1.43.0-2.el7.x86_64 3/4 Installing : 1:nodejs-libs-16.13.2-3.el7.x86_64 4/4 Verifying : 1:libuv-1.43.0-2.el7.x86_64 1/4 Verifying : brotli-1.0.7-5.el7.x86_64 2/4 Verifying : 1:nodejs-libs-16.13.2-3.el7.x86_64 3/4 Verifying : 1:openssl11-libs-1.1.1k-2.el7.x86_64 4/4 Installed: nodejs-libs.x86_64 1:16.13.2-3.el7 Dependency Installed: brotli.x86_64 0:1.0.7-5.el7 libuv.x86_64 1:1.43.0-2.el7 openssl11-libs.x86_64 1:1.1.1k-2.el7 Complete! Then maybe v8-devel needs to be tied to something like nodejs-libs-devel and not nodejs-devel.
Yeah, this should be resolved in the build I'm running right now. I'll get an update filed as soon as it finishes. https://src.fedoraproject.org/rpms/nodejs/c/f0d01eb00287b62f11a8c615264327ee870e5a40?branch=16
It's not supposed to obsolete v8-devel. The nodejs-devel and v8-devel subpackages are both produced by the nodejs SRPM build now. v8-devel provides compatibility with that API, whereas nodejs-devel provides additional API. Both runtimes are delivered through the nodejs-libs package (since they come from the same shared library).
Ok. The only thing I noted was, installing v8-devel pulls in nodejs-devel which include a bunch of other things I don't think are needed for v8-devel (strictly speaking): # yum install v8-devel ..... ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Installing: v8-devel x86_64 2:9.4.146.24-1.16.13.2.3.el7 epel 8.8 k Installing for dependencies: brotli-devel x86_64 1.0.7-5.el7 epel 27 k dwz x86_64 0.11-3.el7 rhel-7-hpc-node-rpms 99 k libuv-devel x86_64 1:1.43.0-2.el7 epel 25 k nodejs x86_64 1:16.13.2-3.el7 epel 205 k nodejs-devel x86_64 1:16.13.2-3.el7 epel 176 k nodejs-docs noarch 1:16.13.2-3.el7 epel 8.7 M nodejs-full-i18n x86_64 1:16.13.2-3.el7 epel 7.6 M nodejs-packaging noarch 25-1.el7 epel 20 k npm x86_64 1:8.1.2-1.16.13.2.3.el7 epel 2.1 M openssl11 x86_64 1:1.1.1k-2.el7 epel 692 k perl-srpm-macros noarch 1-8.el7 rhel-7-hpc-node-rpms 4.7 k python-srpm-macros noarch 3-34.el7 rhel-7-hpc-node-rpms 8.8 k redhat-rpm-config noarch 9.1.0-88.el7 rhel-7-hpc-node-rpms 81 k zip x86_64 3.0-11.el7 rhel-7-hpc-node-rpms 260 k Transaction Summary ======================================================================================================================== Install 1 Package (+14 Dependent packages) Total download size: 20 M Installed size: 109 M Is this ok [y/d/N]: Is v8-devel actually dependent on nodejs-devel? Looking at the ldd for the 3 .so files in v8-devel /usr/lib64/libv8.so /usr/lib64/libv8_libbase.so /usr/lib64/libv8_libplatform.so Only thing I see in the newest v8-devel is a dependency on brotli/brotli-devel, which is a dependency included with nodejs-libs. It's not clear why the above 3 lib files would need/require nodejs-devel. Thanks.
The v8-devel package is just a compatibility layer. If you look at the installed system, all three of those .so files are symlinks to libnode.so.93. That package exists to ensure that packages that build against v8 and expect those .so files to exist will not fail. libnode.so provides a proper superset of the v8 API (meaning everything from v8 and some additional Node-specific features).
FEDORA-EPEL-2022-b07aca13c8 has been submitted as an update to Fedora EPEL 7. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2022-b07aca13c8
FEDORA-EPEL-2022-b07aca13c8 has been pushed to the Fedora EPEL 7 testing repository. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2022-b07aca13c8 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.
FEDORA-EPEL-2022-b07aca13c8 has been pushed to the Fedora EPEL 7 stable repository. If problem still persists, please make note of it in this bug report.