[Pkg-firebird-general] [Firebird-devel] firebird 1.5 debian packages
- please help
Mark O'Donohue
mark.odonohue@firebirdsql.org
Tue, 06 Jul 2004 10:53:13 +1000
This is a multi-part message in MIME format.
--------------080904000407020502020402
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
I see Nickolay has answered most of your question but just in case it helps.
Daniel Urban wrote:
> Hi
>
> Is firebird/lib/libfbclient.so.1.5.0 diffrent in super server
> and classic server?
No they are the same.
> If no could I make (in your opinion) one package firebird-client with
> this library(ies)?
> And for what purpose is firebird/lib/libfbembed.so.1.5.0 in classic server
> instalation and why it isn't in super server instalation?
>
libfbembed.so.1.5.0
In Previous fb/ib installs there were two different libgds.so's.
classic libgds.so -> libfbembed.so
super libgds.so -> libfbclient.so
Classic (the original one) did embedded connections (ie the program
directly opens the db file) for local db access and remote connections
are done over port 3050.
In classic libgds.so in fact holds the complete database engine.
However classic has one major drawback - it is not multithreaded
(although future versons it seems will be).
The super version (now libfbclient.so) handles only the client side of
the db protocol (ie it needs to talk over port 3050 to a server) - It
is smaller (since it's only the client side) and it also handles
multithreaded clients.
So use libfbclient.so for most purposes, and libfbembed.so if you want
some special effects.
Usually it's installed as:
/usr/lib/libgds.so -> /opt/firebird/lib/libfbclient.so
for super and
/usr/lib/libgds.so -> /opt/firebird/lib/libfbembed.so
for classic
Btw, since the interface is idential for both, the two libraries are
somewhat interchangable in fact there is a tool, (for embedded) that
allows you to switch what libgds.so points to:
/opt/firebird/bin/changeGdsLibraryCompatibleLink.sh
This works fine except when the application is multithreaded.
(I've attached it, but it's also part of the standard install base).
> and why it isn't in super server instalation?
libfbclient was included in classic install as, there was a need for
multithreaded client in classic package.
Once Jims Vulcan/fb3.0 (or whatever) is merged libfbembed.so will make
more sense, with embeded/server as options. Currently it's easier/best
to keep them as seperate packages.
Cheers
Mark
--------------080904000407020502020402
Content-Type: text/x-sh;
name="changeGdsLibraryCompatibleLink.sh"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="changeGdsLibraryCompatibleLink.sh"
#!/bin/sh
#
# This library is part of the Firebird project
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# You may obtain a copy of the Licence at
# http://www.gnu.org/licences/lgpl.html
#
# As a special exception this file can also be included in modules
# with other source code as long as that source code has been
# released under an Open Source Initiative certificed licence.
# More information about OSI certification can be found at:
# http://www.opensource.org
#
# This module is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public Licence for more details.
#
# This module was created by members of the firebird development
# team. All individual contributions remain the Copyright (C) of
# those individuals and all rights are reserved. Contributors to
# this file are either listed below or can be obtained from a CVS
# history command.
#
# Created by: Mark O'Donohue <mark.odonohue@ludwig.edu.au>
#
# Contributor(s):
#
#
# $Id: changeGdsLibraryCompatibleLink.sh.in,v 1.1.2.1 2003/12/23 23:13:55 skywalker Exp $
#
# This script allows the user to change the link on classic for the
# client library from
#
# a) libfbembed.so original classic direct connection
# b) libfbclient.so multithreaded client connection
#
#------------------------------------------------------------------------
# Prompt for response, store result in Answer
Answer=""
AskQuestion() {
Test=$1
DefaultAns=$2
echo -n "${1}"
Answer="$DefaultAns"
read Answer
if [ -z $Answer ]
then
Answer=$DefaultAns
fi
}
#------------------------------------------------------------------------
# remove Link
removeLink() {
fileName=$1
if [ -L $fileName ]
then
rm -f $fileName
fi
}
#------------------------------------------------------------------------
# quitIfRealFile
# Remove the backward comparibility links for libgds.so
quitIfRealFile() {
fileToCheck=$1
# Don't worry about symbolic links
if [ -L $fileToCheck ]
then
return
fi
if [ -f $fileToCheck ]
then
echo "The file $fileToCheck is a real file not just a link to an "
echo "existing file. It therefore may be from a"
echo "previous firebird or InterBase(r) installation"
echo "You will need to manually check the status of this file"
echo "and remove it before running this script again"
exit
fi
}
#------------------------------------------------------------------------
# removeLinks
# Remove the backward comparibility links for libgds.so
removeLinks() {
removeLink /usr/lib/libgds.so
removeLink /usr/lib/libgds.so.0
}
#------------------------------------------------------------------------
# createLinksForBackCompatibility
# Create links for back compatibility to InterBase and Firebird1.0
# linked systems.
createLinksForBackCompatibility() {
# These two links are required for compatibility with existing ib programs
# If the program had been linked with libgds.so then this link is required
# to ensure it loads the fb equivalent. Eventually these should be
# optional and in a seperate rpm install. MOD 7-Nov-2002.
newLibrary=$FBRootDir/lib/$1
removeLinks
ln -s $newLibrary /usr/lib/libgds.so
ln -s $newLibrary /usr/lib/libgds.so.0
}
#------------------------------------------------------------------------
# printStatus
printStatus() {
printStatus=`ls -l /usr/lib/libgds.so | sed 's@^.* /usr@/usr@'`
echo $printStatus
}
#= Main ====================================================================
FBRootDir=/opt/firebird
FBBin=$FBRootDir/bin
cat <<EOF
For classic server there are two optional backward compatible client libraries.
These are libfbclient.so and libfbembed.so.
libfbclient.so) enables your client to be multithreaded but must connect to a
database via a server.
libfbembed.so) allows the client to directly open the database file, but does
not support multithreaded access
Your current setting is:
EOF
printStatus
echo ""
quitIfRealFile /usr/lib/libgds.so
quitIfRealFile /usr/lib/libgds.so.0
AskQuestion "Which option would you like to choose (client|embed|remove) [client] " "client"
case $Answer in
embed)
createLinksForBackCompatibility libfbembed.so
;;
client)
createLinksForBackCompatibility libfbclient.so
;;
remove)
removeLinks
;;
*)
echo "Unknown option $Answer chosen"
;;
esac
--------------080904000407020502020402--