Thursday, January 31, 2008

Upgrade problems for sysvinit (2.86.ds1-16 | 2.86.ds1-19)

Update: Post out-of-date …. don’t flame me

Those of you who followed the earlier the fix for sysvinit (2.86.ds1-16) upgrade problem given below should read the follow-up comments that were aired on both debian-devel and debian-user.

— Petter Reinholdtsen Sat, 9 Sep 2006 20:12:47 +0200
In version 2.86.ds1-16 of the sysv-rc package released 2006-09-06, the update-rc.d script was broken. When used to to update symlinks it would remove all symlinks for a init.d script if such symlinks existed, and add them if they were missing. This broke all packages being upgraded after the new version was installed, as their init.d scripts will no longer be executed. This problem was fixed in version 2.86.ds1-18, but the broken packages will stay broken until their postinst scripts are executed again.

Those with packages being broken from this bug can fix it by using ‘apt-get —reinstall install package’ on the affected packages. A quick way out is to reinstall all the packages with scripts in /etc/init.d/.

for p in `dpkg -S /etc/init.d/*|cut -d: -f1|sort -u`; do
apt-get —reinstall install -y $p
done

Read the Petter Reinholdtsen’s post

sysvinit (2.86.ds1-19) unstable; urgency=low

The script proposed below is dangerous, as it had a problem
with removed but not purged packages. If such packages had
files in /etc/init.d/, it could end up trying to remove quite a lot of packages. This version check to make sure the package is installed before trying to reinstall it, as well as making sure the admin is asked for every package.

for p in `dpkg -S /etc/init.d/*|cut -d: -f1|sort -u`; do if dpkg —get-selections $p | grep -qw install ; then echo reinstalling $p apt-get —reinstall install $p fi done

To avoid the question, add -y as an argument for apt-get.
An alternative to reinstalling all these packages is to look in /var/log/dpkg.log for the packages that was installed and upgraded between sysv-rc version 2.86.ds1-16 and version 2.86.ds1-18, and only reinstall these. A script to do this and update the system is provided in /etc/init.d/.

/usr/share/doc/sysv-rc/update-rc.d-recover

Please use it to update your installation if you were upgrading from one of the broken versions of sysv-rc.

No comments:

Post a Comment

You can leave a comment here using your Google account, OpenID or as an anonymous user.

Popular Posts