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 ?
# 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 ...
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.
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