A qui se fier ?

Bonjour,

Je pensais pouvoir me fier à la base de données de paquets apt mais j’ai un doute.

Cette commande

apt-cache -i rdepends udev

retourne en principe la liste des paquets qui dépendent du paquet udev (les dépendances inverses).
Dans la réponse, certains paquets s’affichent comme ceci

 |fuse
 |fbset
 |dvbtune

tandis que d’autres s’affichent comme cela

  dvb-apps
  linux-wlan-ng
  linux-base

La barre | signifie que la dépendance est optionnelle.
Par exemple, le paquet fuse dépend de udev ou makedev (udev | makedev).
Toutefois, le paquet linux-base semble avoir une dépendance exclusive au paquet udev or la description du paquet est limpide

$ apt show linux-base
Package: linux-base
Version: 3.5
Installed-Size: 142 kB
Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org>
Depends: libuuid-perl, debconf (>= 0.5) | debconf-2.0, util-linux (>= 2.16-1) | udev (<< 146-1)
Tag: admin::boot, implemented-in::c, implemented-in::shell,
 role::metapackage, role::program
Section: kernel
Priority: optional
Download-Size: 34,3 kB
APT-Manual-Installed: no
APT-Sources: http://ftp.fr.debian.org/debian/ jessie/main amd64 Packages
Description: paquet de base pour les images du noyau Linux
 Ce paquet contient les fichiers et scripts pour toutes les images du noyau
 Linux.

Le paquet linux-base dépend de udev ou util-linux donc la commande aurait due le marquer par une barre…

Qu’en pensez-vous ? Où est le bug ?

Nan c’est une dép obligatoire d’avoir l’un ou l’autre. Ça me parait logique de les afficher comme ca.

Je vais corriger cette phrase si elle est confuse

ainsi
La barre | signifie que la dépendance porte sur plusieurs paquets possibles.
On devrait donc lire ceci

 |dvb-apps
  linux-wlan-ng
 |linux-base

EDIT
idem pour les paquets watchdog et x86info
En clair, je ne comprends pas à quoi correspond la barre | et je ne vois donc pas quelle information elle apporte.
Il semble mais je peux me tromper que la barre | n’apparaît que si le paquet est à gauche de la barre | … soit cette barre est à supprimer soit le code est à revoir.

EDIT 2
La barre apparaît suivant la valeur de l’option de configuration APT::Cache::ShowOnlyFirstOr
Par défaut, celle-ci est fixée à false.
Concrètement :

$ apt-cache -o APT::Cache::ShowOnlyFirstOr=false -i rdepends consolekit
consolekit
Reverse Depends:
  urfkill
  mate-power-manager
 |lxsession
  lightdm

alors que

$ apt-cache -o APT::Cache::ShowOnlyFirstOr=true -i rdepends consolekit
consolekit
Reverse Depends:
  urfkill
  mate-power-manager
  lxsession

Comme lightdm ne dépend de consolekit qu’en second choix, il est masqué dans le second appel.

Le test dans le code se trouve
Pour jessie : File: apt-cache.cc
Pour stretch/sid : File: private-depends.cc
C’est le même, pour le moment :

if ((D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or && ShowOnlyFirstOr == false)
   std::cout << " |";
else
   std::cout << "  ";

Conclusion : la barre dit “c’est le premier choix parmi plusieurs paquets disponibles” mais ne dit rien pour les autres cas.

mise à jour des liens cassés

Pour jessie : File: apt-cache.cc
Pour stretch : File: private-depends.cc