473,396 Members | 2,036 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

version-independence between Python & BerkDB in Solaris packages?


This is kinda off-topic for this group, but since I'm packaging Python
perhaps not too far OT.

I built a Solaris package for Python 2.3.3 then copied it to another system
and installed it. Nothing too earth-shaking there. When I ran the
regression test it barfed in test_bsddb because it couldn't find the
Berkeley DB library. I went back to the first system and am now in the
midst of updating from DB 4.0.14 to DB 4.2.52 and will then build a Solaris
package for it.

Unfortunately that means I'll have to rebuild and repackage Python as well,
since _bsddb.so depends on a specific Berkeley DB package:

% ldd _bsddb.so
libdb-4.0.so => /usr/local/BerkeleyDB.4.0/lib/libdb-4.0.so
libc.so.1 => /usr/lib/libc.so.1
libdl.so.1 => /usr/lib/libdl.so.1
/usr/platform/SUNW,Ultra-80/lib/libc_psr.so.1

Is it possible to compile and package Python and the external libraries it
uses to minimize coupling between package versions like this? I note that
other modules which link to specific external libraries don't have such
problems:

% ldd zlib.so
libz.so => /usr/lib/libz.so
libc.so.1 => /usr/lib/libc.so.1
libdl.so.1 => /usr/lib/libdl.so.1
/usr/platform/SUNW,Ultra-80/lib/libc_psr.so.1

Maybe it's just unavoidable with Berkeley DB because there are so many
versions liable to be installed simultaneously.

Thanks,

Skip
Jul 18 '05 #1
1 1361
Skip Montanaro wrote:
Is it possible to compile and package Python and the external libraries it
uses to minimize coupling between package versions like this?
There are several alternatives:

1. Link _bsddb.so statically with a libdb.a. Then you don't need
any additional shared libraries on the target system. You may find
that _bsddb.so can't open databases of the "system's" libdb-x.y.so,
though.

2. Be prepared to have multiple versions of libdb installed on a system.
BerkeleyDB is deliberately packaged in a way to make this possible:
You can have /usr/local/BerkeleyDB-4.0, and, at on the same system,
/usr/local/BerkeleyDB-4.2. Still the same problem as in 1) with
opening newer databases.

3. Package _bsddb.so separately from Python. This is the typical
Linux answer. Then provide multiple copies of _bsddb.so, each
packaged for its own libdb-x.y. The different packages should
conflict with each other. Can be combined with either 1 or 2.
I note that
other modules which link to specific external libraries don't have such
problems:

% ldd zlib.so
libz.so => /usr/lib/libz.so
libc.so.1 => /usr/lib/libc.so.1
libdl.so.1 => /usr/lib/libdl.so.1
/usr/platform/SUNW,Ultra-80/lib/libc_psr.so.1


That's because libz.so is part of the operating system. Even if
newer libz releases are available, nobody would install them
on Solaris (anymore), since it is so convenient to use the
system library. If Sun ever decides to bundle Sleepycat with
the system, the same thing may happen: Solaris 11 comes with
BerkeleyDB 4.7.178, and nobody installs 4.9.26 even though this
has been available for three months already. Instead, people
upgrade to Solaris 12 when it comes out.

Regards,
Martin

Jul 18 '05 #2

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: angelag | last post by:
I am currently taking a college course in Visual Basic.Net and I am a beginner. I bought Visual Studio.Net 2003 to do my homework at home. I built my first project and e-mailed it to myself at...
2
by: Terence Shek | last post by:
Is there a way to set the application binding policy so that it always binds to the latest version of an assembly? I'm hoping there is a way to avoid updating the application's binding...
2
by: j.b.messina | last post by:
This has not yet been published by Microsoft. It will be published within the next few weeks, mainly because I asked them to. I felt this was information badly needed, and I think this is the...
4
by: Earl T | last post by:
When I try to get the netscape version for version 7, I get the HttpBrowserCapabilities class returning the version as 5 and not 7. (see code and output below) CODE HttpBrowserCapabilities...
3
by: Shadow Lynx | last post by:
At the bottom of the default Error page that appears when Unhandled Exceptions occur, what exactly is the difference between the "Microsoft ..Net Framework Version" and the "ASP.NET Version"? I...
4
by: Mike L | last post by:
Error occurs on "System.Deployment.Application.ApplicationDeployment.CurrentDeployment" ** Here is my code private void frmMain_Load(object sender, System.EventArgs e) {...
2
by: Hongbo | last post by:
Hi, I have a web site built in ASP.Net 1.1 running on production server. It's the version 1.0. Now I need to build the version 2.0 for this web site. The version 2.0 will be built based on the...
0
by: ev951 | last post by:
I am not that familiar with XML or XSL and I am trying to sort application version number strings in an XML file that my team uses for application installations on our Linux servers. I have tried...
8
by: schaf | last post by:
Hi Ng! My application (version 1 a1) communicates with a service (version 1 s1). Now I would like to update the service and create a service version 2 (s2). The new function calls within s2 are...
4
by: Bob Altman | last post by:
Hi all, I have a C++/CLI project (VS 2005) that produces a DLL that exports C bindings. Internally, this DLL contains routines compiled with /clr. I notice that my DLL doesn't have a version...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.