0

I was fiddling with sound on linux and tried installing the package jackd. This is the relevant excerpt of what apt returned :

$ sudo apt install jackd
The following additional packages will be installed:
  jackd2 jackd2-firewire libconfig++9v5 libffado2 libglibmm-2.4-1v5 libsigc++-2.0-0v5 libxml++2.6-2v5 python-dbus python-gi qjackctl

Then the result of a purge :

$ sudo apt purge jackd
The following packages will be REMOVED:
  jackd* qjackctl*

A subsequent installation :

$ sudo apt install jackd
The following NEW packages will be installed:
  jackd

----------EDIT----------

And then :

sudo apt autoremove
The following packages will be REMOVED:
  libfwup1

(which is a package that was already mentioned before ever installing jackd)

----------END OF EDIT----------

From this experiment, apt doesn't seem to remove dependencies. However, the purging did remove another package (qjackctl) in addition to the one that I specifically mentioned (jackd).

qjackctl is the package for the corresponding GUI interface of the daemon jackd and I understand that it won't be needed if I don't have jackd anymore. But, logically, so are the other dependencies installed, so :

  • why weren't they uninstalled ?
  • why was qjackctl uninstalled ?
  • why was qjackctl not fetched in the second installation ?

Only thread found was specific to the package in question.

Thanks a lot for your help

PS : I just finished installing an Arch Linux partition (which is aimed to replace my Ubuntu one in the future). I'm not very familiar with pacman right now. Is this behavior better managed with this package manager ? (more precisely : indempotent operations and predictable behavior)

0

1 Answer 1

1

The additional packages were installed because they are (possibly indirect) dependencies of jackd: jackd2 directly, the rest through jackd2. qjackctl was installed because jackd2 recommends it, and recommended packages are installed by default.

In detail, the dependency tree of the installed packages is as follows:

jackd
└─ jackd2
   ├─ python-dbus
   │  └─ python-gi (recommended)
   ├─ jackd2-firewire (recommended)
   │  └─ libffado2
   │     ├─ libconfig++9v5
   │     ├─ libglibmm-2.4-1v5
   │     │  └─ libsigc++-2.0-0v5
   │     └─ libxml++2.6-2v5
   └─ qjackctl (recommended)

Two additional dependencies don’t influence the installation step but become significant later: jackd2-firewire depends on jackd2, and qjackctl depends on jackd.

The latter dependency means that when jackd2 was removed, qjackctl had to be removed too (you can’t have a package installed without its strict dependencies). The other packages don’t depend on jackd, so they weren’t removed; they would have been by apt autoremove, except that because jackd2-firewire depends on jackd2, none of the packages become unnecessary... (apt doesn’t remember which specific package caused another package to be installed; autoremove only checks automatically installed packages to see whether nothing depends on them any more. As an added twist, autoremove considers recommendations as important enough to keep a package installed.)

The second time you installed jackd, apt looked at its dependencies, i.e. jackd2 or jackd1, noticed that jackd2 was already installed, and stopped there; it therefore didn’t notice that qjackctl was “missing”, since it’s recommended by jackd2, not jackd itself.

aptitude will remove unnecessary packages as soon as their depending packages are removed, with no separate autoremove step; you might find it easier to use. The commands are the same as apt’s; it also has a text-based full-screen user interface which I find very useful.

5
  • Very sorry I forgot about autoremove. But it acutally did not remove the other dependencies. I just put the output of a sudo apt autoremove in an edit of the post.
    – Atralb
    Mar 8, 2020 at 22:11
  • That’s apt autoremove after re-installing jackd, isn’t it? Then the packages are no longer candidates for auto-removal... Mar 8, 2020 at 22:12
  • No it was actually after sudo apt purge jackd. But I understood the issue thanks to you. jackd2 was still installed and with a sudo apt remove jackd2, all the other dependencies are effectively removed. But then the issue is jackd2 being separated from jackd as a standalone package instead of being a dependency of jackd2.
    – Atralb
    Mar 8, 2020 at 22:20
  • knowing the info I provided, shouldn't jackd2 (and its dependencies) be removed by an autoremove ? I made sure to remove every sing package that was installed in the first place, to return in a clean state for a sudo apt install jackd. All the other packages were effectively added. And I can reproduce the same behavior, which is that jackd2 is not fetched by autoremove.
    – Atralb
    Mar 8, 2020 at 22:41
  • Right, see the update; jackd2-firewire keeps jackd2 installed. Mar 9, 2020 at 8:49

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.