Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/05/2014, à 10:54

jplemoine

paquet hors depot

Lorsque l'on installe un fichier .deb par dpkg, il semblerait que les mises à jour ne se fasse pas automatiquement.
Pour les détecter, j'ai fais (sans certitude) le script suivant :

Il semblerait que, dans ce cas, le champs Filename soit vide.

for line in $(dpkg --get-selections | \
awk '{print $1}'); do var=$(echo "$line | \
$(apt-cache show $line | grep -c Filename:)" | \
grep "| 0" | awk -F '|' '{print $1}'); \
if [ "1${var}" != "1" ]; then \
ver=$(apt-cache show $(echo "$var") | grep "Version"); \
echo "$var , $ver"; fi; done

Attention : faire un copier-coller de l'ensemble car il s'agit d'une seule grande ligne.

Sur le même principe, j'ai fait un vrai script :

#! /bin/bash
clear
echo "liste des paquets installés en manuel"
echo "-------------------------------------"
echo " "

# ----------       paramétrage  ---------------

# taille en pixels à mettre en négatif
col1=-35
col2=-17
# modulo pour affichage du pourcentage
modulo=4
# mode debug ou non
debug='N'
# ------- fin paramétrage -------------

# récupération du nombre de paquets installés
total=0
if [ $debug = 'O' ]; then
  # mettre un pattern pour limiter la sélection : on peut le modifier à volonté
  liste=$(dpkg --get-selections "a*" "g*" | awk '{print $1}')
else
  liste=$(dpkg --get-selections | awk '{print $1}')
fi

for line in $(echo "$liste")
do
  ((total++))
done

#echo " "
#echo " total = $total"
#echo " "

# s'il n'y a pas de paquets, on sort...
if [ $total = 0 ]; then
  echo " "
  echo " Il n'y a pas de paquet correspondant aux critères."
  echo " "  
  exit
fi

# lecture des infos des paquets
nb=0
pcnt=0
save=0
sortie=""

for line in $(echo "$liste") 
do 
  ((nb++))
  var=$(echo "$line | $(apt-cache show $line | grep -c Filename:)" | grep "| 0" | awk -F '|' '{print $1}')
  if [ "1${var}" != "1" ]; then 
    ver=$(apt-cache show $(echo "$var") | grep "Version")
    
    if [ "1${sortie}" == "1" ]; then
      sortie=$(echo " |  $sortie")
    else
      sortie=$(echo "$sortie; |  ")
    fi
    var=$(printf "%*s" $col1 $var)
    ver=$(echo $ver | awk -F ':' '{print $2}')
    ver=$(printf "%*s" $col2 $ver)
    sortie=$(echo "$sortie$var | Version: $ver")
    sortie=$(echo "$sortie |")
  fi 

  # on remplace le ; par un CR
  sortie=$(echo "$sortie" | tr ';' '\012')
  # calcul du pourcentage
  pcnt=$(echo "scale=0; $nb*100/$total" | bc)
  mod=$(echo "scale=0; $pcnt % $modulo" | bc)
  # Si le poucentage a changé et s'il est multiple du modulo,
  # on l'affiche
  if [ $pcnt != $save ] && [ $mod = 0 ]; then
    echo -n "${pcnt}%..."
    save=$pcnt
  fi
done

# on cree le tableau
echo " "
echo " "
echo " |--------------------------------------|----------------------------|"
echo " |                                      |                            |"
echo " |            nom paquet                |      version installée     |"
echo " |                                      |                            |"
echo " |--------------------------------------|----------------------------|"
echo " |                                      |                            |"
echo "$sortie"
echo " |                                      |                            |"
echo " |--------------------------------------|----------------------------|"
echo " "
echo "fin du traitement. nombre de paquets traites : $nb"

Mettre le contenu dans un fichier et donner à ce dernier les droits d’exécution.

Dernière modification par jplemoine (Le 06/05/2014, à 16:02)


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#2 Le 06/05/2014, à 14:13

f.x0

Re : paquet hors depot

Bonjour jplemoine,

Merci pour le partage.
La commande donnée en 1 fonctionne parfaitement dans le terminal,
par contre le script ne fonctionne pas chez moi,
il s'arrête dès qu'il a trouvé le 1er paquet.

Il semble manquer des lignes au script, ou une boucle (absente ou non complétée).

Dernière modification par f.x0 (Le 06/05/2014, à 14:13)


SOPI

Hors ligne

#3 Le 06/05/2014, à 14:16

jplemoine

Re : paquet hors depot

Peux-tu me donner le résultat des 2 commandes que je puisse comparer ?
A priori, le script du 2 est complet.
Merci,
Jean-Philippe


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#4 Le 06/05/2014, à 15:21

f.x0

Re : paquet hors depot

Voilà pour le 1 :

for line in $(dpkg --get-selections | \
> awk '{print $1}'); do var=$(echo "$line | \
> $(apt-cache show $line | grep -c Filename:)" | \
> grep "| 0" | awk -F '|' '{print $1}'); \
> if [ "1${var}" != "1" ]; then \
> ver=$(apt-cache show $(echo "$var") | grep "Version"); \
> echo "$var , $ver"; fi; done
app-install-data-medibuntu  , Version: 10.10.0
jshon  , Version: 20131010-3
master-pdf-editor  , Version: 1.9.23

Voilà pour le 2 :

liste des paquets installés en manuel
-------------------------------------
 
4%...8%...12%...16%...20%...24%...28%...32%...36%...40%...44%...48%...52%...56%...60%...64%...68%...72%...76%...80%...84%...88%...92%...96%...100%... 
 
 |--------------------------------------|----------------------------|
 |                                      |                            |
 |            nom paquet                |      version installée     |
 |                                      |                            |
 |--------------------------------------|----------------------------|
 |                                      |                            |
 |  app-install-data-medibuntu          | Version: 10.10.0           |
 |                                      |                            |
 |--------------------------------------|----------------------------|
 
fin du traitement. nombre de paquets traites : 202

SOPI

Hors ligne

#5 Le 06/05/2014, à 15:31

jplemoine

Re : paquet hors depot

Peux-tu essayer en mettant en commentaire la ligne :

sortie=$(echo "$sortie" | tr ';' '\012')

(mettre # devant) ? Merci.

NB : je viens d'essayer ça fonctionne chez moi. Je ne peux donc pas tester seul...


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#6 Le 06/05/2014, à 15:42

f.x0

Re : paquet hors depot

Ça fait pareil :

liste des paquets installés en manuel
-------------------------------------
 
4%...8%...12%...16%...20%...24%...28%...32%...36%...40%...44%...48%...52%...56%...60%...64%...68%...72%...76%...80%...84%...88%...92%...96%...100%... 
 
 |--------------------------------------|----------------------------|
 |                                      |                            |
 |            nom paquet                |      version installée     |
 |                                      |                            |
 |--------------------------------------|----------------------------|
 |                                      |                            |
 |  app-install-data-medibuntu          | Version: 10.10.0           |
 |                                      |                            |
 |--------------------------------------|----------------------------|
 
fin du traitement. nombre de paquets traites : 202

SOPI

Hors ligne

#7 Le 06/05/2014, à 15:45

jplemoine

Re : paquet hors depot

Je ne comprends pas ce qui merde....
Il faut que je trouve un 3ième "trucs" à installer pour voir si c'est le fait d'avoir 3 lignes qui merdent.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#8 Le 06/05/2014, à 15:48

f.x0

Re : paquet hors depot

En fait j'en ai plus, mais je n'ai pas tout mis. (6 ou 7)

Le paquet jhson qui devrait s'afficher n'est pas dans la même distrib que celle utilisée.
(utilisée : 12.04 - paquet : 14.04)

Dernière modification par f.x0 (Le 06/05/2014, à 15:49)


SOPI

Hors ligne

#9 Le 06/05/2014, à 16:01

jplemoine

Re : paquet hors depot

Ça y est je viens de trouver :
J'ai publié

# mode debug ou non
debug='O'

au lieu de

# mode debug ou non
debug='N'

Le mode debug filtre les paquets... (ça prend que ceux qui commencent par a ou par g)

Je corrige le listing du post #1.

Dernière modification par jplemoine (Le 06/05/2014, à 16:02)


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#10 Le 06/05/2014, à 19:01

f.x0

Re : paquet hors depot

Tu es un seigneur jplemoine !!!

Cette fois cela fonctionne nickel, encore merci pour ce partage fort utile.
Bonne continuation sur Gnu/Linux big_smile


SOPI

Hors ligne

#11 Le 06/05/2014, à 19:16

jplemoine

Re : paquet hors depot

En fait, j'en ai eu besoin pour moi. Donc, une fois utilisé, je me suis dis que je pourrais le poster sur le forum.

NB : Le mode debug m'avait permis de diminuer le temps d’exécution pour mettre le script au point.
ça limite les paquets :
- debug désactivé : cherche dans tous les paquets installés
- avec le mode debug : cherche dans les paquets qui commence par a et g (mais on peut modifier).


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne