[ ideb ] outil information paquet Debian / analyse dépendances et plus

Tags: #<Tag:0x00007f63f03ac2e8>

● Présentation ideb:

Il existe de nombreux outils dérivés de dpkg/apt, mais jamais vraiment celui idéal et convivial en usage terminal, répondant aux questions fréquentes suivantes:

→ le paquet est-il installé ? Quelle est sa taille ? Ses Dépendances déjà installées ou non ?
→ comment comparer facilement la taille ou dépendances de paquets ?
→ où est la page d’accueil du paquet ?
→ quel est le contenu du paquet ?
→ combien de paquets sont installés au total ? Combien pourraient être « purgés » ?
→ trouvez un paquet dont le nom contient xyz ?
→ trouvez les dépendances inverses d’un paquet
→ historique installation paquet
→ création fichier paquets installés
→ recherche fichier/paquets
→ information taille paquets
→ versions disponibles d’un paquet
→ extaction d’un paquet localement
→ recherche du changelog
→ etc …

ideb devrait contribuer à répondre à ce besoin, avec un potentiel d’évolutions.
ideb et fdz ont pour objectif commun la simplification des opérations en usage courant (et non extrêmement spécifique).

ideb -> informations utiles d'un paquet deb / dépendances et plus
usage:
 $ ideb <options> <paquet[=version] /fichier .deb [si nécessaire pour l'action demandée]>

Par défaut, sans argument, exécution de 'ideb -info 10'
  -info : synthèse nombre de paquets installés / désinstallés (config-files)
         + taille totale paquets installés
         + taille du cache apt
         + liste les paquets purgeables
         + liste 10 plus gros paquets (ajustable/ -info 20)

Par défaut, avec un nom de paquet en argument, information détaillée
état du  paquet, y inclus dépendances.
options:
 -l  : list / affiche du contenu essentiel du paquet (élagage doc multi-langues/ locales etc)
 -la : (a=all) affichage complet du contenu du paquet
 -fs : file search / recherche du paquet contenant le fichier
       ideb -fs bin/column
 -ps  : package search /recherche de nom de paquet
 -psi : package search installed /recherche regex dans les noms de paquets installés
        + info taille de chaque paquet
        ideb -psi vlc   -> recherche de tous les paquets installés contenant vlc
        ideb -psi '^vlc$|player' -> recherche de vlc installé + noms contenant 'player'

 -rdep : (reverse depends) - dépendances inverses d'un paquet
 -show : données brutes fournies par le paquet

-size : taille des x plus gros paquets ( -size 20 )
-kern : affiche les paquets système 'linux-[hi]' (= raccourci de -psi 'linux-[hi]')

-plist : création fichier liste paquets/versions installés par défaut
         dans ~/deb_2024mmdd.list ou dans le nom de fichier fourni en argument
   -sl : sources list apt (y inclus nouveau format DEB822) + contenu actif.

 -log  : Historique installation paquets (Install/Purge/Remove/Upgrade)
 -log <paquet> : recherche plus spécifique dans l'historique
 -log+ : installed
 -log++: installed + upgraded
 -log- : removed
 -log--: removed + purged

 -home : ouvre la page d'accueil du paquet dans le navigateur url par défaut
-chlog : changelog du paquet
-graph : affiche les dépendances du paquet sous forme graphique
  -ext : extraction contenu d'un fichier .deb
         ideb -ext paquet.deb <Répertoire optionnel>

    -nc : allègement cosmétique couleur
  -help : affiche cette aide
-version: version de ideb

Quelques exemples (images):

1_ideb15 2_ideb15

8_ideb15 3_ideb15

5_ideb15 4_ideb15

7_ideb15

10_ideb15

9_ideb15
tar_graph

――――――――
ideb 1.5
――――――――
➤ Installation " ideb_1.5 ":

P=./ideb_1.5.deb
curl -so $P https://www.debian-fr.org/uploads/short-url/to9hkrF9hDcF1E0xidRWk7aEw3w.txt
md5sum $P |grep -q '0a629719454068be271c06c8ff64d929' && sudo dpkg -i $P
ideb -help

ideb_1.5.txt (5,6 Ko)
ideb15

2 J'aime

Bonjour,
une fonctionnalité que tu pourrais ajouter (ou pas) c’est une info sur quels sont les derniers paquets installés:

grep "install " /var/log/dpkg.log

―> historique paquets : fait / ideb 1.1

Personnellement, dpkg me convient. On peut facilement obtenir toutes les infos que ta cmd propose et bien plus. Après je comprends ta démarche…

ideb ideb donne quoi ?

―> $ ideb ideb ―> voir exemples 1er message

Oh, je ne connaissais pas debtree.

C’est très sympa de l’empaqueter et de le mettre directement sur le forum, moi, j’aurais juste proposé le fichier contenant le script bash et il aurait fallu le chercher sur github ou mon dépôt de code.

Tiens, un script que j’ai chopé à l’époque sur la liste de diffusion de Debian, il s’appelle graphepaquet.sh :

#!/bin/sh

maxniv=0
niveau=0
branche="$1"
maxbranche=""
tab=""

ndep() {
   echo "${tab}$1 ($niveau [$branche])"
   tab="  $tab"
   for package in `apt-cache depends $1 | awk '/  Depends: / {print $2}'`; 
do
     cycle="false"
     for i in $branche; do
       if [ "$i" == "$package" ]; then
         echo "${tab}$1 (cycle detected))"
         cycle="true"
         break
       fi
     done
     if [ $cycle = "false" ]; then
       branche="$branche ${package}"
       niveau=$((niveau+1))
       if [ $niveau -gt $maxniv ]; then
         maxniv=$niveau
         maxbranche="$branche"
       fi
       ndep $package
     fi
   done
   tab=`echo "$tab" | cut -c 3-`
   branche=`echo "$branche" | cut -d" " -f-$niveau`
   niveau=$((niveau-1))
}

ndep $1
echo -e "\nn($1)=${maxniv} ($maxbranche)"
exit 0

@Verner : je constate que le retour de ideb ideb, concernant les dépendances que tu utilises, est moins explicite que celui que tu avais posté. (et erroné puisque dpkg est une commande externe au bash…). Peut-être est-ce un problème de déclaration des dépendances de ton paquet (perso, j’ai déjà déposé sur pypi, mais jamais fait de paquet debian. Un jour je m’y essaierai… )

@nicola / « Tiens, un script que j’ai chopé »
Tu peux peut-être plutôt ouvrir un sujet pour poster des scripts que tu as ‹ chopés › pour bricolage, puis supprimer ton message (pour éviter une dérive rapide fourre-tout). La recherche ici est plus de définir précisément une fonction, un besoin d’usage courant qui m’aurait échappé, ou de remonter un problème spécifique d’utilisation. Les cas spécifiques d’utilisation d’ideb qui ne donnent pas le résultat espéré m’intéressent.
ideb n’a pas pour objectif de faire tout et n’importe quoi, mais uniquement des actions clairement identifiées, et le faire bien et proprement, et le plus efficacement possible. C’est la définition du besoin/fonction qui est importante, et non pas la manière de le faire de 50 manières différentes.

@MPython_Alaplancha
Les dépendances d’un paquet à préciser sont celles spécifiques dont a besoin un paquet pour fonctionner.
dpkg, grep, sed , ont le status ‹ Essentiel ›, et installés dans tout système Debian.
Il est impossible de désintaller dpkg, à moins de chercher des problèmes qui n’ont rien à voir avec ideb. ‹ dpkg › a été nécessaire pour installer ideb !
grep est désinstallable, mais franchement pas recommandé (…) puisqu’extrêmement fréquemment utlisé dans tout script.

mawk (Priority: required) ou gawk sont impérativement installés dans un système Debian. L’un ou l’autre créé /usr/bin/awk qui n’est qu’un lien.
/usr/bin/awk -> /etc/alternatives/awk -> /usr/bin/gawk

ideb est compatible avec mawk ou gawk, donc inutile de forcer une dépendance sur l’un ou l’autre.
bash est aussi installé par défaut dans tout système Debian, mais je précise bash comme dépendance, car en tant qu’utilisateur de zsh, je connais trop bien les petits pièges d’incompatiblité stricte entre zsh/bash pour attirer l’attention sur ce point.

1 J'aime

Si j’ai posté ce script (qui date de 2003) ici, c’est parce que son objet n’est pas étranger au tien (de script).

Celui-ci fonctionnait en 2003 (et après), il ne s’agit pas de n’importe quoi non plus.
S’il n’avait pas fonctionné à l’époque, je ne l’aurait pas posté.

:black_small_square: ideb 1.4 - Modifications 1.4/1.3:

• ideb traite la combinaison « paquet=version » pour une analyse plus précise d’un paquet. Exemple:

viewnior=1.6-1+b3 de bookworm dépend de gtk2
viewnior=1.8-3 de trixie/unstable dépend de gtk3

-psi (package search installed) : interprète le regex pour plusieurs paquets simultanés

ideb -psi 'vlc.*a$|^pipe.*n$|^l.*29$'

-ext : extraction d’un paquet dans un répertoire local hors système, pour analyse, ou autre objectif. Le nom du répertoire d’extaction est le nom du paquet sans ‹ .deb ›, ou peut être fourni en argument
ideb -ext paquet.deb monRépertoire

-chlog : affiche le changelog localement pour un paquet installé, ou va le chercher si non installé

-log : simplification arguments / affichage historique sur un mois glissant

• + divers détails pratiques (exemple: si paquet saisi est inexistant, lancement recherche dans le cache pour trouver un nom approchant)

salut
pourrais-tu le fournir en bash aussi, je n’aime pas installer des deb non debian?

Tu peux téléchoper l’archive et regarder ce qu’il y a dedans avec un ouvre-archives, même avec mc.

C’est l’occasion de découvrir qu’un paquet deb s’ouvre avec n’importe quel archiveur qui supporte la compression xz (entre autre).

ideb_1.4_all.deb:
Debian binary package (format 2.0), with control.tar.xz, data compression xz

Pour « voir », tu ouvres !
ideb-open

Le paquet deb offre une compression (xz par défaut) diminuant la taille, assure une sécurité de conformité (md5sum), assure les dépendances nécessaires à son fonctionnement, …et évite des bricolages intempestifs potentiellement générateur de « ça marche pas », comme ça arrive sur des Debians dites « fraîchement installées », mais déjà bien tripatouillées.

2 J'aime

:black_small_square: ideb 1.5 - Modifications 1.5/1.4:

ideb , ou ideb -info : tableau de bord /synthèse
→ ajout de la taille du cache apt

ideb -sl : sources list apt
→ liste les fichiers sources apt (y inclus format deb822), ainsi que l’information dépôts actifs

-log <paquet> : recherche plus spécifique dans l’historique
-log+ : install uniquement
-log++ : install + upgrade
-log- : remove uniquement
-log-- : remove + purge

ideb paquet
→ l’affichage des versions disponibles sera masqué en cas de source unique

voir illustrations 1er message, + installation.