[packages/postgresql: 2/3] - initial support for full pg_upgrade - exmaple: pg_upgrade -b /usr/lib64/postgresql-9.1/bin/ -B /us
Jacek Konieczny
jajcus at jajcus.net
Thu Sep 27 15:39:56 CEST 2012
On Thu, Sep 27, 2012 at 03:21:12PM +0200, Jakub Bogusz wrote:
> On Tue, Sep 25, 2012 at 12:29:38PM +0200, zawadaa wrote:
> > commit 9214a4d4c6913380a9e02edb10cf81acca08ee45
> > Author: Andrzej Zawadzki <zawadaa w pld-linux.org>
> > Date: Tue Sep 25 12:22:51 2012 +0200
> >
> > - initial support for full pg_upgrade
> > - exmaple:
> > pg_upgrade -b /usr/lib64/postgresql-9.1/bin/ -B /usr/bin/ -d /var/lib/pgsql/data -D /var/lib/pgsql/data_new
> > - I don't know is this propoer packaging - looks ugly - please review
> > - NOTE: this can upgrade from 9.1 to 9.2 only!
>
> Parę pytań.
> Co dokładnie jest potrzebne pg_upgrade ze starej wersji postgresql-a?
Binarka serwera i wszystkich modułów (w tym zewnętrznych) które były
używane przez upgrejdowaną bazę.
Ten pg_upgrade działa tak, że uruchamia stary i nowy postgresql (na
zmiane) i dane z jednego przesyła do drugiego. Niespecjalnie mi się to
podoba, ale to na razie najlepsze co PostgreSQLowcy wymyślili.
> Czy obsługuje tylko poprzednią wersję, czy także wcześniejsze?
„pg_upgrade supports upgrades from 8.3.X and later to the current major
release of PostgreSQL, including snapshot and alpha releases.”
Więcej tu: http://www.postgresql.org/docs/9.0/static/pgupgrade.html
> Mi też się nie podoba ten sposób budowania. Z tego co widzę - pg_upgrade
> do zbudowania nie potrzebuje niczego ze starszej wersji postgresql-a
> - więc nie ma powodu, żeby budować ją jednocześnie.
Racja.
> Widziałbym raczej postgresql9.1.spec (ew. też postgresql9.0.spec itd.,
> w ramach wersji obsługiwanych przez pg_upgrade) - i stamtąd budowany
> pakiet np. %{name}-upgradesource czy %{name}-dump (w zależności od tego,
> co to naprawdę robi), ew. jakieś inne podpakiety, jeśli ktoś potrzebuje.
Najlepiej byłoby móc zachować binarki z poprzedniego buildu - bo tego
właściwie oczekuje pg_upgrade… ale nie widzę jak to by miało działać
z dystrybucyjnymi pakietami (zależnościami ciągniętymi przez upgrade).
Myślę, że najrozsądniej byłoby gdy wychodzi nowy postgresql robić tak:
kopia pakietu postgresql -> postgresqlX.Y
tam ustawiony inny %{_prefix}
i tak budowane
Najlepiej od razu dodać bconda do speca, żeby budował z innym
%{_prefix} (np. /usr/lib/postgresql-old} i pomijał niepotrzebne
pliki/podpakiety. Wtedy pozostaje skopiowanie pakietu pod nową nazwą
puszczenie budowania z bcondem.
Alternatywnie bcond by pakował, zamiast standardowego zestawu pakietów:
%package -n postgresql%{version}
z plikami serwera w innym katalogu. Wtedy można by to z jednego speca,
z brancha na buildery słać. Ale wtedy automatyka FTPowa będzie krzyczeć,
że z różnych wersji src.rpm pakiety są.
Pozdrowienia,
Jacek
More information about the pld-devel-pl
mailing list