46a14ae0e6
Currently the dpkg element fakes start-stop-daemon, initctl and invoke-rc.d to stop dpkg from starting a bunch of daemons in the chroot. This is problematic when packages use service, start, stop or restart commands. This patch uses a policy-rc.d instead of faking invoke-rc.d to achieve the same thing. This approach now aligns exactly with debootstrap. Without this patch DIB runs on some debian distributions fail when trying to umount the chroot loop device as there are daemons running. The log will now show "invoke-rc.d: policy-rc.d denied execution of start." instead of "Warning: Fake invoke-rc.s called, doing nothing." Change-Id: I6db192127aca19b5b7915179b781f5192078bfc7 Related-Bug: #1211564
34 lines
910 B
Bash
Executable File
34 lines
910 B
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
[ -n "$TARGET_ROOT" ]
|
|
|
|
# Prevent package installs from starting daemons
|
|
sudo mv $TARGET_ROOT/sbin/start-stop-daemon $TARGET_ROOT/sbin/start-stop-daemon.REAL
|
|
sudo dd of=$TARGET_ROOT/sbin/start-stop-daemon <<EOF
|
|
#!/bin/sh
|
|
echo
|
|
echo "Warning: Fake start-stop-daemon called, doing nothing"
|
|
EOF
|
|
sudo chmod 755 $TARGET_ROOT/sbin/start-stop-daemon
|
|
|
|
if [ -f $TARGET_ROOT/sbin/initctl ]
|
|
then
|
|
sudo mv $TARGET_ROOT/sbin/initctl $TARGET_ROOT/sbin/initctl.REAL
|
|
sudo dd of=$TARGET_ROOT/sbin/initctl <<EOF
|
|
#!/bin/sh
|
|
echo "initctl (tripleo 1.0)"
|
|
echo "Warning: Fake initctl called, doing nothing"
|
|
EOF
|
|
sudo chmod 755 $TARGET_ROOT/sbin/initctl
|
|
fi
|
|
|
|
sudo dd of=$TARGET_ROOT/usr/sbin/policy-rc.d <<EOF
|
|
#!/bin/sh
|
|
# 101 Action not allowed. The requested action will not be performed because
|
|
# of runlevel or local policy constraints.
|
|
exit 101
|
|
EOF
|
|
sudo chmod 755 $TARGET_ROOT/usr/sbin/policy-rc.d
|