0

I have a jessie debian system (devuan to be more precise). I now try to get packages from the jessie-backports and jessie-security releases.

But I do not understand what apt is doing.

That's what I really try to figure out: What is apt trying to tell me here ?

I know how to force an upgrade to ASCII. I now also managed to force my system to use jessie-backports; I still have no clue what apt tried to tell me in the description below.

I want to figure out what apt's problem was, because I am quite certain I will see the same kind of problem in the future (actually I just did on another system). So whoever has a better understanding of apt than me, if you know: please try to explain what happens...

I first of all start with gcc:

# apt-cache policy libgcc1 gcc-4.9-base
libgcc1:
  Installed: 1:4.9.2-10
  Candidate: 1:4.9.2-10+deb8u1
  Version table:
     1:6.3.0-18+deb9u1 0
        500 http://de.mirror.devuan.org/merged/ ascii/main amd64 Packages
     1:4.9.2-10+deb8u1 0
        991 http://de.mirror.devuan.org/merged/ jessie-security/main amd64 Packages
 *** 1:4.9.2-10 0
        600 http://de.mirror.devuan.org/merged/ jessie/main amd64 Packages
        100 /var/lib/dpkg/status
gcc-4.9-base:
  Installed: 4.9.2-10
  Candidate: 4.9.2-10+deb8u1
  Version table:
     4.9.2-10+deb8u1 0
        991 http://de.mirror.devuan.org/merged/ jessie-security/main amd64 Packages
 *** 4.9.2-10 0
        600 http://de.mirror.devuan.org/merged/ jessie/main amd64 Packages
        100 /var/lib/dpkg/status

As you can see I have some pinning in place. From what I understood I thought that "991" means use this package as long as it is newer. Here is my full pinning configuration:

/etc/apt/preferences.d# cat *

Package: *
Pin: release a=jessie-backports
Pin-Priority: 991

Package: *
Pin: release a=jessie-security
Pin-Priority: 991

Package: *
Pin: release a=stable
Pin-Priority: 600

Package: *
Pin: release a=ascii
Pin-Priority: 550

Package: *
Pin: release a=jessie-updates
Pin-Priority: 560

It also seams the "Candidate:" lines indicate that apt will now switch to the slightly newer package from "jessie-security".

So first surprise:

# apt-get install -s gcc-4.9-base
The following packages have unmet dependencies:
 libgcc1 : Depends: gcc-4.9-base (= 4.9.2-10) but 4.9.2-10+deb8u1 is to be installed

I thought with the above pinning apt would automatically pull in libgcc1 from jessie-security and so would resolve the above unmet dependency.

What's wrong here ?

Next problem:

# apt-get install -s libgcc1 gcc-4.9-base
The following packages were automatically installed and are no longer required:
  antiword crda cups-pk-helper eclipse-cdt-jni eclipse-platform-data
  espeak-data fastjar firebird2.5-common firebird2.5-common-doc
  fonts-freefont-ttf fonts-opensymbol gir1.2-atk-1.0 gir1.2-atspi-2.0
  gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0
...

WTF ?

That's for sure not true. So obviously I completely do not understand something here. Even worse:

The following extra packages will be installed:
  cpp-4.9 gettext-base lib32gcc1 lib32stdc++6 libatomic1 libegl1-mesa-drivers
  libgfortran3 libgomp1 libitm1 libobjc4 libosgi-compendium-java libquadmath0
  libsoxr0
Suggested packages:
  gcc-4.9-locales libosgi-compendium-java-doc
The following packages will be REMOVED:
  adwaita-icon-theme ant ant-optional apt apt-file apt-listchanges
  apt-show-versions apt-transport-https apt-utils aptitude aspectj aspell
  aspell-de aspell-en astyle build-essential ca-certificates-java chromium
  claws-mail claws-mail-i18n claws-mail-pdf-viewer claws-mail-pgpinline
...

So this "apt-get install" command will remove half of my system.

I do not understand at all here what's going on...

Can someone please explain ?

EDIT: It was mentioned that I should not use mixed releases. I do not believe that this has anything to do with my question. But just to be sure: I removed all ASCII sources and removed all ASCII related pinning and downgraded the few packages I had from ASCII back to JESSIE. All of this does not change a thing: If I execute

apt-get install -s libgcc1 gcc-4.9-base

apt reports that it will remove half of my system.

Why ?

And there is also the first part of the question: Why does apt not auto resolve the dependency on libgcc1 if I just use

apt-get install -s gcc-4.9-base
  • 1
    Could you edit your question to show your pinning configuration? – Stephen Kitt Jun 14 '18 at 11:25
  • Of course: I just edited the post. I probably do not really understand what I am doing here... – Ingo Blackman Jun 14 '18 at 11:29
  • 1
    ASCII is based on debian Stretch , you should not mix it with jessie. – GAD3R Jun 14 '18 at 11:32
  • Yes: That's why it has the lowest pinning and there are almost no packages from ASCII on my system. This also does not answer any of the questions I asked, like "Why does apt not auto update libgcc1, when I try to install gcc-4.9-base ?" Especially since both of these packages are from jessie (NOT ASCII, NOT STRETCH). – Ingo Blackman Jun 14 '18 at 13:22
3

You have a mixed sources.list : Jessie and ascii (stretch).

Remove ascii from your sources.list

Remove the following lines from your preferences file:

Package: *
Pin: release a=ascii
Pin-Priority: 550

Run :

apt-get update
apt-get dist-upgrade

What is an unmet dependencies?

If some dependencies is not met during a package installation , the installation will fail. The libgcc1 (1:6.3.0-18+deb9u1) depends on a exact version of gcc-6-base v= 6.3.0-18+deb9u1. The current installed version is 6.3.0-18

How to solve the unmet dependencies?

In your case append a pin priority 1001 to the old stable release, it will upgrade/downgrade your packages to jessie.

Package: *
Pin: release a=jessie-security
Pin-Priority: 1001

Package: *
Pin: release a=stable
Pin-Priority: 1001

Package: *
Pin: release a=jessie-updates
Pin-Priority: 1001

Then upgrade your package.

apt-get update
apt-get dist-upgrade

In some cases you should use the exact version of the package to be installed to solve the unmet dependencies problem:

apt-get install gcc-4.9-base=4.9.2-10+deb8u1
apt-get install libgcc1

Why a lot of packages will be removed ?

apt install a package including its dependencies , if the package will be removed, those package will become unnecessary and automatically removed.

APT tells you which packages are no longer needed

Over time, some of those automatically installed packages become unnecessary because the packages that depended on them no longer do. It might be that they are using a newer version of the same library, or they switched to use something else, or they are able to do the task themselves.


To upgrade devuan to ascii , edit your /etc/apt/sources.list by adding only the following lines:

deb http://pkgmaster.devuan.org/merged ascii main
deb http://pkgmaster.devuan.org/merged ascii-updates main
deb http://pkgmaster.devuan.org/merged ascii-security main
deb http://pkgmaster.devuan.org/merged ascii-backports main

Remove the /etc/apt/preferences file then run

apt-get upgrade devuan-keyring
apt-get update
apt-get dist-upgrade

Upgrade from Devuan Jessie to Ascii

  • This does not work, because of failed dependencies and actually does not help at all. Because it does not answer any of the questions I asked. – Ingo Blackman Jun 14 '18 at 13:20
  • 2
    I think it does answer this one: "What's wrong here ?". I'd go for a full upgrade to ascii, as it's just been released as stable. – Gerard H. Pille Jun 14 '18 at 14:01
  • @IngoBlackman To solve the dependencies problem you should remove the ascii url , if you need to upgrade to ascii you can see the edit. – GAD3R Jun 14 '18 at 18:10
  • @GAD3R: Yes I did that. But in the end even after I removed all ASCII links (and downgraded the few packages I had), at the end the problem persisted as described in the question: If I execute "apt-get install -s libgcc1 gcc-4.9-base". apt reports that it will remove half of my system. Why ? That was the question. – Ingo Blackman Jun 15 '18 at 12:46
  • Thanks for the mentioning how to upgrade to ASCII. But that's really not the question. I try to understand how apt works and what the output means. I still cannot figure that out. Similar to the famous "The following packages have been kept back". I read tons of explanations about that and none of them make sense. Similar to why apt tries to remove half of my system if I try to upgrade "libgcc1 and gcc-4.9-base". – Ingo Blackman Jun 15 '18 at 12:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.