Re: Too many Recommends (in particular on mail-transport-agent)
Hi there,
I think one of the main problems with Recommends: is not
actually the dependencies of packages themselves (I think
that most things in your list I disagree with, those
Recommends: are fine in my eyes), but rather in the way
they are handled in APT.
Let me make a couple of points (some are problems, some are
suggestions):
- You install package A, which Recommends: B, but you don't
want B, notice that at the time, and either remove B
afterwards, or install A with --no-install-recommends. But
then you install package C at a later point in time, which
actually depends on B. You notice that C is not what you
wanted, purge it again, but apt-get autoremove will _not_
remove B, even though it's automatically installed, because
A recommends it.
So basically, the following command sequence may or may not
leave your system in an identical state, depending on the
packages that previously have been installed on your system:
apt-get install A
apt-get purge A
apt-get autoremove --purge
Unfortunately, I don't see a good solution to this problem,
and I've thought about this a lot in the past.
- When installing APT's text UI doesn't differentiate between
extra packages that were full dependencies, and those that
were just recommends. What would be great if APT could
somehow show this information.
- My guess is that most power users don't use any GUI, but
the command line client, for installing packages. (Like I
do.) However, it would be great if there could be some
possibility of dropping individual Recommends even with
the minimalistic text UI of APT.
Example:
# apt-get install $pkg
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
$pkg2 $pkg3 $pkg4
Of these, the following only due to a recommendation:
$pkg3 $pkg4
Suggested packages:
$pkg5 $pkg6
The following NEW packages will be installed:
$pkg $pkg2 $pkg3 $pkg4
0 upgraded, 4 newly installed, 0 to remove and 0 not
upgraded.
Need to get 42 MB of archives.
After this operation, 108 MB of additional disk space will
be used.
Do you want to continue? [Y/c/n]
Where the 'c' button will first show a help (in case a more
inexperienced user presses it accidentally) and then allow
the user to remove packages from the list if they are pulled
in via Recommends: - transitively or intransitively.
- Instead of globally selecting "no recommends", it would be
great if one could use something like apt-preferences to
indicate that certain packages should not be installed
unless they are manually selected _or_ they are actual hard
Depends:-dependencies of other packages that do not fall
in this category. Then one could for example make sure that
-doc packages aren't installed unless they are hard
Depends:.
- What could also be nice would be a new dependency type that
works like this: if the package that declares this
dependency has been pulled in via Depends: or manually by
the user, it should act like Recommends:, otherwise like
Suggests:.
For example:
A
Depends: B
Recommends: C
B:
Depends: D
Recommends: E
Intransitive-Recommends: F
C:
Depends: G
Recommends: H
Intransitive-Recommends: I
G:
Intransitive-Recommends: J
Then "apt-get install A" would yield the following package
list:
A (duh)
B (Depends)
C (Recommends)
D (Depends -> Depends)
E (Depends -> Recommends)
F (Depends -> Intransitive-Recommends)
G (Recommends -> Depends)
H (Recommends -> Recommends)
Not pulled in:
I (Recommends -> Intransitive-Recommends)
J (Recommends -> Depends -> Intransitive-Recommends)
(Feel free to bikeshed over the name.)
This could make the transitivity issue of Recommends:
easier to deal with. Unfortunately this has some weird
side-effects: if you mark a specific package as manually
installed later, their Intransitive-Recommends: would need
to change from effective Suggests: to effective Recommends:,
which means APT somehow needs to figure out that it should
install them. Disadvantage: APT would need to add support
for this at the beginning of the Buster cycle, but it
could only be used in the archive starting with Buster+1,
otherwise upgrades from Stretch wouldn't work.
I'm not sure how good of an idea each of these is, but maybe
they could provide some inspiration for this topic.
Regards,
Christian
Reply to: