Bug 1204394

Summary: Spamassissin package depends on -devel packages
Product: Red Hat Enterprise Linux 7 Reporter: Graham Leggett <minfrin>
Component: perl-ExtUtils-MakeMakerAssignee: perl-maint-list
Status: CLOSED NOTABUG QA Contact: BaseOS QE - Apps <qe-baseos-apps>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.0CC: amahdal, nmavrogi, ppisar
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-12-02 13:26:47 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Graham Leggett 2015-03-21 15:43:56 UTC
The spamassassin RPM package has dependencies on a -devel package, causing a significant amount of unnecessary software to be installed:

 gdbm-devel x86_64 1.10-8.el7 base 47 k
 glibc-devel x86_64 2.17-55.el7_0.5 updates 1.0 M
 glibc-headers x86_64 2.17-55.el7_0.5 updates 651 k
 kernel-headers x86_64 3.10.0-123.20.1.el7 updates 1.4 M
 libdb-devel x86_64 5.3.21-17.el7_0.1 updates 38 k
 perl-devel x86_64 4:5.16.3-283.el7 base 451 k
 systemtap-sdt-devel x86_64 2.4-16.el7_0 updates 58 k

On a vanilla Centos 7 machine, attempt to install spamassassin with "yum install spamassassin":

================================================================================
 Package Arch Version Repository Size
================================================================================
Installing:
 spamassassin x86_64 3.3.2-18.el7 base 1.1 M
Installing for dependencies:
 gdbm-devel x86_64 1.10-8.el7 base 47 k
 glibc-devel x86_64 2.17-55.el7_0.5 updates 1.0 M
 glibc-headers x86_64 2.17-55.el7_0.5 updates 651 k
 kernel-headers x86_64 3.10.0-123.20.1.el7 updates 1.4 M
 libdb-devel x86_64 5.3.21-17.el7_0.1 updates 38 k
 mailcap noarch 2.1.41-2.el7 base 31 k
 perl x86_64 4:5.16.3-283.el7 base 8.0 M
 perl-Archive-Tar noarch 1.92-2.el7 base 73 k
 perl-Business-ISBN noarch 2.06-2.el7 base 25 k
 perl-Business-ISBN-Data noarch 20120719.001-2.el7 base 24 k
 perl-Carp noarch 1.26-244.el7 base 19 k
 perl-Compress-Raw-Bzip2 x86_64 2.061-3.el7 base 32 k
 perl-Compress-Raw-Zlib x86_64 1:2.061-4.el7 base 57 k
 perl-Crypt-OpenSSL-Bignum x86_64 0.04-18.el7 base 34 k
 perl-Crypt-OpenSSL-RSA x86_64 0.28-7.el7 base 38 k
 perl-Crypt-OpenSSL-Random x86_64 0.04-21.el7 base 24 k
 perl-DB_File x86_64 1.830-3.el7 base 73 k
 perl-Data-Dumper x86_64 2.145-3.el7 base 47 k
 perl-Digest noarch 1.17-245.el7 base 23 k
 perl-Digest-HMAC noarch 1.03-5.el7 base 16 k
 perl-Digest-MD5 x86_64 2.52-3.el7 base 30 k
 perl-Digest-SHA x86_64 1:5.85-3.el7 base 58 k
 perl-Encode x86_64 2.51-7.el7 base 1.5 M
 perl-Encode-Detect x86_64 1.01-13.el7 base 82 k
 perl-Encode-Locale noarch 1.03-5.el7 base 16 k
 perl-Error noarch 1:0.17020-2.el7 base 32 k
 perl-Exporter noarch 5.68-3.el7 base 28 k
 perl-ExtUtils-Install noarch 1.58-283.el7 base 73 k
 perl-ExtUtils-MakeMaker noarch 6.68-3.el7 base 275 k
 perl-ExtUtils-Manifest noarch 1.61-244.el7 base 31 k
 perl-ExtUtils-ParseXS noarch 1:3.18-2.el7 base 77 k
 perl-File-Listing noarch 6.04-7.el7 base 13 k
 perl-File-Path noarch 2.09-2.el7 base 26 k
 perl-File-Temp noarch 0.23.01-3.el7 base 56 k
 perl-Filter x86_64 1.49-3.el7 base 76 k
 perl-Getopt-Long noarch 2.40-2.el7 base 56 k
 perl-HTML-Parser x86_64 3.71-4.el7 base 115 k
 perl-HTML-Tagset noarch 3.20-15.el7 base 18 k
 perl-HTTP-Cookies noarch 6.01-5.el7 base 26 k
 perl-HTTP-Daemon noarch 6.01-5.el7 base 20 k
 perl-HTTP-Date noarch 6.02-8.el7 base 14 k
 perl-HTTP-Message noarch 6.06-6.el7 base 82 k
 perl-HTTP-Negotiate noarch 6.01-5.el7 base 17 k
 perl-HTTP-Tiny noarch 0.033-3.el7 base 38 k
 perl-IO-Compress noarch 2.061-2.el7 base 260 k
 perl-IO-HTML noarch 1.00-2.el7 base 23 k
 perl-IO-Socket-INET6 noarch 2.69-5.el7 base 20 k
 perl-IO-Socket-IP noarch 0.21-4.el7 base 35 k
 perl-IO-Socket-SSL noarch 1.94-3.el7 base 113 k
 perl-IO-Zlib noarch 1:1.10-283.el7 base 50 k
 perl-LWP-MediaTypes noarch 6.02-2.el7 base 24 k
 perl-Mail-DKIM noarch 0.39-8.el7 base 129 k
 perl-Mail-SPF noarch 2.8.0-4.el7 base 140 k
 perl-MailTools noarch 2.12-2.el7 base 108 k
 perl-Net-DNS x86_64 0.72-5.el7 base 308 k
 perl-Net-HTTP noarch 6.06-2.el7 base 29 k
 perl-Net-LibIDN x86_64 0.12-15.el7 base 28 k
 perl-Net-SMTP-SSL noarch 1.01-13.el7 base 9.1 k
 perl-Net-SSLeay x86_64 1.55-3.el7 base 285 k
 perl-NetAddr-IP x86_64 4.069-3.el7 base 125 k
 perl-Package-Constants noarch 1:0.02-283.el7 base 44 k
 perl-PathTools x86_64 3.40-5.el7 base 82 k
 perl-Pod-Escapes noarch 1:1.04-283.el7 base 49 k
 perl-Pod-Perldoc noarch 3.20-4.el7 base 87 k
 perl-Pod-Simple noarch 1:3.28-4.el7 base 216 k
 perl-Pod-Usage noarch 1.63-3.el7 base 27 k
 perl-Scalar-List-Utils x86_64 1.27-248.el7 base 36 k
 perl-Socket x86_64 2.010-3.el7 base 49 k
 perl-Socket6 x86_64 0.23-15.el7 base 27 k
 perl-Storable x86_64 2.45-3.el7 base 77 k
 perl-Sys-Syslog x86_64 0.33-3.el7 base 42 k
 perl-Test-Harness noarch 3.28-2.el7 base 302 k
 perl-Text-ParseWords noarch 3.29-4.el7 base 14 k
 perl-Time-HiRes x86_64 4:1.9725-3.el7 base 45 k
 perl-Time-Local noarch 1.2300-2.el7 base 24 k
 perl-TimeDate noarch 1:2.30-2.el7 base 52 k
 perl-URI noarch 1.60-9.el7 base 106 k
 perl-WWW-RobotRules noarch 6.02-5.el7 base 18 k
 perl-constant noarch 1.27-2.el7 base 19 k
 perl-devel x86_64 4:5.16.3-283.el7 base 451 k
 perl-libs x86_64 4:5.16.3-283.el7 base 686 k
 perl-libwww-perl noarch 6.05-2.el7 base 205 k
 perl-macros x86_64 4:5.16.3-283.el7 base 42 k
 perl-parent noarch 1:0.225-244.el7 base 12 k
 perl-podlators noarch 2.5.1-3.el7 base 112 k
 perl-threads x86_64 1.87-4.el7 base 49 k
 perl-threads-shared x86_64 1.43-6.el7 base 39 k
 perl-version x86_64 3:0.99.07-2.el7 base 84 k
 portreserve x86_64 0.0.5-10.el7 base 25 k
 procmail x86_64 3.22-34.el7_0.1 updates 171 k
 systemtap-sdt-devel x86_64 2.4-16.el7_0 updates 58 k

Comment 2 Jakub Jelen 2015-03-24 15:37:07 UTC
This is indirect dependency which is brought here by other packages:
spamassassin -> perl-ExtUtils-MakeMaker -> perl-ExtUtils-Install
-> perl-devel
   -> gdbm-devel
   -> glibc-devel
      -> glibc-headers
         -> kernel-headers
   -> libdb-devel
   -> systemtap-sdt-devel

ExtUtils-MakeMaker is used for sa-compile if I am right, but we are not using perl-ExtUtils-Install which is brought here so feel free to report this to ExtUtils-MakeMaker package if you are sure it doesn't need some *-Install module.



BTW, Much more useful would be dependency tree, than your list:

Resolving Dependencies
[...]
--> Processing Dependency: perl(ExtUtils::MakeMaker) for package: spamassassin-3.4.0-1.el7.x86_64
[...]
--> Processing Dependency: perl(ExtUtils::Install) for package: perl-ExtUtils-MakeMaker-6.68-3.el7.noarch
[...]
---> Package perl-ExtUtils-Install.noarch 0:1.58-285.el7 will be installed
--> Processing Dependency: perl-devel for package: perl-ExtUtils-Install-1.58-285.el7.noarch
---> Package perl-ExtUtils-Manifest.noarch 0:1.61-244.el7 will be installed
[...]
---> Package perl-devel.x86_64 4:5.16.3-285.el7 will be installed
--> Processing Dependency: systemtap-sdt-devel for package: 4:perl-devel-5.16.3-285.el7.x86_64
--> Processing Dependency: libdb-devel for package: 4:perl-devel-5.16.3-285.el7.x86_64
[...]
--> Processing Dependency: gdbm-devel for package: 4:perl-devel-5.16.3-285.el7.x86_64
--> Running transaction check
---> Package gdbm-devel.x86_64 0:1.10-8.el7 will be installed
---> Package libdb-devel.x86_64 0:5.3.21-17.el7_0.1 will be installed
[...]
---> Package systemtap-sdt-devel.x86_64 0:2.6-8.el7 will be installed
--> Processing Dependency: pyparsing for package: systemtap-sdt-devel-2.6-8.el7.x86_64
--> Running transaction check
---> Package pyparsing.noarch 0:1.5.6-9.el7 will be installed
--> Finished Dependency Resolution

Comment 3 Jaroslav Škarvada 2016-12-02 10:09:37 UTC
Comment 2 is right, we need perl-ExtUtils-MakeMaker for sa-compile (it's brought in as a implicit dependency). Reassigning to it to be sure that its requirement of perl-ExtUtils-Install is correct (but I am afraid it is). So probably we are not able to fix this problem with yum (it doesn't have support for soft dependencies).

Comment 4 Petr Pisar 2016-12-02 13:26:47 UTC
The dependencies are wrong, but fixing them would not help.

perl-ExtUtils-Install should not require perl-devel. That's a bug. On the other hand, perl-ExtUtils-MakeMaker should require perl-devel. The reason is that ExtUtils::MakeMaker is used for building Perl modules that can contain a C code that #includes perl header files.

Therefore perl-ExtUtils-MakeMaker is a developmental package and requires perl-devel.

Moreover all RHEL-7 perl source packages are written with the assumption that perl-ExtUtils-MakeMaker will drag perl-devel. Removing the dependency would brake them.