Michael Lampe
2012-Feb-26 18:45 UTC
[CentOS] Is there a way to _remove_ dependencies from an RPM built from source?
I'm building my own openmpi packages derived from upstream SRPMs. Problem: The ones built with Intel's compiler can only be installed by force, because Intel doesn't register their provided libs with rpm. Any idea how this can be done? (Alternative ideas are appreciated as well -- as long as they don't read as: make Intel fix this.) -Michael
Frank Cox
2012-Feb-26 19:05 UTC
[CentOS] Is there a way to _remove_ dependencies from an RPM built from source?
On Sun, 26 Feb 2012 19:45:54 +0100 Michael Lampe wrote:> I'm building my own openmpi packages derived from upstream SRPMs. > > Problem: The ones built with Intel's compiler can only be installed by > force, because Intel doesn't register their provided libs with rpm. > > Any idea how this can be done?A dependency is supposed to be something that's required for a program to work. Removing the dependency from the rpm won't magically make a program work if it really does require the functionality provided by that dependency. If it's not actually required for some reason, then install the .src.rpm, edit the spec file to remove or modify the dependency list, and compile new source and binary rpms. -- MELVILLE THEATRE ~ Real D 3D Digital Cinema ~ www.melvilletheatre.com www.creekfm.com - FIFTY THOUSAND WATTS of POW WOW POWER!
Phoenix, Merka
2012-Mar-02 09:06 UTC
[CentOS] Is there a way to _remove_ dependencies from an RPM built from source?
> -----Original Message----- > From: centos-bounces at centos.org [mailto:centos-bounces at centos.org] On Behalf Of Michael Lampe > > I'm building my own openmpi packages derived from upstream SRPMs. > > Problem: The ones built with Intel's compiler can only be installed by force, because Intel doesn't register their provided libs with rpm. > > Any idea how this can be done? > > (Alternative ideas are appreciated as well -- as long as they don't read as: "make Intel fix this".) > > -Michael >This Intel knowledgebase article lists which libraries are redistributable from their compiler collection: http://software.intel.com/en-us/articles/redistributable-libraries-for-the-intelr-c-and-visual-fortran-compiler-professional-editions-for-linux/?wapkw=intel%20c%20compiler%20libraries%20software.intel.com and this article on Intel's web site addresses which components may be redistributed by the end-developer to the end-user: http://software.intel.com/en-us/articles/redistribution-of-application-binaries-built-for-linux/ "Intel's redistributable compiler libraries package may be added to the distributed application package for any end-user application built or partially built with an Intel compiler that is distributed by an Intel customer who holds an Intel Commercial or Academic license for the associated Intel compiler product. The Intel redistributable compiler libraries package may be distributed as a separate non-modified module to the end-users of the distributed application." In the paragraph above, Intel explicitly states that you may redistribute the libraries as a separate non-modified module to end users of your distributed application. This means that you could package the redistributable libraries into a sub-package (for example, as 'openmpi-libs') and list the sub-package as a dependency in the main package. If you need some help on how to create a sub-package within your SPEC file, I would be glad to provide some pointers -- as a systems integrator, I've had to maintain both existing RPMs and create new ones from scratch where there wasn't one. Reading between the lines here, Intel may also have an implied restriction that the libraries only be redistributed with your application. When in doubt, ask. A link to Intel's forum for their C++ compiler is here: http://software.intel.com/en-us/forums/intel-c-compiler/ Regarding 'implicit' dependencies being recorded by RPM into the package, refer to the RPM documentation for an explanation of how RPM (rpmbuild) determines the dependencies and how it records these into the package being built: http://www.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html Internally, the rpmbuild utility uses a shell script to call the 'ldd' (list dynamic dependencies) utility to list and parse which shared libraries that an executable (or library) has been linked against. Cheers! Simba Engineering Other helpful information: Refer to this tech note available on Intel's web site for more information about using Intel compilers (C++, Fortran) with RedHat / CentOS / Fedora Linux: http://software.intel.com/en-us/articles/using-intel-compilers-for-linux-under-redhat-enterprise-linux/
Johnny Hughes
2012-Mar-02 13:28 UTC
[CentOS] Is there a way to _remove_ dependencies from an RPM built from source?
On 02/26/2012 12:45 PM, Michael Lampe wrote:> I'm building my own openmpi packages derived from upstream SRPMs. > > Problem: The ones built with Intel's compiler can only be installed by > force, because Intel doesn't register their provided libs with rpm. > > Any idea how this can be done? > > (Alternative ideas are appreciated as well -- as long as they don't read > as: make Intel fix this.) >OK. So the problem is that you have libs on your machine that are not registered in the RPM database. If those libs were registered then you are saying that this would solve your problem? If so, then all you need to do is to put the info into the database. The problem here is with the shared libraries being on your machine and not in the RPM database. That is the issue you need to solve, or you will have to deal with it on each and every other thing you build. How were the Intel shared libs installed on your machine? (Via an RPM or via a manual "configure/make/make install"). If the files were installed via a make install and not an RPM, the fix is to install them via an RPM or to create entries for them in the database. I see that there are RPM files for the intel compiler ... do these not register in the database? If you know the names of all the files, you can create an RPM that has all those files and install it with an "rpm -Uvh --justdb <rpm-filename>" to not touch the filesystem but to update those files into the rpm database. Or, you could actually create a proper RPM for the Intel files and install them via the RPM. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 262 bytes Desc: OpenPGP digital signature URL: <http://lists.centos.org/pipermail/centos/attachments/20120302/3dfb5ff5/attachment-0004.sig>
Reasonably Related Threads
- CentOS 8: several packages have unresolved dependencies after "dnf update all "
- Rmpi, openMPI editions.
- CentOS 8: several packages have unresolved dependencies after "dnf update all "
- boost-openmpi problems in 7.2
- Rmpi segfault after install on Ubuntu Hardy Heron