Denis Leroy wrote:
Rahul Sundaram wrote:
Les Mikesell wrote:
Paul Howarth wrote:
Stripping of pathname-based and package-name based dependencies I
can understand, but not the library deps.
Are they the same across all RPM based systems?
Yes, they are and the third party packages have no excuse if they are
deliberately disabling the automatic dependency mechanisms.
It's not that simple. VMware does this for a simple reason: they want a
single RPM that works on *all* distros. Essentially it's like static
linking (except they don't, they just ship their own dependencies).
VMware would otherwise have fairly complex dependencies (gtkmm comes to
mind) that would force them to provide probably a different RPM for each
<distro,version> pair... There's simply no easy way to distribute
closed-source softare for Linux, as we all know.
Isn't this the basic algorithm that's needed to solve the library
dependency problem?
#!/usr/bin/python
import os
import sys
app = 'PROPRIETARY_APP'
missingLibs = []
if os.exists('/usr/lib64/%s' % app):
libdir = '/usr/lib64/%s' % app
elif os.exists('/usr/lib/%s' % app):
libdir = '/usr/lib/%s' % app
else:
print 'Warning: Cannot find private app dir.'
# Attempt to start the app. The OS might provide all the necessary
# libraries.
sys.exit(os.system(app))
libToPrivateDir = {'libfoo.so.1': '%s/libfoo1' % libdir,
'libbar.so.2': '%s/libbar2' % libdir}
for line in os.popen(['ldd', os.path.join('/usr/bin',app)]):
tokens = line.split()
if '=>' not in tokens:
continue
if ['not', 'found'] == tokens[-2:]:
missingLibs.append(tokens[0])
path = [libToPrivateDir[lib] for lib in missingLibs]
current_path = os.environ('LD_LIBRARY_PATH')
if current_path:
path.insert(0, current_path)
if path:
os.environ['LD_LIBRARY_PATH'] = ':'.join(path)
sys.exit(os.system(app))
--
fedora-devel-list mailing list
fedora-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/fedora-devel-list