Обсуждение: [pgsql-pkg-debian] Problems upgrading postgresql-9.4 under Debian Jessie
Hello, Lately we have encountered problems when upgrading the postgresql-9.4 package from apt.postgresql.org under Debian Jessie: Preparing to unpack .../postgresql-9.4_9.4.12-1.pgdg80+1_i386.deb ... dpkg: warning: subprocess old pre-removal script returned error exit status 102 dpkg: trying script from the new package instead ... dpkg: error processing archive /var/cache/apt/archives/postgresql-9.4_9.4.12-1.pgdg80+1_i386.deb (--unpack): subprocess new pre-removal script returned error exit status 102 Errors were encountered while processing: /var/cache/apt/archives/postgresql-9.4_9.4.12-1.pgdg80+1_i386.deb E: Sub-process /usr/bin/dpkg returned an error code (1) --- I suspect that the problem is probably related to these changes: postgresql-common updated to version 183.pgdg+1: * debian/maintscripts-functions: Unconditionally call invoke-rc.d, and drop path names from program invocations (Standards-Version 4.0.0). * debian/maintscripts-functions: Use 'invoke-rc.d "postgresql(at)$ver-*" stop' to prevent upgrading/removing server packages from stopping other major version clusters when running systemd. (Closes: #809811) --- Under Debian Jessie these cause the following test at line 467 of /usr/sbin/invoke-rc.d to fail: if [ -n "$is_upstart" ] || testexec "${INITDPREFIX}${INITSCRIPTID}" ; then This line effectively checks if we're running upstart (no, we're using systemd) or if there is an executable in /etc/init.d. Adding a 'set -x' to the script shows us it checks: testexec /etc/init.d/postgresql@9.4-* Which doesn't exist and this the program exists with code 102, causing the prerm scrip to fail in turn. --- Running: touch '/etc/init.d/postgresql@9.4-*' chmod +X '/etc/init.d/postgresql@9.4-*' Causes the upgrade to succeed. Regards, Justin Ossevoort
Re: Justin Ossevoort 2017-07-10 <a11f802e-f4ca-91ac-122c-49be2bf6a1ed@quarantainenet.nl> > This line effectively checks if we're running upstart (no, we're using > systemd) or if there is an executable in /etc/init.d. Adding a 'set -x' to > the script shows us it checks: > > testexec /etc/init.d/postgresql@9.4-* > > Which doesn't exist and this the program exists with code 102, causing the > prerm scrip to fail in turn. Oh, ok. I tested several combinations of OS and with/without systemd, but apparently missed jessie+systemd. Will investigate and publish a fix. Thanks for the report, Christoph
Re: To Justin Ossevoort 2017-07-10 <20170710142125.5tbderithauaiklb@msg.df7cb.de> > Re: Justin Ossevoort 2017-07-10 <a11f802e-f4ca-91ac-122c-49be2bf6a1ed@quarantainenet.nl> > > This line effectively checks if we're running upstart (no, we're using > > systemd) or if there is an executable in /etc/init.d. Adding a 'set -x' to > > the script shows us it checks: > > > > testexec /etc/init.d/postgresql@9.4-* > > > > Which doesn't exist and this the program exists with code 102, causing the > > prerm scrip to fail in turn. > > Oh, ok. I tested several combinations of OS and with/without systemd, > but apparently missed jessie+systemd. Will investigate and publish a > fix. Luckily the fix was pretty easy, namely using deb-systemd-invoke instead of invoke-rc.d. New packages are available via the *-pgdg-testing suites, it would be nice if you could give them a try. I'll do some more testing tomorrow and then put them live. https://anonscm.debian.org/cgit/pkg-postgresql/postgresql-common.git/commit/?id=1a2173a00f7296534d50257d917343117448b39c Thanks again for the report and the analysis, Christoph
Re: [pgsql-pkg-debian] Problems upgrading postgresql-9.4 under DebianJessie
От
Justin Ossevoort
Дата:
Hello Cristoph, Thanks for the quick action. I have installed postgresql-common and postgresql-client-common from pgdg-testing and made sure I had no lingering '/etc/init.d/postgresql@9.4-*' file. I then succesfully downgraded and upgraded the postgresql-9.4 package without errors, so the fix appears to have solved our problems. Regards, Justin Ossevoort On 11-07-17 20:38, Christoph Berg wrote: > Re: To Justin Ossevoort 2017-07-10 <20170710142125.5tbderithauaiklb@msg.df7cb.de> >> Re: Justin Ossevoort 2017-07-10 <a11f802e-f4ca-91ac-122c-49be2bf6a1ed@quarantainenet.nl> >>> This line effectively checks if we're running upstart (no, we're using >>> systemd) or if there is an executable in /etc/init.d. Adding a 'set -x' to >>> the script shows us it checks: >>> >>> testexec /etc/init.d/postgresql@9.4-* >>> >>> Which doesn't exist and this the program exists with code 102, causing the >>> prerm scrip to fail in turn. >> >> Oh, ok. I tested several combinations of OS and with/without systemd, >> but apparently missed jessie+systemd. Will investigate and publish a >> fix. > > Luckily the fix was pretty easy, namely using deb-systemd-invoke > instead of invoke-rc.d. New packages are available via the > *-pgdg-testing suites, it would be nice if you could give them a try. > > I'll do some more testing tomorrow and then put them live. > > https://anonscm.debian.org/cgit/pkg-postgresql/postgresql-common.git/commit/?id=1a2173a00f7296534d50257d917343117448b39c > > Thanks again for the report and the analysis, > Christoph >
Re: Justin Ossevoort 2017-07-12 <825f8b83-d727-f79f-0a5e-173f499f78f1@quarantainenet.nl> > Hello Cristoph, > > Thanks for the quick action. > > I have installed postgresql-common and postgresql-client-common from > pgdg-testing and made sure I had no lingering '/etc/init.d/postgresql@9.4-*' > file. > > I then succesfully downgraded and upgraded the postgresql-9.4 package > without errors, so the fix appears to have solved our problems. Thanks for the test! I just promoted the package, should hit the mirrors right now. Christoph