[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#668001: Also can't install sysvinit-core instead of systemd, despite patch



Hi,

I applied the patch from #557322 (noting that $exclude should apparently be
$EXCLUDE now) but debootstrap still installs systemd even though nothing
depends on it and I'm excluding it explicitly.

My command line is:

debootstrap --arch=amd64 --components=main,contrib,non-free \
	--include=zsh,less,locales,sysvinit-core \
	--exclude=systemd,systemd-sysv sid \
	/t http://http.debian.net/debian \
	/usr/share/debootstrap/scripts/sid

I added set -x to the debootstrap script to see what it set $required to,
and it doesn't include systemd now:

+ required=base-files base-passwd bash bsdutils coreutils dash debconf debconf-i18n debianutils diffutils dpkg e2fslibs e2fsprogs findutils gcc-4.7-base gcc-4.8-base gcc-4.9-base grep gzip hostname init initscripts libacl1 libattr1 libblkid1 libc-bin libc6 libcomerr2 libgcc1 liblocale-gettext-perl liblzma5 libmount1 libncurses5 libpam-modules libpam-modules-bin libpam-runtime libpam0g libpcre3 libselinux1 libsepol1 libss2 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libtinfo5 libuuid1 login lsb-base mawk mount multiarch-support ncurses-base ncurses-bin passwd perl-base sed sensible-utils startpar sysv-rc sysvinit-utils tar tzdata util-linux zlib1g 

$base doesn't contain it either:

+ base=adduser apt apt-utils bsdmainutils cpio cron debian-archive-keyring dmidecode gnupg gpgv groff-base ifupdown init-system-helpers iproute2 iptables iputils-ping isc-dhcp-client isc-dhcp-common kmod less libapt-inst1.5 libapt-pkg4.12 libboost-iostreams1.54.0 libboost-iostreams1.55.0 libbz2-1.0 libgdbm3 libkmod2 libncursesw5 libnewt0.52 libpipeline1 libpopt0 libprocps3 libreadline6 libsigc++-2.0-0c2a libslang2 libssl1.0.0 libstdc++6 libudev1 libusb-0.1-4 libxtables10 locales logrotate man-db manpages nano net-tools netbase netcat-traditional nfacct procps readline-common rsyslog sysvinit-core tasksel tasksel-data traceroute udev vim-common vim-tiny wget whiptail zsh

But still it creeps in somehow, and further output doesn't tell me how.
These are the occurrences of systemd in the debootstrap log:

Selecting previously unselected package init.
dpkg: regarding .../archives/init_1.21_amd64.deb containing init, pre-dependency problem:
 init pre-depends on systemd-sysv | sysvinit-core | upstart
  systemd-sysv is not installed.
  sysvinit-core is not installed.
  upstart is not installed.

Not a problem, we're installing sysvinit-core, right? Wrong:

Selecting previously unselected package systemd.
dpkg: regarding .../systemd_215-5+b1_amd64.deb containing systemd, pre-dependency problem:
 systemd pre-depends on libgcrypt20 (>= 1.6.1)
  libgcrypt20:amd64 is unpacked, but has never been configured.

So how does this happen? My guess is the dependency resolver gets confused by the dependencies of init:

Package: init
Pre-Depends: systemd-sysv | sysvinit-core | upstart

Specifically, this bit:

        if ($in and (/^Depends: (.*)$/ or /^Pre-Depends: (.*)$/)) {
                for $d (split /\s*,\s*/, $1) {
                        $d =~ s/\s*[|].*$//;
                        $d =~ s/\s*[(].*[)]\s*//;
                        push @d, $d;
                }
        }

I don't read perl very well, but it seems to me "$d =~ s/\s*[|].*$//;"
discards everything from the first pipe character to the end of the line;
i.e. as far as debootstrap is concerned, init (pre-)depends on systemd-sysv
only.

A possible way of fixing this would be to remove excluded packages from
depends and pre-depends lines before processing the lines.

Andras

-- 
                      CONgress (n) - Opposite of PROgress


Reply to: