Dear CentOS hive mind, I'm trying to package up a perl module into an RPM for easy deployment. I want it to be as self-contained as possible (to avoid version issues with perl modules in base or EPEL). So in my spec file, I'm doing: curl -L http://cpanmin.us | perl - App::cpanminus -L %{buildroot}/opt/zonemaster Zonemaster This way, cpanminus is installed first, and then it goes on to install the module and all its dependencies. In the %files section, if I do: /opt/zonemaster the RPM is also neatly packaged up. However, trying to install this on another system causes errors: # yum install zonemaster-engine-1.0.13-1.el7.gii.x86_64.rpm ... ... elided ... ... Error: Package: zonemaster-engine-1.0.13-1.el7.gii.x86_64 (/zonemaster-engine-1.0.13-1.el7.gii.x86_64) Requires: perl(JSON::backportPP) Error: Package: zonemaster-engine-1.0.13-1.el7.gii.x86_64 (/zonemaster-engine-1.0.13-1.el7.gii.x86_64) Requires: perl(namespace::clean::_Util) Error: Package: zonemaster-engine-1.0.13-1.el7.gii.x86_64 (/zonemaster-engine-1.0.13-1.el7.gii.x86_64) Requires: perl(Moose::Conflicts) Now, JSON::backportPP and Moose::Conflicts are part of JSON and Moose, respectively. However, those specific modules hide themselves from /usr/lib/rpm/perl.prov, by doing this: package # hide from PAUSE Moose::Conflicts; and package # This is JSON::backportPP JSON::PP; This is annoying. Does anyone have any idea on how to fix this? Can I get away with manually adding: Provides: JSON::backportPP Moose::Conflicts to the spec file? It looks like an ugly hack to me. Regards, Anand