Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: How did I get into dependency hell and how do I get out?

120 views
Skip to first unread message

Hans

unread,
Jul 15, 2022, 12:10:05 PM7/15/22
to
Am Freitag, 15. Juli 2022, 17:47:30 CEST schrieb Ottavio Caruso:
I could install libpulse-dev without any issues. However, it depends on
libglib2.0-dev.

If you need to install libglib2.0, then it might interfere with the system.

I checked with aptitude and its ncurses surface (so I can see more), and the
system I am running, is debian/stable.

Hope this helps.

Best

Hans

> Hi,
>
>
> $ uname -a
> Linux e130 5.18.0-0.bpo.1-amd64 #1 SMP PREEMPT_DYNAMIC Debian
> 5.18.2-1~bpo11+1 (2022-06-14) x86_64 GNU/Linux
> $ cat /etc/debian_version
> 11.2
>
>
> $ apt-get -s install libpulse-dev
> NOTE: This is only a simulation!
> apt-get needs root privileges for real execution.
> Keep also in mind that locking is deactivated,
> so don't depend on the relevance to the real current situation!
> Reading package lists... Done
> Building dependency tree... Done
> Reading state information... 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:
> libglib2.0-dev : Depends: libglib2.0-0 (= 2.66.8-1) but 2.72.1-1 is to
> be installed
> Depends: libglib2.0-bin (= 2.66.8-1)
> Depends: libglib2.0-dev-bin (= 2.66.8-1)
> E: Unable to correct problems, you have held broken packages.
>
>
>
> $ apt-cache policy libglib2.0-0
> libglib2.0-0:
> Installed: 2.72.1-1
> Candidate: 2.72.1-1
> Version table:
> *** 2.72.1-1 100
> 100 /var/lib/dpkg/status
> 2.66.8-1 500
> 500 https://deb.debian.org/debian bullseye/main amd64 Packages
>
> $ apt-get -s -f install libglib2.0-0=2.66.8-1
> NOTE: This is only a simulation!
> apt-get needs root privileges for real execution.
> Keep also in mind that locking is deactivated,
> so don't depend on the relevance to the real current situation!
> Reading package lists... Done
> Building dependency tree... Done
> Reading state information... Done
> The following packages were automatically installed and are no longer
> required:
> apache2-bin bamfdaemon caja-common caja-eiciel caja-extensions-common
> caja-gtkhash caja-image-converter caja-open-terminal caja-sendto
> caja-wallpaper dconf-editor engrampa engrampa-common eom eom-common
> gir1.2-bamf-3 gir1.2-caja-2.0 gir1.2-eom-1.0 gir1.2-matepanelapplet-4.0
> gir1.2-pluma-1.0 gnome-system-tools gtkhash libapache2-mod-dnssd libapr1
> libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libb2-1 libbamf3-2
> libcpupower1 libcryptui0a libffi8 liblua5.3-0
> libmate-sensors-applet-plugin0
> libmate-slab0 libmate-window-settings1 liboobs-1-5 mate-applet-brisk-menu
> mate-applets mate-applets-common mate-backgrounds mate-calc
> mate-calc-common
> mate-control-center-common mate-indicator-applet
> mate-indicator-applet-common mate-media mate-media-common
> mate-notification-daemon-common mate-sensors-applet
> mate-sensors-applet-common mate-system-monitor mate-system-monitor-common
> mate-themes mate-tweak mate-user-share mate-user-share-common pluma
> pluma-common python-caja-common python3-caja seahorse-daemon
> Use 'apt autoremove' to remove them.
> The following additional packages will be installed:
> notification-daemon
> The following packages will be REMOVED:
> caja caja-admin caja-rename caja-seahorse debian-system-adjustments
> gstreamer1.0-packagekit gvfs-bin libglib2.0-bin mate-control-center
> mate-desktop-environment mate-desktop-environment-core
> mate-desktop-environment-extra mate-desktop-environment-extras
> mate-dock-applet mate-menu mate-notification-daemon mate-power-manager
> packagekit packagekit-tools
> The following NEW packages will be installed:
> notification-daemon
> The following packages will be DOWNGRADED:
> libglib2.0-0
> 0 upgraded, 1 newly installed, 1 downgraded, 21 to remove and 55 not
> upgraded.
> Remv mate-desktop-environment-extra [1.24.0+4]
> Remv mate-desktop-environment-extras [1.24.0+4]
> Remv mate-desktop-environment [1.24.0+4]
> Remv mate-desktop-environment-core [1.24.0+4]
> Remv caja-seahorse [1.18.5-1]
> Remv caja [1.24.0-1] [caja-admin:amd64 caja-rename:amd64 ]
> Remv caja-admin [0.0.3-1] [caja-rename:amd64 ]
> Remv caja-rename [20.1.26-1]
> Remv debian-system-adjustments [2022.03.09.1-elsie]
> Remv gstreamer1.0-packagekit [1.2.2-2]
> Remv gvfs-bin [1.46.2-1]
> Remv packagekit-tools [1.2.2-2]
> Remv packagekit [1.2.2-2]
> Remv mate-power-manager [1.24.2-1]
> Inst notification-daemon (3.20.0-4 Debian:11.4/stable [amd64])
> Remv mate-notification-daemon [1.24.1-1]
> Remv libglib2.0-bin [2.72.1-1] [mate-control-center:amd64
> mate-dock-applet:amd64 mate-menu:amd64 ]
> Remv mate-control-center [1.24.1-1] [mate-dock-applet:amd64
> mate-menu:amd64 ]
> Remv mate-dock-applet [20.04.0-1] [mate-menu:amd64]
> Remv mate-menu [20.04.3-1]
> Inst libglib2.0-0 [2.72.1-1] (2.66.8-1 Debian:11.4/stable [amd64])
> Conf libglib2.0-0 (2.66.8-1 Debian:11.4/stable [amd64])
> Conf notification-daemon (3.20.0-4 Debian:11.4/stable [amd64])
>
>
>
>
> Oops! How can I downgrade libglib2.0-0 without nuking most of the system?

Dan Ritter

unread,
Jul 15, 2022, 12:30:05 PM7/15/22
to
Ottavio Caruso wrote:
> Hi,
>
>
> $ uname -a
> Linux e130 5.18.0-0.bpo.1-amd64 #1 SMP PREEMPT_DYNAMIC Debian
> 5.18.2-1~bpo11+1 (2022-06-14) x86_64 GNU/Linux
> $ cat /etc/debian_version
> 11.2


Your kernel is from backports, so you have at least some
backports installed. What else is in your

/etc/apt/sources.list
/etc/apt/sources.list.d/*

> The following packages have unmet dependencies:
> libglib2.0-dev : Depends: libglib2.0-0 (= 2.66.8-1) but 2.72.1-1 is to be
> installed
> Depends: libglib2.0-bin (= 2.66.8-1)
> Depends: libglib2.0-dev-bin (= 2.66.8-1)
> E: Unable to correct problems, you have held broken packages.
>
>
>
> $ apt-cache policy libglib2.0-0
> libglib2.0-0:
> Installed: 2.72.1-1
> Candidate: 2.72.1-1
> Version table:
> *** 2.72.1-1 100
> 100 /var/lib/dpkg/status
> 2.66.8-1 500
> 500 https://deb.debian.org/debian bullseye/main amd64 Packages

That's a version from later-than-bullseye.



>
> $ apt-get -s -f install libglib2.0-0=2.66.8-1
> NOTE: This is only a simulation!
> apt-get needs root privileges for real execution.
> Keep also in mind that locking is deactivated,
> so don't depend on the relevance to the real current situation!
> Reading package lists... Done
> Building dependency tree... Done
> Reading state information... Done
> The following packages were automatically installed and are no longer
> required:

Ignore this unless you do autoremove...


> The following packages will be REMOVED:
> caja caja-admin caja-rename caja-seahorse debian-system-adjustments
> gstreamer1.0-packagekit gvfs-bin libglib2.0-bin mate-control-center
> mate-desktop-environment mate-desktop-environment-core
> mate-desktop-environment-extra mate-desktop-environment-extras
> mate-dock-applet mate-menu mate-notification-daemon mate-power-manager
> packagekit packagekit-tools
> The following NEW packages will be installed:
> notification-daemon
> The following packages will be DOWNGRADED:
> libglib2.0-0
> 0 upgraded, 1 newly installed, 1 downgraded, 21 to remove and 55 not

These are things that I suspect are also from beyond bullseye.

> Oops! How can I downgrade libglib2.0-0 without nuking most of the system?

Remove extra repos from your sources; pin backports to on-demand
only; apt update; downgrade libglib2.0-0, reinstall the packages from the
"will be REMOVED" list.

That will probably clear up your "no longer required" list, too.

-dsr-

Greg Wooledge

unread,
Jul 15, 2022, 1:00:06 PM7/15/22
to
On Fri, Jul 15, 2022 at 12:08:12PM -0400, Dan Ritter wrote:
> Ottavio Caruso wrote:
> > $ apt-cache policy libglib2.0-0
> > libglib2.0-0:
> > Installed: 2.72.1-1
> > Candidate: 2.72.1-1
> > Version table:
> > *** 2.72.1-1 100
> > 100 /var/lib/dpkg/status
> > 2.66.8-1 500
> > 500 https://deb.debian.org/debian bullseye/main amd64 Packages
>
> That's a version from later-than-bullseye.

Not only that, but it's also a version that's no longer present in any
of Ottavio's sources.

So, what I'm concluding is that Ottavio did something like this:

1) Decided to try installing some packages from testing or unstable.

2) Added testing or unstable to sources.list.

3) Installed stuff from testing or unstable. At least libglib2.0-0.

4) Removed testing or unstable from sources, thinking that this would
let them keep a "stable system except for these few packages".

This is what we call a Frankendebian.

Once you've installed packages from testing or unstable, there is no
going back. There is only going forward. You can continue "upgrading"
the rest of the system to testing or unstable (whichever you chose),
or you can reinstall everything using only stable sources.

(Is that a 100% firm rule? No, of course not. There are certain packages,
at certain moments in history, that can be downgraded to a stable version,
or removed, or which can peacefully coexist with a stable system, despite
being from a different release. But it takes an expert to identify such
a unicorn.)
0 new messages