Re: Redhat RPMs (Was: Debian experimental packages - Mailing list pgsql-general

From Oliver Elphick
Subject Re: Redhat RPMs (Was: Debian experimental packages
Date
Msg-id 1065824272.1590.30.camel@linda.lfix.co.uk
Whole thread Raw
In response to Redhat RPMs (Was: Debian experimental packages ofPostgreSQL 7.4beta4)  ("Nigel J. Andrews" <nandrews@investsystems.co.uk>)
Responses Re: Redhat RPMs (Was: Debian experimental packages
List pgsql-general
On Fri, 2003-10-10 at 22:08, Nigel J. Andrews wrote:
> On Fri, 10 Oct 2003, Oliver Elphick wrote:
>
> > Debian packages of PostgreSQL 7.4beta4 are available in the experimental
> > section of the Debian archive.
>
> One thing I've been thinking/worrying about recently is the upgrade
> process. Rest assured this isn't rehashing the pg_upgrade debate though.
>
> What I'm wondering about is that I'm faced with a production box that is
> installed with a Redhat system, that's run by someone else and they do things
> 'by the book'. That is, software comes in RPM form, possibly RPMS form, but no
> way does it come in any other form since it's obviously not supported in that
> case. Now, we're coming up to the time when 7.4 is released, should I go to the
> extent of porting the db from 7.3 I'll be faced with the situation where the
> production db has to be brought down to do the upgrade which even after testing
> may fail in the process.  Factor into that that I'm sure the people admin-ing
> the box probably will not do this during a quiet time, i.e. middle of the
> night, I have a problem...unless the RPMs are relocatable.
>
> I've not looked at many RPMs but I must say that the few I have have never been
> relocatable. Can the postgresql RPMs not be made relocatable? At least in
> that case I could run the two versions concurrently rather than the admins be
> forced to shut 7.3 down, uninstall it, install 7.4, start it up and run the
> upgrade/load scripts before reenabling the application.

Well, I can't speak for the RPM builders, but I have been thinking about
this issue in respect of the debs.

I am not happy about the current situation for Debian upgrading, which
seems to be pretty fragile.  There are a fair number of bug reports from
people for whom the upgrade has barfed in some way or other.  The
situation for RPMs is even worse, since the installation scripts are far
more rigidly constrained than are the Debian installation scripts.  Of
course, that's why Lamar and I would be so happy to see a working
pg_upgrade tool.  But there's no prospect of that in even the medium
term, as far as I can see.

Your suggestion of parallel installations is the solution I have been
considering.  If the new package could be installed alongside the old,
there would be no need to upgrade the data during installation and no
danger of data loss.

Another reason for considering this is for the benefit of people who
want to run multiple versions.  Perhaps they have an application which
is live and they want to keep that going while they update its code for
use with the new PostgreSQL; it will be much easier for them if the two
versions can be installed side by side as packages.  Other users may
have multiple database users, who want to use different software
versions.

For that to work, however, we need a mechanism for assigning a port to
each package and database and for determining which version of the
client software each user will get.  So that means that in each package,
psql must be renamed psql-7.3, psql-7.4 and so on.  Then psql becomes a
soft link to the default psql version.  Debian's alternatives system
(update-alternatives(8)) provides a convenient mechanism for making
those soft links if there is a single systemwide default, but not if
there are different users who want different versions.  I don't know if
Red Hat has anything similar.

At the same time, I would like to make the packages cope with multiple
database structures, which are also needed by ISPs and others who need
to charge users for space used.

Assuming multiple versions installed simultaneously, with multiple
data/base structures

DB struct
owner          PGDATA               Version           PGPORT

fred         /var/lib/pg/fred       7.3               5433
george       /var/lib/pg/george     7.4               5434
harry        /var/lib/pg/harry      7.4               5435

then the packages need to provide the means for each user to get the
right PGPORT and the appropriate client software to access that port.

I haven't got any further than this, but I wonder if this is something
that would be useful to the whole project and not just to the
distributions.  Any comments?

--
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight, UK                             http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
                 ========================================
     "He that covereth his sins shall not prosper; but whoso
      confesseth and forsaketh them shall have mercy."
                                         Proverbs 28:13


pgsql-general by date:

Previous
From: Ron Johnson
Date:
Subject: Re: [PERFORM] Index/Foreign Key Question
Next
From: "Ed L."
Date:
Subject: backend exit mystery