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