473,763 Members | 6,772 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

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 1384
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
7269
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 school. When I tried to open it in the lab, I got a message saying I couldn't open it because it was created with a newer version. Evidently the lab is using Visual Studio.Net 2002. My professor doesn't just want the executable file, he wants...
2
8808
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 configuration every time there is an update to a shared assembly.
2
630
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 best group to share this information. A co-worker and I were able to determine how to tell exactly what version of .NET Framework is installed. We had to do this because we had to manually deploy the MS05-004 Security Bulletin to thousands of...
4
2839
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 bc; string s; bc = Request.Browser; ....
3
3070
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 understand that the ASP.Net version is the version of ASP.Net that the current site is running under and it can be retreived with System.Environment.Version.ToString. What exactly is the Microsoft .NET Framework Version that is displayed? It is...
4
6371
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) { System.Deployment.Application.ApplicationDeployment ad = System.Deployment.Application.ApplicationDeployment.CurrentDeployment;
2
1781
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 code of version 1.0. Since it take some time to have the version 2.0 ready for production, the code of version 1.0 needs to be kept somewhere for possible bug fix. At this point, the only feasible idea I have is: 1) create a new project for...
0
1923
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 the xsl:data-type=number, but that doesn't work. The output of the XML file is exactly what the XML file has and I would like to sort it by the number value. Below is the some of the output from the XML file. <?xml version="1.0"?>...
8
3502
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 implemented in a new interface, which derive from the old one to ensure that an old version of my application (a1) still works with s2. If i run my new version of the application a2 with s1 I get a InvalidCastException (Return argument has an...
4
3180
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 resource. I assume that, unlike C# and VB, C++ doesn't automatically generate a version resource. Is there any way to make this happen? In particular, I don't want to have to manually update the file version in the version resource to keep it in...
0
9563
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, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9386
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10144
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, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
9937
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 Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
5270
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
5405
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
3917
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
3
3522
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2793
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

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.