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

Re: APT 1.4.8 unable to resolve dependencies (possible regression wrt 1.4.6)



On 2018-02-07 13:48, Julian Andres Klode wrote:
On Wed, Feb 07, 2018 at 01:13:50PM +0100, Lukasz Walewski wrote:
Hi,

I build Debian-based filesystem images for embedded devices. By "image" I mean a regular Debian 9.x (stretch) filesystem created with debootstrap with some 3rd party packages installed on top of it. The filesystem is converted
into a *.iso image and burned into the NAND of an embedded device.

The 3rd party software shipped with an image features some proprietary Java application, that is (currently) compatible with JRE version 7 only, thus I need openjdk-7-jre package installed in my images. Since openjdk-7-jre is not available in Debian 9, I use Debian 8.x (jessie) mirror as a second
sources.list entry. So what I do is basically:

1. debootstrap from an official Debian stable mirror
2. add official Debian oldstable mirror to /etc/apt/sources.list
3. apt-get update
4. apt-get install openjdk-7-jre

The above procedure used to work with apt 1.4.6, i.e. the packages that openjdk-7-jre depends upon (214 additional packages) were pulled in and
installed, which is what I expected:

root@stretch-i386:~# apt -v
apt 1.4.6 (i386)

root@stretch-i386:~# apt-get install openjdk-7-jre
Reading package lists... Done
Building dependency tree... Done
The following additional packages will be installed:
[...]
The following NEW packages will be installed:
[...]
The following packages will be upgraded:
[...]
1 upgraded, 214 newly installed, 0 to remove and 0 not upgraded.
Need to get 146 MB of archives.
After this operation, 529 MB of additional disk space will be used.
Do you want to continue? [Y/n]


With apt 1.4.8 this does not work anymore - apt cannot resolve the
dependencies and fails:

root@stretch-i386:~# apt -v
apt 1.4.8 (i386)

root@stretch-i386:~# apt-get install openjdk-7-jre
Reading package lists... Done
Building dependency tree... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
openjdk-7-jre : Depends: openjdk-7-jre-headless (= 7u111-2.6.7-1~deb8u1)
but it is not going to be installed
E: Unable to correct problems, you have held broken packages.


What has changed from apt 1.4.6 to 1.4.8 that rendered my use case
unsupported? Is this behavior desired? What can I do to continue with my
workflow which is now broken?

There were no changes that could cause that.

Yes, you are right, it's not apt version, it's apt cache. I am able to reproduce the failing scenario with apt 1.4.6 by taking an image from July 2017 (that still contains apt 1.4.6) and simply running "apt-get update" there.

Apparently the content of Debian stable changed since July 2017 in a way, that makes it impossible to resolve these dependencies automatically. I figured out, however, that I can help apt by specifying them explicitly:

root@stretch-i386:~# apt-get install openjdk-7-jre openjdk-7-jre-headless tzdata-java tzdata=2017c-0+deb8u1

Then it works...

Could you advise, what would be the proper way of handling such scenarios in general? - I can imagine, in some months the dependencies among at-that-time-current versions of Debian packages will change again and I will end up in a similar problem as described above. How to avoid such dependency hell in the future?

Best regards,
Lukasz


Reply to: