[Linux] Dépendances et apt

Olivier Gayot olivier.gayot@::1
Jeu 14 Déc 13:13:05 CET 2023


Salut Arthur et les autres,

Je vois déjà des réponses très intéressantes. Je me permets de compléter :)

On Thu, Dec 14, 2023 at 10:38:04AM +0100, Arthur Pons wrote:
> 
> > > apt retire toutes les dépendances ajoutées. Après tout mon système
> > > fonctionnait parfaitement bien sans ces paquets avant. Or, il ne me propose
> > > de retirer que lowdown.
> > 
> > la prochaine fois que tu utiliseras apt, tu veras qu'il indique que tu
> > n'as plus besoin de lowdown et groff.
> > 
> > 	apt autopurge
> > 
> > et hop :)
> 
> Dans la pratique ce n'est pas ce qui se passe. apt autopurge ne me propose
> de retirer que lowdown. C'est un peu comme si à l'installation de groff et
> librsvg2-bin, ces paquets étaient soudainement devenus essentiels pour
> d'autres paquets et qu'il ne veut donc pas les retirer. Pourtant je suis
> certain que je ne les avais pas avant.
> 

Le paquet groff a été installé automatiquement car c'est une dépendance
de tp-ratp. Mais groff est également listé en tant que "Suggest" par
groff-base. Selon comment APT est configuré, il /peut/ faire le choix de
supprimer groff lorsque tp-ratp est désinstallé.

Lorsque tu fais "apt autoremove tp-ratp" (ou "apt autoremove" tout
court), plutôt que "apt remove tp-ratp", APT identifie les paquets qui
peuvent être désinstallés automatiquement, c'est à dire les paquets:

 * qui ne sont pas listés en tant que "Depends" par d'autres paquets
   installés
 * qui ne sont pas marqués "installés manuellement"
 * qui ne sont pas listés en tant que "Recommends" par d'autres paquets
   installés *si l'option APT::AutoRemove::RecommendsImportant est activée*
 * qui ne sont pas listés en tant que "Suggests" par d'autres paquets
 * installés *si l'option APT::AutoRemove::SuggestsImportant est activée*

Dans ton cas, groff est listé en tant que "Suggests" par groff-base,
donc il ne sera pas supprimé automatiquement si l'option
APT::AutoRemove::SuggestsImportant est activée.

  # apt autoremove tp-ratp -o 'APT::AutoRemove::SuggestsImportant=true'
  The following packages will be REMOVED:
    lowdown tp-ratp

  # apt autoremove tp-ratp -o 'APT::AutoRemove::SuggestsImportant=false'
  The following packages will be REMOVED:
    apt-config-icons attr avahi-autoipd avahi-utils breeze-icon-theme cups-bsd cups-pk-helper db5.3-util
    debconf-kde-data debconf-kde-helper exfatprogs f2fs-tools file-roller finalrd gir1.2-dbusmenu-glib-0.4
    gir1.2-dee-1.0 gir1.2-notify-0.7 gir1.2-secret-1 gir1.2-unity-7.0 groff gvfs-backends hplip hplip-data iw
    libasound2-plugins libcanberra-pulse libdebconf-kde1 libdee-1.0-4 libgdata-common libgdata22 libhpmud0
    libkf5completion-data libkf5completion5 libkf5sonnet5-data libkf5sonnetcore5 libkf5sonnetui5
    libkf5textwidgets-data libkf5textwidgets5 liblcms2-utils libpulsedsp libqrencode4 libreoffice-style-breeze
    libreoffice-style-elementary libreoffice-style-yaru librsvg2-bin libsane-hpaio libunity-protocol-private0
    libunity-scopes-json-def-desktop libunity9 libwmf-0.2-7-gtk lowdown mdadm mtools printer-driver-hpcups
    printer-driver-postscript-hp psutils pulseaudio-utils python3-bcrypt python3-cups python3-cupshelpers
    system-config-printer system-config-printer-common system-config-printer-udev tp-ratp ttf-bitstream-vera
    ubuntu-wallpapers-kinetic ubuntu-wallpapers-lunar ufw util-linux-extra wamerican wbrazilian wbritish
    wfrench wngerman wogerman wportuguese wspanish wswiss xfonts-scalable xorg-docs-core

A noter que tous les paquets dans cette liste qui n'ont rien à voir sont
tous des paquets qui avaient été installés automatiquement un jour (pour
satisfaire telle ou telle dépendance) et qu'APT a décidé de conserver
car:

 * ils sont listés en tant que "Suggests" par d'autres paquets
 * j'ai l'option APT::AutoRemove::SuggestsImportant activée

Je ne connais pas de moyen de faire un "apt autoremove tp-ratp" qui soit
"sélectif". Je veux dire par là qu'il aille supprimer /seulement/ les
paquets qui avaient été installés en tant que dépendance de tp-ratp. 
Ça reviendrait en gros a faire l'"inverse" de "apt install tp-ratp" mais
je ne crois pas que ce soit possible.

> > > apt-cache rdepends --installed groff
> > > groff
> > > Reverse Depends:
> > >    tp-ratp
> > >      groff:i386
> > >    man-db
> > >      groff:i386
> > >    groff-base
> > >      groff:i386
> > > 
> > > Groff est donc nécessaire à groff-base ? Pourtant j'avais groff-base mais
> > 
> > non. `apt show groff` montre que groff n'est que suggéré et
> > 
> > 	apt-cache rdepends --installed --no-suggests groff
> > te le confirme. par contre les suggestions ne sont pas forcement
> > installées:
> > 
> > 	grep -RFi sug /etc/apt/apt.conf.d/
> > 	/etc/apt/apt.conf.d/00norecommend:APT::Install-Suggests "false";
> > 
> > si cette sortie t'ennuie, je pense que tu dois pouvoir mettre APT::Cache::ShowSuggests
> > à false aussi.

Il y a aussi la commande "apt rdepends" plus sympa a utiliser (ça
affiche les types de dépendances (Suggests, Depends, Recommends)

  $ apt rdepends --installed groff
  groff
  Reverse Depends:
    Suggests: groff-base
      groff:i386
    Depends: tp-ratp
      groff:i386
    Suggests: pandoc
      groff:i386
    Suggests: man-db
      groff:i386
  
Olivier


Plus d'informations sur la liste de diffusion linux