Обсуждение: Why Hard-Coded Version 9.1 In Names?
I just installed postgreSQL 9.1 and noticed it hard-codes the folder /var/lib/pgsql/9.1 and it hard-codes the service name to be postgresql91. My previous version of 8.4.4 uses the generic folder /var/lib/pgsql/data and the generic service name postgresql. This causes a problem for me because I have a lot of tools and software that uses the old path and name.
Why is the hard-coded version included in the naming? Is there some install method to keep it using the generic names?
Thanks,
Jerry
On Mon, Jan 30, 2012 at 3:41 PM, Jerry Richards <jerry.richards@teotech.com> wrote: > I just installed postgreSQL 9.1 and noticed it hard-codes the folder > /var/lib/pgsql/9.1 and it hard-codes the service name to be postgresql91. > My previous version of 8.4.4 uses the generic folder /var/lib/pgsql/data and > the generic service name postgresql. This causes a problem for me because I > have a lot of tools and software that uses the old path and name. > > > > Why is the hard-coded version included in the naming? Is there some install > method to keep it using the generic names? It's to allow > 1 version to be installed at once.
On Tue, Jan 31, 2012 at 00:41, Jerry Richards <jerry.richards@teotech.com> wrote: > I just installed postgreSQL 9.1 and noticed it hard-codes the folder > /var/lib/pgsql/9.1 and it hard-codes the service name to be postgresql91. > Why is the hard-coded version included in the naming? Note that this is done by Linux distributions, vanilla PostgreSQL doesn't use version-specific paths. The reason is that the PostgreSQL on-disk format is not forward-compatible. In order to upgrade from one Postgres version to the next, you need to have *both* versions installed at once. As annoying as it is, version-specific paths is a pretty foolproof way to enable that. Regards, Marti
We get around this issue by creating a symbolic link called "current" that points to the version of Postgres that we want our servers to use by default: ln -s /var/lib/pgsql/9.1 /var/lib/pgsql/current The symbolic link is changed whenever we do an upgrade so it doesn't interfere with anything that we may already have configured. Thanks, Bobby On 1/31/12 8:14 AM, "Marti Raudsepp" <marti@juffo.org> wrote: >On Tue, Jan 31, 2012 at 00:41, Jerry Richards ><jerry.richards@teotech.com> wrote: >> I just installed postgreSQL 9.1 and noticed it hard-codes the folder >> /var/lib/pgsql/9.1 and it hard-codes the service name to be >>postgresql91. > >> Why is the hard-coded version included in the naming? > >Note that this is done by Linux distributions, vanilla PostgreSQL >doesn't use version-specific paths. > >The reason is that the PostgreSQL on-disk format is not >forward-compatible. In order to upgrade from one Postgres version to >the next, you need to have *both* versions installed at once. As >annoying as it is, version-specific paths is a pretty foolproof way to >enable that. > >Regards, >Marti
Its because of pg_upgrade, 'in place' upgrade capabilities that are in pg since 8.4. For that to work you need both old and new (current) set of postgresql binaries. Etc.