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

Bug#845563: apt-get update which ends up in grub-probe loops near Stack.pm uninitialized value



Package: apt
Version: 1.0.9.8.3
Severity: important

Dear Maintainer,

*** Reporter, please consider answering these questions, where appropriate ***

   * What led up to the situation?
   * What exactly did you do (or not do) that was effective (or
     ineffective)?
   * What was the outcome of this action?
   * What outcome did you expect instead?

*** End of the template - remove these template lines ***


-- Package-specific info:

-- /etc/apt/preferences --

# D109394: See $MISC/linux-install/common/wheezy/etc/apt/preferences for
# the reason why Pin-Priority for later releases is being left in
# here even though they've been removed from etc/apt/sources.list

# The idea of the Pin-Priority for later releases is to allow
# people to install packages from those releases with apt-get -t <release>.
# This is based on the file from squeeze so the Pin-Priority's are set
# in a similar manner to squeeze.
# We could have left that out or set APT::Default-Release
# in apt.conf but let's keep it all in one place.

Package: *
Pin: release a=unstable
Pin-Priority: 50

Package: *
Pin: release n=jessie
Pin-Priority: 990

Package: *
Pin: release n=jessie-updates
Pin-Priority: 990

Package: *
Pin: release n=jessie-backports
Pin-Priority: 980


-- (/etc/apt/sources.list present, but not submitted) --


-- System Information:
Debian Release: 8.6
  APT prefers stable-updates
  APT policy: (990, 'stable-updates'), (990, 'stable'), (500, 'oldstable-updates'), (500, 'oldoldstable'), (500, 'stable'), (500, 'oldstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.7.0-0.bpo.1-amd64 (SMP w/12 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages apt depends on:
ii  debian-archive-keyring  2014.3
ii  gnupg                   1.4.18-7+deb8u3
ii  libapt-pkg4.12          1.0.9.8.3
ii  libc6                   2.19-18+deb8u6
ii  libgcc1                 1:4.9.2-10
ii  libstdc++6              4.9.2-10

apt recommends no packages.

Versions of packages apt suggests:
pn  apt-doc     <none>
ii  aptitude    0.6.11-1+b1
ii  dpkg-dev    1.17.27
ii  python-apt  0.9.3.12
ii  synaptic    0.81.2
ii  wajig       2.17

-- no debconf information

I've not included my host /etc/apt/sources.list etc, because this is occuring in a (Docker) container and these are the wrong ones.

In brief. If I attempt to build a docker container using apt-get install , and that process kicks off a grub-probe. The probe
fails (because we are in a container)  not a surprise. However this causes apt-get install to loop, presumably in the grub specific
setup scripts. Note apt-get install is being run with  -y  --allow-unauthenticated . I can work around the problem using:

yes | apt-get install --force-yes --allow-unauthenticated -y lttng-modules-dkms || echo "Ignore failure, hope that's OK"

The 'y' being piped in resolves it.

In detail:

docker build -t isbroken -f BrokenDockerfile .
Sending build context to Docker daemon 347.6 kB
Step 1 : FROM debian:wheezy
 ---> 337681dc4ec4
Step 2 : MAINTAINER gvetterlein@xxx.com
 ---> Using cache
 ---> 377d0e4374da
Step 3 : COPY sources.list /etc/apt/sources.list.d/HSP.list
 ---> Using cache
 ---> e44be478c8f1
Step 4 : COPY 98localmirror /etc/apt/apt.conf.d/98localmirror
 ---> Using cache
 ---> 4b62b3256281
Step 5 : RUN apt-get update
 ---> Running in ffa7376b5160
 ... < elided>.....

debconf: falling back to frontend: Teletype

Creating config file /etc/default/grub with new version
grub-probe: error: cannot find a device for / (is /dev mounted?).
grub-probe: error: cannot find a device for /boot (is /dev mounted?).
grub-probe: error: cannot find a device for /boot/grub (is /dev mounted?).
Configuring grub-pc
-------------------

You chose not to install GRUB to any devices. If you continue, the boot loader 
may not be properly configured, and when this computer next starts up it will 
use whatever was previously in the boot sector. If there is an earlier version 
of GRUB 2 in the boot sector, it may be unable to load modules or handle the 
current configuration file.

If you are already using a different boot loader and want to carry on doing so, 
or if this is a special environment where you do not need a boot loader, then 
you should continue anyway. Otherwise, you should install GRUB somewhere.

Continue without installing GRUB? 
Use of uninitialized value $_[1] in join or string at /usr/share/perl5/Debconf/DbDriver/Stack.pm line 111.
grub-probe: error: cannot find a device for / (is /dev mounted?).
grub-probe: error: cannot find a device for /boot (is /dev mounted?).
grub-probe: error: cannot find a device for /boot/grub (is /dev mounted?).
Use of uninitialized value $_[1] in join or string at /usr/share/perl5/Debconf/DbDriver/Stack.pm line 111.
You chose not to install GRUB to any devices. If you continue, the boot loader 
may not be properly configured, and when this computer next starts up it will 
use whatever was previously in the boot sector. If there is an earlier version 
of GRUB 2 in the boot sector, it may be unable to load modules or handle the 
current configuration file.

If you are already using a different boot loader and want to carry on doing so, 
or if this is a special environment where you do not need a boot loader, then 
you should continue anyway. Otherwise, you should install GRUB somewhere.

Continue without installing GRUB? 
grub-probe: error: cannot find a device for / (is /dev mounted?).
grub-probe: error: cannot find a device for /boot (is /dev mounted?).
grub-probe: error: cannot find a device for /boot/grub (is /dev mounted?).
Use of uninitialized value $_[1] in join or string at /usr/share/perl5/Debconf/DbDriver/Stack.pm line 111.
You chose not to install GRUB to any devices. If you continue, the boot loader 
may not be properly configured, and when this computer next starts up it will 
use whatever was previously in the boot sector. If there is an earlier version 
of GRUB 2 in the boot sector, it may be unable to load modules or handle the 
current configuration file.

....

This (above) is a cut-down-to-reproduce example:


gvetterlein@lyster:~/work/obsidian-1.0/infrastructure/HSPbuild$ cat BrokenDockerfile
FROM debian:wheezy

COPY broken.sources.list /etc/apt/sources.list.d/typical.list
COPY 98localmirror /etc/apt/apt.conf.d/98localmirror

RUN apt-get update       -y  --allow-unauthenticated 
RUN apt-get dist-upgrade -y  --allow-unauthenticated 

#RUN apt-get install -y  --allow-unauthenticated  lttng-modules-dkms
RUN apt-get install -y  --allow-unauthenticated  grml-rescueboot

## This works around it: RUN yes | apt-get install --force-yes --allow-unauthenticated -y grml-rescueboot || echo "Ignore failure, hope that's OK"

CMD [ "/bin/bash" ]

gvetterlein@lyster:~/work/obsidian-1.0/infrastructure/HSPbuild$ cat broken.sources.list

deb http://ftp.us.debian.org/debian/ wheezy main non-free contrib

deb-src http://ftp.us.debian.org/debian/ wheezy main non-free contrib

deb http://security.debian.org/ wheezy/updates main contrib non-free

deb-src http://security.debian.org/ wheezy/updates main contrib non-free
gvetterlein@lyster:~/work/obsidian-1.0/infrastructure/HSPbuild$ 
gvetterlein@lyster:~/work/obsidian-1.0/infrastructure/HSPbuild$ cat 98localmirror 
Acquire
{
	Check-Valid-Until "false";
}

I originally hit this bug with another unrelated package in the apt-get install line, but it was on not
inthe standrad repo. So I've produced this example with  grml-rescueboot. I simply used that as
a pakaged which provoked the grub-probe.

To recap: I'm not expecting apt-get install ... grml-rescueboot to work. In
reality the package in question was a long way down the dependency list. I'm
just expecting it to complete (preferably with a zero return code) so I can
complete the docker image build.


Reply to: