← Back to team overview

touch-packages team mailing list archive

[Bug 1325142] Re: failure to update libpam-systemd in 14.04 due to missing logind init script

 

I have investigated this some more. I will provide a solution for UCK
(Ubuntu Customization Kit) but it might apply to other contexts as well.

It is actually 3 distinct issues:

The main problem is the missing init scripts. This is a result from UCK
deactivating initctl (see also in the output of uck-chroot-rootfs:
"Deactivating initctl..."). This makes invoke-rc.d fail when trying to
run upstart jobs (Ubuntu uses upstart (not init) for the services in
question). The "/etc/init.d/* not found" is a followup error and
actually misleading.

The fix described previously (modifying .prerm/.postinst files) does
work, but it's better to fix it globally and not for each affected
package. I found it's best to do it right in invoke-rc.d. Just change
all "exit 100" to "exit 0" in /usr/sbin/invoke-rc.d (in the chroot!).
That will generally ignore missing init scripts. Don't forget to revert
the change afterwards.

The second problem is the missing /scripts directory ("Can't open
/scripts/casper-functions" error). This can be fixed with the following
command (in the chroot!):

  ln -s /usr/share/initramfs-tools/scripts /scripts

The third problem is that the UCK applies a hack on the zz-update-grub
scripts which in my case creates an invalid syntax and thus breaks the
upgrade as well (dependency problems on the linux-image-generic
package). The fix is described in my comment #10.

In order to avoid applying these patches manually each time, I modified
UCK to apply it when entering chroot, and revert it when exiting
(amongst the other stuff that UCK does in these stages). It's all in
/usr/lib/uck/remaster-live-cd.sh.

I made a fork of the UCK source code on github and applied the changes.
You may just get the follwing file

  https://raw.githubusercontent.com/jox/UCK/master/libraries/remaster-
live-cd.sh

and replace your /usr/lib/uck/remaster-live-cd.sh with it (this time
*not* in the chroot...).

You might also apply the attached patch as follows:

  $ cd /usr/lib/uck
  $ sudo patch -p2 remaster-live-cd.sh.bak < \
      /path/to/fix-uck-missing-initd-scripts-1.patch
 
(The path in the patch is different since it is from the source code. Running patch with -p2 from the directory the file is located will apply it properly.)

You may view the changes on github as well:

Fixed missing /scripts dir in chroot.
https://github.com/jox/UCK/commit/2f14005cd47845d7496e6a2b1bdd72a553fd6be2

Fixed "grub-probe postinst/postrm hack" in chroot.
https://github.com/jox/UCK/commit/d2e2ffbbae80392357b8bf442d28678f9298c52a

Added hack to invoke-rc.d in chroot to ignore missing init scripts.
https://github.com/jox/UCK/commit/4c8277459c42f089fd73e6ae9a25d3e73177f491

Hope this helps


** Patch added: "Patch to apply fixes to /usr/lib/uck/remaster-live-cd.sh"
   https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1325142/+attachment/4190563/+files/fix-uck-missing-initd-scripts-1.patch

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1325142

Title:
  failure to update libpam-systemd in 14.04 due to missing logind init
  script

Status in “systemd” package in Ubuntu:
  Fix Released
Status in “systemd” source package in Trusty:
  Triaged
Status in “systemd” source package in Utopic:
  Fix Released

Bug description:
  Hi,

  while running inside an i386 lubuntu 14.04 chroot, upgrading libpam-
  systemd to version 204-5ubuntu20.2 fails leaving dpkg in a broken
  state. 'apt-get -f install' from within the chroot will not fix it,
  but if the build is made bootable and put into a iso/VM you can
  recover that way in a live session.

  the problem seems to be the /var/lib/dpkg/info/libpam-systemd:i386.prerm script failing to bring down the logind daemon with 'invoke-rc.d systemd-logind stop', because invoke-rd.d is only looking for the /etc/init.d/ script (doesn't exist) and not /etc/init/systemd-logind.conf (does exist).
  ?

  
  Reading package lists...
  Building dependency tree...
  Reading state information...
  The following packages will be upgraded:
    libpam-systemd
  1 upgraded, 0 newly installed, 0 to remove and 113 not upgraded.
  3 not fully installed or removed.
  Need to get 0 B/25.2 kB of archives.
  After this operation, 1024 B of additional disk space will be used.
  (Reading database ... 113986 files and directories currently installed.)
  Preparing to unpack .../libpam-systemd_204-5ubuntu20.2_i386.deb ...
  invoke-rc.d: unknown initscript, /etc/init.d/systemd-logind not found.
  dpkg: warning: subprocess old pre-removal script returned error exit status 100
  dpkg: trying script from the new package instead ...
  invoke-rc.d: unknown initscript, /etc/init.d/systemd-logind not found.
  dpkg: error processing archive /var/cache/apt/archives/libpam-systemd_204-5ubuntu20.2_i386.deb (--unpack):
   subprocess new pre-removal script returned error exit status 100
  invoke-rc.d: unknown initscript, /etc/init.d/systemd-logind not found.
  dpkg: error while cleaning up:
   subprocess installed post-installation script returned error exit status 100
  Errors were encountered while processing:
   /var/cache/apt/archives/libpam-systemd_204-5ubuntu20.2_i386.deb
  E: Sub-process /usr/bin/dpkg returned an error code (1)

  
  Our build logs available upon request, but the scripts to setup the chroot to recreate it are here:
    https://trac.osgeo.org/osgeo/browser/livedvd/gisvm/trunk/bin/build_chroot_nightly.sh
    https://trac.osgeo.org/osgeo/browser/livedvd/gisvm/trunk/bin/inchroot_nightly.sh

  
  In a web-search I notice a few others running into the same bug,

  chatter on irc at [18:10], http://irclogs.ubuntu.com/2013/05/28
  /%23ubuntu-devel.txt

  someone else's build log:
  https://launchpad.net/~qutim/+archive/qutim/+build/6039800

  launchpad bug #1323575 seems to be a duplicate of this one.

  
  perhaps related to older launchpad bug #1305395 ?

  note we are also suffering from a failure with update-initramfs, not sure of the root cause of that one but I thought I'd mention it in case they were related, since they both started happening about the same time, a couple weeks ago. (launchpad bug #1317602)
  It all worked ok after the inital releases of 14.04, so something to do with a package update since then.

  
  thanks,
  Hamish

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1325142/+subscriptions