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 02/05/2011, à 18:28

quent57

[Script Bash]Liste Paquets installés manuellement après l'installation

Je vous propose à nouveau un petit script, (qui aura peut être plus de sucés que celui qui permet de chiffrer des dossier pour Ubuntu One).

Ce script permet donc de lister tout les paquets que l'on a installer intentionnellement.
C'est à dire que les dépendances de ces paquets ne sont pas visible (et elles seront retiré automatiquement si vous supprimez le paquet).
Cela veut aussi dire que les paquet installés par défaut à l"installation de Ubuntu ne sont pas listés.

Le but est donc de maintenir sa machine propre, on voit tout ce qu'on a installé intentionnellement un jours, pour éventuellement les supprimer.
En théorie, si on supprime tout ces paquets, et que l'on réinstalle au besoin les paquets qui était installé par défaut, on se retrouve avec un système neuf !

Si on veut utiliser le script au sein d'un autre script, utiliser l'option -s qui permet d'afficher uniquement le nom des packages. C'est aussi notablement plus rapide.

Voici le script :

#!/bin/bash

# Développeur : Quentin Bérard : dev@quent.fr
# Licence Creativ Common BY - SA http://creativecommons.org/licenses/by-sa/2.0/fr/ ou GPL v3

# version 1.3.0
# diff 1.2 et 1.3 passage à apt-mark showmanual
# diff 1.1 et 1.2 ajout de la ligne de commande -s, parcours de tous les /var/log/dpkg.log affichage de l'alphabet pour attendre
# diff 1.0 et 1.1 : beaucoup plus rapide, utilisation de join, affichage catégorie
# TODO : 
#   - supprimer la dépendance à aptitude 
#     - utiliser : /var/lib/apt/extended_states
#         - vérifier si on trouve les mêmes résultats
#         - arriver à parser le fichier.
#   - comportement après une maj de version de l'OS ?
#   - améliorer la rapidité du script
#       - remplacer apt-cache show par plus rapide
#   - filtrer les paquets linux-image et linux-headers
#   - supprimer cat quand c'est possible (suivi de grep)

# Notes :
# Lister les paquets installés : 
#   - dpkg -l 
#   - dpkg --get-selections
# Info sur paquet
#   - apt-cache show paquet
#   - dpkg --print-avail paquet
# Liste les paquets installés manuellements :
#   - apt-mark showmanual
#   - aptitude search '~i !~M' -F '%p'

# cat t1 | sort -k 3 : trier suivant la 3eme colonne

verbose=true
if (( $# >= 1 ));
then
    if [ $1 = "-s" ];
    then
        verbose=false
    fi  
fi

# adresse de base du fichier des logs.
log="/var/log/dpkg.log"

# on affiche d'abord les logs en gz (2-x) dans l'ordre inverse (x-2) puis les autres (.1 et néant) dans l'ordre inverse.
# on ne récupere que les ligne concernant une installation.
leslogs=$(echo -e "$(gunzip $(ls $log*.gz | sort -r )  --stdout ; cat $(ls $log* | grep -v ".gz" | sort -r ))" | grep "\ install\ ")

#la premiere entrée correspond forcément à un paquet installé par défaut lors de l'instal de l'Ubuntu.
#on récupère alors sa date d'installation.
dateInstal=$(echo "$leslogs" | head -1 | cut -d" " -f1)

#toute les dates d'installations, on ne prend que les colonnes intéressantes
allPackagesDate=$(echo "$leslogs" | cut -d" " -f1,2,4)

#tout les noms (-F '%p') des paquets installés (i) non automatiquement (!M)
packages=$(apt-mark showmanual)

if $verbose ;
then
    echo "Liste des paquets installés manuellement, et après l'installation de l'OS :"
    echo "Attendez 2 minutes !"
fi
liste=""
l=""

allPackagesDate=$(echo "$allPackagesDate" | grep -v "$dateInstal" )

#les - ne sont pas triés pareil
echo "$packages" | sort -k 1 > .doesntExistinstalledPackages
# tri sur la colonne des paquets
echo "$allPackagesDate" | sort -k 3 > .doesntExistdatedPackages
# jointure
join -1 1 -2 3 ".doesntExistinstalledPackages" ".doesntExistdatedPackages"  | tee ".doesntExistinstalledDatedPackages" >> "/dev/null"

#affiche la catégorie de l'arg1 sur la sortie
getCategory() {
    package=$1
    # propriétés du package, partie Section, afficher une seul ligne (souvent répété cf liboverlay-scrollbar-0.1-0)
    # puis enlever "Section: "
    cat=$(apt-cache show $package | grep "Section: " | head -1 | cut -d" " -f2)
    cat2=$(echo $cat | cut -d"/" -f2) #Section: universe/graphics
    if [ -z cat2 ];
    then # si "graphics"
        cat2=$cat
    fi

    echo "$cat2"
}

cat=""
liste=""
lastPackage=""
lastPackageLine=""
OLDIFS=$IFS
lettre=""
IFS='
'
for arg in $(cat .doesntExistinstalledDatedPackages)
do
    IFS=$OLDIFS # pour ne pas poluer le reste du programme

    # uniquement le nom
    package=$(echo "$arg" | cut -d" " -f1)

    # si le nom n'est pas nouveau, on n'affiche pas le dernier
    # si le nom est nouveau, on affiche le précédent
    if [ ! "$package" = "$lastPackage" ];
    then
        # pas le premier
        if [ ! $lastPackage = "" ];
        then
            if $verbose ;
            then
                # on recherche la catégorie
                cat=$(getCategory $lastPackage)
            fi
            # on ajoute a la liste
            liste=$(echo "$liste\n$cat $lastPackageWithDate")
        fi
    fi
    
    # on garde mémoire du dernier package avec la date
    lastPackageWithDate=$arg
    # on garde la mémoire du dernier package
    lastPackage=$package

    #affichage de l'alphabet d'attente
    if $verbose ;
    then            
        flettre=$(echo $package | head -c 1)
        if [ ! "$lettre" = "$flettre" ]; 
        then
            echo -n "$flettre"
            lettre=$flettre
        fi
    fi

#pour le prochain tours de for
IFS='
'
done

## on ajoute le dernier. ##
# on recherche la catégorie    
if $verbose ;
then
    #apres l'alphabet : un espace
    echo
    echo
    cat=$(getCategory $lastPackage)
fi
# on ajoute a la liste
liste=$(echo "$liste\n$cat $lastPackageWithDate")

if ! $verbose ;
then  
    # on passe le " " initiale
    liste=$(echo -e "$liste" | cut -d" " -f2)
    # plusieurs colonnes
    liste=$(echo -e "$liste" | column)
else
    #trie suivant la catégorie
    liste=$(echo -e "$liste" | sort)
    #mise en colonne 
    liste=$(echo -e "$liste" | column -t)
    #affichage
fi

echo -e "$liste"

#dossier temporaires
rm .doesntExistinstalledPackages .doesntExistdatedPackages .doesntExistinstalledDatedPackages

if $verbose ;
then  
    echo "[Entrée]"
    read
fi

Ensuite il suffit de copier le texte dans paquets_installes_manuellements.sh .
De rendre le fichier exécutable et de le lancer dans un terminal.

Défauts : voir TODO du fichier !

Je suis ouvert à toutes contributions !

Cordialement
Quentin

PS : site utiles pour apprendre a manipuler les fichiers, trouvé après 15 minutes de recherche, fiabilité non garantit ! :
http://clher.fr/index.php?option=com_co … l&Itemid=2
http://davidwills.net/cmis325/filters.html
http://www.tuteurs.ens.fr/unix/exercice … p-sol.html
http://wiki.mandriva.com/fr/Faire_une_r … _avec_grep
http://ww2.ac-creteil.fr/reseaux/system … ation.html
http://ww2.ac-creteil.fr/reseaux/system … ltres.html
http://www.corporesano.org/doc-site/bashperso2a.html

[EDIT : le système fait de l'archivage des répertoires /var/log/dpkg.log, le script ne marche donc pas sur les instal' de qques mois. Correction en cours.]
[EDIT 2 : reglé en 1.2]

Dernière modification par quent57 (Le 12/05/2012, à 18:26)


En maintenance ... http://www.tux.quent.fr/

Hors ligne

#2 Le 03/05/2011, à 02:14

quent57

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

BackUp version 1.0

#!/bin/bash

# Développeur : Quentin Bérard : dev@quent.fr
# Licence Creativ Common BY - SA http://creativecommons.org/licenses/by-sa/2.0/fr/ ou GPL v3

# version 1.0

# TODO : 
# supprimer la dépendance à aptitude 
#   - utiliser : /var/lib/apt/extended_states
#       - vérifier si on trouve les mêmes résultats
#       - arriver à parser le fichier.
#   - comportement après une maj de version de l'OS ?
#   - améliorer la rapidité du script

# Notes :
# Lister les paquets installés : 
#   - dpkg -l 
#   - dpkg --get-selections

#la premiere entrée correspond forcément à un paquet installé par défaut lors de l'instal de l'Ubuntu.
dateInstallation=$(cat /var/log/dpkg.log | grep "\ install\ " | head -1 | cut -d" " -f1)

#toute les dates d'installations, on ne prend que les colonnes intéressantes
date=$(cat /var/log/dpkg.log | grep "\ install\ " | cut -d" " -f1,2,4)

#tout les noms (-F '%p') des paquets installés (i) non automatiquement (!M)
paquets=$(aptitude search '~i !~M' -F '%p')

echo "Liste des paquets installés manuellement, et après l'installation :"

for arg in $paquets
do
    #recherche de la date d'instal de chaques paquets
    #un espace avant, et $ pour la fin de ligne, tail pour avoir la dernière installation
    trouve=$(echo "$date" | grep " $arg$" | tail -1)
    
    if [ -z trouve ];
    then # paquet installé suivant aptitude mais pas suivant /var/log/dpkg.log, on a du purger ce fichier un jour.
        echo "Problème : $arg est introuvable dans /var/log/dpkg.log"
    else
        # est-ce qu'il n'a pas été installé en même temps que le système ?
        t=$(echo -n "$trouve" | grep -v "$dateInstallation" )
        if [ -n "$t" ] ;
        then
            echo "$t"
        fi
    fi
done
echo "[Entrée]"
read

BackUp version 1.1

#!/bin/bash

# Développeur : Quentin Bérard : dev@quent.fr
# Licence Creativ Common BY - SA http://creativecommons.org/licenses/by-sa/2.0/fr/ ou GPL v3

# version 1.1
# diff 1.0 et 1.1 : beaucoup plus rapide, utilisation de join, affichage catégorie
# TODO : 
# supprimer la dépendance à aptitude 
#   - utiliser : /var/lib/apt/extended_states
#       - vérifier si on trouve les mêmes résultats
#       - arriver à parser le fichier.
#   - comportement après une maj de version de l'OS ?
#   - améliorer la rapidité du script

# Notes :
# Lister les paquets installés : 
#   - dpkg -l 
#   - dpkg --get-selections
# Info sur paquet
#   - apt-cache show paquet
#   - dpkg --print-avail paquet

#cat t1 | sort -k 3 TRIER SUIVANT COL 3




#la premiere entrée correspond forcément à un paquet installé par défaut lors de l'instal de l'Ubuntu.
dateInstal=$(cat /var/log/dpkg.log | grep "\ install\ " | head -1 | cut -d" " -f1)

#toute les dates d'installations, on ne prend que les colonnes intéressantes
allPackagesDate=$(cat /var/log/dpkg.log | grep "\ install\ " | cut -d" " -f1,2,4)

#tout les noms (-F '%p') des paquets installés (i) non automatiquement (!M)
packages=$(aptitude search '~i !~M' -F '%p')

echo "Liste des paquets installés manuellement, et après l'installation :"
echo "Attendez 2 minutes !"
liste=""
l=""

allPackagesDate=$(echo "$allPackagesDate" | grep -v "$dateInstal" )

#les - ne sont pas triés pareil
echo "$packages" | sort -k 1 > .doesntExistinstalledPackages
# tri sur la colonne des paquets
echo "$allPackagesDate" | sort -k 3 > .doesntExistdatedPackages
# jointure
join -1 1 -2 3 ".doesntExistinstalledPackages" ".doesntExistdatedPackages"  | tee .doesntExistinstalledDatedPackages >> /dev/null


liste=""
lastPackage=""
lastPackageLine=""
OLDIFS=$IFS
IFS='
'
for arg in $(cat .doesntExistinstalledDatedPackages)
do
    IFS=$OLDIFS # pour ne pas poluer le reste du programme
    package=$(echo "$arg" | cut -d" " -f1)

    if [ ! "$package" = "$lastPackage" ];
    then
        liste=$(echo "$liste\n$lastPackageLine")
    fi
    
    lastPackage=$package

    cat=$(apt-cache show $package | grep Section | cut -d" " -f2)
    cat2=$(echo $cat | cut -d"/" -f2) #Section: universe/graphics
    if [ -z cat2 ];
    then
        cat2=$cat
    fi

    lastPackageLine=$(echo "$cat2 - $arg")

IFS='
'

done
liste=$(echo "$liste\n$lastPackageLine")

liste=$(echo -e "$liste" | sort)
liste=$(echo -e "$liste" | column -t)
echo -e "$liste"

rm .doesntExistinstalledPackages .doesntExistdatedPackages .doesntExistinstalledDatedPackages

echo "[Entrée]"
read

BackUp version 1.2

#!/bin/bash

# Développeur : Quentin Bérard : dev@quent.fr
# Licence Creativ Common BY - SA http://creativecommons.org/licenses/by-sa/2.0/fr/ ou GPL v3

# version 1.2.1
# diff 1.1 et 1.2 ajout de la ligne de commande -s, parcours de tous les /var/log/dpkg.log affichage de l'alphabet pour attendre
# diff 1.0 et 1.1 : beaucoup plus rapide, utilisation de join, affichage catégorie
# TODO : 
#   - supprimer la dépendance à aptitude 
#     - utiliser : /var/lib/apt/extended_states
#         - vérifier si on trouve les mêmes résultats
#         - arriver à parser le fichier.
#   - comportement après une maj de version de l'OS ?
#   - améliorer la rapidité du script
#       - remplacer apt-cache show par plus rapide
#   - filtrer les paquets linux-image et linux-headers
#   - supprimer cat quand c'est possible (suivi de grep)

# Notes :
# Lister les paquets installés : 
#   - dpkg -l 
#   - dpkg --get-selections
# Info sur paquet
#   - apt-cache show paquet
#   - dpkg --print-avail paquet

# cat t1 | sort -k 3 : trier suivant la 3eme colonne

verbose=true
if (( $# >= 1 ));
then
    if [ $1 = "-s" ];
    then
        verbose=false
    fi  
fi

# adresse de base du fichier des logs.
log="/var/log/dpkg.log"

# on affiche d'abord les logs en gz (2-x) dans l'ordre inverse (x-2) puis les autres (.1 et néant) dans l'ordre inverse.
# on ne récupere que les ligne concernant une installation.
leslogs=$(echo -e "$(gunzip $(ls $log*.gz | sort -r )  --stdout ; cat $(ls $log* | grep -v ".gz" | sort -r ))" | grep "\ install\ ")

#la premiere entrée correspond forcément à un paquet installé par défaut lors de l'instal de l'Ubuntu.
dateInstal=$(echo "$leslogs" | head -1 | cut -d" " -f1)

#toute les dates d'installations, on ne prend que les colonnes intéressantes
allPackagesDate=$(echo "$leslogs" | cut -d" " -f1,2,4)

#tout les noms (-F '%p') des paquets installés (i) non automatiquement (!M)
packages=$(aptitude search '~i !~M' -F '%p')

if $verbose ;
then
    echo "Liste des paquets installés manuellement, et après l'installation de l'OS :"
    echo "Attendez 2 minutes !"
fi
liste=""
l=""

allPackagesDate=$(echo "$allPackagesDate" | grep -v "$dateInstal" )

#les - ne sont pas triés pareil
echo "$packages" | sort -k 1 > .doesntExistinstalledPackages
# tri sur la colonne des paquets
echo "$allPackagesDate" | sort -k 3 > .doesntExistdatedPackages
# jointure
join -1 1 -2 3 ".doesntExistinstalledPackages" ".doesntExistdatedPackages"  | tee ".doesntExistinstalledDatedPackages" >> "/dev/null"

#affiche la catégorie de l'arg1 sur la sortie
getCategory() {
    package=$1
    # propriétés du package, partie Section, afficher une seul ligne (souvent répété cf liboverlay-scrollbar-0.1-0)
    # puis enlever "Section: "
    cat=$(apt-cache show $package | grep "Section: " | head -1 | cut -d" " -f2)
    cat2=$(echo $cat | cut -d"/" -f2) #Section: universe/graphics
    if [ -z cat2 ];
    then # si "graphics"
        cat2=$cat
    fi

    echo "$cat2"
}

cat=""
liste=""
lastPackage=""
lastPackageLine=""
OLDIFS=$IFS
lettre=""
IFS='
'
for arg in $(cat .doesntExistinstalledDatedPackages)
do
    IFS=$OLDIFS # pour ne pas poluer le reste du programme

    # uniquement le nom
    package=$(echo "$arg" | cut -d" " -f1)

    # si le nom n'est pas nouveau, on n'affiche pas le dernier
    # si le nom est nouveau, on affiche le précédent
    if [ ! "$package" = "$lastPackage" ];
    then
        # pas le premier
        if [ ! $lastPackage = "" ];
        then
            if $verbose ;
            then
                # on recherche la catégorie
                cat=$(getCategory $lastPackage)
            fi
            # on ajoute a la liste
            liste=$(echo "$liste\n$cat $lastPackageWithDate")
        fi
    fi
    
    # on garde mémoire du dernier package avec la date
    lastPackageWithDate=$arg
    # on garde la mémoire du dernier package
    lastPackage=$package

    #affichage de l'alphabet d'attente
    if $verbose ;
    then            
        flettre=$(echo $package | head -c 1)
        if [ ! "$lettre" = "$flettre" ]; 
        then
            echo -n "$flettre"
            lettre=$flettre
        fi
    fi

#pour le prochain tours de for
IFS='
'
done

## on ajoute le dernier. ##
# on recherche la catégorie    
if $verbose ;
then
    #apres l'alphabet : un espace
    echo
    echo
    cat=$(getCategory $lastPackage)
fi
# on ajoute a la liste
liste=$(echo "$liste\n$cat $lastPackageWithDate")

if ! $verbose ;
then  
    # on passe le " " initiale
    liste=$(echo -e "$liste" | cut -d" " -f2)
    # plusieurs colonnes
    liste=$(echo -e "$liste" | column)
else
    #trie suivant la catégorie
    liste=$(echo -e "$liste" | sort)
    #mise en colonne 
    liste=$(echo -e "$liste" | column -t)
    #affichage
fi

echo -e "$liste"

#dossier temporaires
rm .doesntExistinstalledPackages .doesntExistdatedPackages .doesntExistinstalledDatedPackages

if $verbose ;
then  
    echo "[Entrée]"
    read
fi

Dernière modification par quent57 (Le 12/05/2012, à 18:25)


En maintenance ... http://www.tux.quent.fr/

Hors ligne

#3 Le 06/05/2011, à 09:35

Felix_Faure

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

L'idée de ce script est intéressante, et je recherche un tel programme depuis quelque temps.

Comme indiqué dans le message #1, le script n'explore que dpkg.log, alors qu'il faudrait explorer (sur mon système) les fichiers suivants :

-rw-r--r-- 1 root root  30079 2011-05-05 10:04 dpkg.log
-rw-r--r-- 1 root root 156366 2011-04-29 15:50 dpkg.log.1
-rw-r--r-- 1 root root  19363 2011-03-31 09:03 dpkg.log.2.gz
-rw-r--r-- 1 root root  21548 2011-03-01 08:19 dpkg.log.3.gz
-rw-r--r-- 1 root root  19030 2011-01-27 17:52 dpkg.log.4.gz
-rw-r--r-- 1 root root   7703 2010-12-15 10:10 dpkg.log.5.gz
-rw-r--r-- 1 root root  13092 2010-11-30 10:05 dpkg.log.6.gz
-rw-r--r-- 1 root root 129198 2010-10-31 19:15 dpkg.log.7.gz
-rw-r--r-- 1 root root  11859 2010-09-30 09:05 dpkg.log.8.gz
-rw-r--r-- 1 root root 140384 2010-08-30 18:20 dpkg.log.9.gz

Explorer tous ces fichiers n'est pas une mince affaire. Peut-être y aurait-il une autre façon de déterminer la date d'installation du système ?

Supprimer la dépendance à Aptitude ne me parait-pas une bonne idée, car on risque d'aboutir à un script qui serait moins portable et plus dépendant d'éventuels changements techniques. Enfin, améliorer la rapidité du script ne me semble pas vraiment prioritaire : il est déjà assez véloce, et son temps d'exécution est négligeable par rapport à une installation des paquets dont il fait la liste.

Hors ligne

#4 Le 06/05/2011, à 11:56

quent57

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Merci pour la réponse smile

Felix_Faure a écrit :

Explorer tous ces fichiers n'est pas une mince affaire. Peut-être y aurait-il une autre façon de déterminer la date d'installation du système ?

J'ai la solution pour ce problème, je la poste cette aprem si possible.
Je concatène simplement tout les fichier en en décompressant certains.

Je n'ai pas trouver d'autre moyen pour déterminer la date d'installation d'un package.
Je ne sais pas comment fais la logitheque ubuntu a ce sujet, et je n'ai pas trouver en regardant les sources de celle ci.

Felix_Faure a écrit :

Supprimer la dépendance à Aptitude ne me parait-pas une bonne idée, car on risque d'aboutir à un script qui serait moins portable et plus dépendant d'éventuels changements techniques. Enfin, améliorer la rapidité du script ne me semble pas vraiment prioritaire : il est déjà assez véloce, et son temps d'exécution est négligeable par rapport à une installation des paquets dont il fait la liste.

Je pourrais donner 2 options quand a aptitude ou non.

Pour la rapidité elle est désastreuse sur mon eeepc (proc atom), avec une bonne centaine de paquets installés à la main.
Ce qui prend du temps c'est de cherche le type du paquet (internet, bureautique, ...), je donnerai une option pour y désactiver.
(Il doit y en avoir pour 20 minutes sur ce pc je pense !).

[EDIT] Le problème des multiples /var/log/dpkg.log est reglé dans la 1.2 smile
Et j'avais du faire une faute dans le code quand j'avais mesurer 20 minutes, le script prend qu'une minute sur un processeur atom et pas mal de paquets installés.

Dernière modification par quent57 (Le 06/05/2011, à 23:46)


En maintenance ... http://www.tux.quent.fr/

Hors ligne

#5 Le 07/05/2011, à 10:21

Felix_Faure

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Merci pour cette version 1.2.

Avec un Core 2 duo E6300 (1,86 GHz), ce script s'exécute en 26 secondes.

Sur ma machine, la liste des paquets fait 168 lignes. J'ai vérifié cette liste en faisant
aptitude search '~i!~M(!~tubuntu-desktop!~tminimal!~tstandard!~tprint-server)'
qui me produit une liste de 228 lignes. Les différences correspondent à des paquets que je n'ai pas directement installés. Les résultats du script me paraissent donc corrects.
Toutefois, je n'ai pas le souvenir d'avoir installé certains paquets, comme par exemple :
libfreetype6-dev, gstreamer0.10-ffmpeg, gstreamer0.10-fluendo-mp3, gstreamer0.10-plugins-bad, libavcodec-extra-52 ou libbcmail-java.
Ce sont peut-être des dépendances orphelines ou des résidus d'installation/désinstallation.

Par ailleurs, pour indiquer le taux d'avancement du script, ne serait-il pas mieux, plutôt que d'afficher l'alphabet, de mettre une barre de progression avec "zenity" ? Je ne sais toutefois pas si c'est une commande fournie en standard.

Par ailleurs, si l'on veut faire de ce script un outil pour la réinstallation d'un système (ce qui, j'en conviens, n'est pas l'objectif fixé dans le titre de cette rubrique), il faudrait à mon avis supprimer toutes les lignes des paquets du noyau, telles que :
linux-headers-2.6.35-23, linux-headers-2.6.35-23-generic ou linux-image-2.6.32-25-generic.

Enfin, toujours dans le cas d'un outil pour la réinstallation d'un système, il serait pratique que ce script génère tout simplement un fichier qui corresponde à un script d'installation des paquets que l'on exécuterait sur le nouveau système.

Hors ligne

#6 Le 07/05/2011, à 12:04

quent57

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Merci pour le temps d'exécution et pour les infos !
Le paquet gstreamer0.10-ffmpeg, gstreamer0.10-fluendo-mp3, gstreamer0.10-plugins-bad, libavcodec-extra-52 doivent être ceux qui sont installés quand t'a pas les plugin et qu'on te demande "voulez vous pouvoir lire un mp3 ?".
Donc à réinstaller pour avoir un système propre.

Je ne vois pas l'intérêt d'utiliser zenity juste pour une barre de défilement (avoir un script en console avec une fenêtre pour attendre, ça fait bizarre !),
mais effectivement je pourrais mettre une barre de défilement (en console) qui représente exactement l'avancement du script (dans sa deuxième partie, boucle principale while). Cependant on a déjà de quoi attendre et ce n'est pas une priorité je pense.

Felix_Faure a écrit :

Ce sont peut-être des dépendances orphelines ou des résidus d'installation/désinstallation.

Pour moi tu parle de 2 fois la même chose, et ces résidus sont censés être installés automatiquement et donc ne pas être affichés.
En faite, pour les supprimer, faire "sudo apt-get autoremove" en console.

Alors tu vois "linux-headers-2.6.35-23, linux-headers-2.6.35-23-generic ou linux-image-2.6.32-25-generic." dans ta liste ?
A tu fais une mise à jour de version de Ubuntu de ce système ?
Si oui, c'est vrai que c'est pas géré dans ce script.
Sinon je ne comprend pas ce que font ces lignes ici, sauf si tu t'est amusé à installer ou supprimer des noyau linux

Felix_Faure a écrit :

Enfin, toujours dans le cas d'un outil pour la réinstallation d'un système, il serait pratique que ce script génère tout simplement un fichier qui corresponde à un script d'installation des paquets que l'on exécuterait sur le nouveau système.

C'est faisable, mais c'est aussi faisable à la main :
Ancien système :
./paquets_installes_manuellements.sh -s > paquets
Nouveau système :
cat paquets | sudo apt-get install

J'ajouterai ptet un truc pour que ce soit encore plus simple !


En maintenance ... http://www.tux.quent.fr/

Hors ligne

#7 Le 07/05/2011, à 13:21

twocats

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

dateInstal=$(cat /var/log/dpkg.log | grep "\ install\ " | head -1 | cut -d" " -f1)

Useless use of cat

dateInstal=$(awk '/ install / {print $1}' /var/log/dpkg.log | head -1)
allPackagesDate=$(cat /var/log/dpkg.log | grep "\ install\ " | cut -d" " -f1,2,4)

Useless use of cat

allPackagesDate=$(awk '/ install / {print $1,$2,$4}' /var/log/dpkg.log)

Dernière modification par twocats (Le 07/05/2011, à 13:22)


La réponse est 42

Hors ligne

#8 Le 07/05/2011, à 13:24

quent57

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

twocats a écrit :
dateInstal=$(cat /var/log/dpkg.log | grep "\ install\ " | head -1 | cut -d" " -f1)

Useless use of cat

dateInstal=$(awk '/ install / {print $1}' /var/log/dpkg.log | head -1)
allPackagesDate=$(cat /var/log/dpkg.log | grep "\ install\ " | cut -d" " -f1,2,4)

Useless use of cat

allPackagesDate=$(awk '/ install / {print $1,$2,$4}' /var/log/dpkg.log)

Je ne gère pas du tout awk, mais merci des indication, cela ira sûrement un peu plus vire

Mais pour le premier, le travail de traitement "prendre la premire colonne" est faite sur des centaines de ligne, au lieu d'une seul, ce n'est pas terrible il me semble.

Est-ce mal d'utiliser cat ?

Dernière modification par quent57 (Le 07/05/2011, à 13:29)


En maintenance ... http://www.tux.quent.fr/

Hors ligne

#9 Le 07/05/2011, à 13:49

twocats

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Est-ce mal d'utiliser cat ?

C'est inutile et alourdi le code. Dans la ligne :

dateInstal=$(cat /var/log/dpkg.log | grep "\ install\ " | head -1 | cut -d" " -f1)

grep gère parfaitement les fichiers :

dateInstal=$(grep "\ install\ " /var/log/dpkg.log | head -1 | cut -d" " -f1)

La réponse est 42

Hors ligne

#10 Le 07/05/2011, à 15:58

Felix_Faure

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Quent57 a écrit :

Le paquet gstreamer0.10-ffmpeg, gstreamer0.10-fluendo-mp3, gstreamer0.10-plugins-bad, libavcodec-extra-52 doivent être ceux qui sont installés quand t'a pas les plugin et qu'on te demande "voulez vous pouvoir lire un mp3 ?".

Effectivement, j'ai du probablement installer cela avec un navigateur internet.

Quent57 a écrit :

Alors tu vois "linux-headers-2.6.35-23, linux-headers-2.6.35-23-generic ou linux-image-2.6.32-25-generic." dans ta liste ?
As tu fais une mise à jour de version de Ubuntu de ce système ?
Si oui, c'est vrai que c'est pas géré dans ce script.
Sinon je ne comprend pas ce que font ces lignes ici, sauf si tu t'est amusé à installer ou supprimer des noyau linux

Oui, j'ai dans ma liste :
admin         linux-image-2.6.32-25-generic          2010-09-02  18:38:41
admin         linux-image-2.6.35-22-generic          2010-10-13  11:20:49
admin         linux-image-2.6.35-23-generic          2010-10-28  08:17:34
admin         linux-image-2.6.35-24-generic          2010-12-08  11:37:10
admin         linux-image-2.6.35-25-generic          2011-01-15  08:27:47
admin         linux-image-2.6.35-26-generic          2011-02-02  11:18:49
admin         linux-image-2.6.35-27-generic          2011-03-03  09:14:35
admin         linux-image-2.6.35-28-generic          2011-03-20  10:54:45
devel         linux-headers-2.6.35-23                2010-10-28  08:18:06
devel         linux-headers-2.6.35-23-generic        2010-10-28  08:18:13
devel         linux-headers-2.6.35-24                2010-12-08  11:37:49
devel         linux-headers-2.6.35-24-generic        2010-12-08  11:37:55
devel         linux-headers-2.6.35-25                2011-01-15  08:28:17
devel         linux-headers-2.6.35-25-generic        2011-01-15  08:28:25
devel         linux-headers-2.6.35-26                2011-02-02  11:19:18
devel         linux-headers-2.6.35-26-generic        2011-02-02  11:19:27
devel         linux-headers-2.6.35-27                2011-03-03  09:15:15
devel         linux-headers-2.6.35-27-generic        2011-03-03  09:15:27
devel         linux-headers-2.6.35-28                2011-03-20  10:55:34
devel         linux-headers-2.6.35-28-generic        2011-03-20  10:55:43

J'ai effectivement fait une mise à jour de mon système lorsque je suis passé de Ubuntu 10.04 à 10.10. Mais je ne me suis jamais amusé à installer ou supprimer des noyaux Linux "à la main". Toutes ces mises à jour de noyau ont été faites automatiquement par le Gestionnaire de Mise à jour.

Par ailleurs, la remarque de Twocats concernant la suppression de "cat" lorsque l'on a un "grep" est très intéressante : je vais pouvoir simplifier quelques uns de mes scripts !

Hors ligne

#11 Le 07/05/2011, à 16:36

quent57

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

twocats a écrit :

Est-ce mal d'utiliser cat ?

C'est inutile et alourdi le code. Dans la ligne :

dateInstal=$(cat /var/log/dpkg.log | grep "\ install\ " | head -1 | cut -d" " -f1)

grep gère parfaitement les fichiers :

dateInstal=$(grep "\ install\ " /var/log/dpkg.log | head -1 | cut -d" " -f1)

Merci, je vais corriger ceci dans la prochaine version.

Felix_Faure a écrit :
Quent57 a écrit :

Le paquet gstreamer0.10-ffmpeg, gstreamer0.10-fluendo-mp3, gstreamer0.10-plugins-bad, libavcodec-extra-52 doivent être ceux qui sont installés quand t'a pas les plugin et qu'on te demande "voulez vous pouvoir lire un mp3 ?".

Effectivement, j'ai du probablement installer cela avec un navigateur internet.

Quent57 a écrit :

Alors tu vois "linux-headers-2.6.35-23, linux-headers-2.6.35-23-generic ou linux-image-2.6.32-25-generic." dans ta liste ?
As tu fais une mise à jour de version de Ubuntu de ce système ?
Si oui, c'est vrai que c'est pas géré dans ce script.
Sinon je ne comprend pas ce que font ces lignes ici, sauf si tu t'est amusé à installer ou supprimer des noyau linux

Oui, j'ai dans ma liste :
admin         linux-image-2.6.32-25-generic          2010-09-02  18:38:41
...

J'ai effectivement fait une mise à jour de mon système lorsque je suis passé de Ubuntu 10.04 à 10.10. Mais je ne me suis jamais amusé à installer ou supprimer des noyaux Linux "à la main". Toutes ces mises à jour de noyau ont été faites automatiquement par le Gestionnaire de Mise à jour.

Par ailleurs, la remarque de Twocats concernant la suppression de "cat" lorsque l'on a un "grep" est très intéressante : je vais pouvoir simplifier quelques uns de mes scripts !

Alors en faite c'est plutôt les codecs qu'on installe avec totem.
La première fois que l'on veut jouer un fichier mp3 en locale, totem s'ouvre et nous demande d'installer les codecs.

Deuxièmement, lors de la mise à jours 10.04 à 10.10, de nombreux paquets ont été installés en manuelle.
Je ne gère pas du tout ceci pour l'instant, et ils sont tous affichés.
J'ai ma petite idée pour traiter ce problème, je ne sais pas si j'aurais le temps prochainement.

Mais cela n'expliqua pas les différentes lignes linux, je vais chercher pourquoi tu a ceci.
Peut tu me donner le résultat de

aptitude search '~i !~M' -F '%p' | grep "linux-"

Merci smile

Dernière modification par quent57 (Le 07/05/2011, à 16:38)


En maintenance ... http://www.tux.quent.fr/

Hors ligne

#12 Le 07/05/2011, à 17:47

Felix_Faure

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

aptitude search '~i !~M' -F '%p' | grep "linux-" a écrit :

linux-firmware                                                                 
linux-generic                                                                   
linux-headers-2.6.35-23                                                         
linux-headers-2.6.35-23-generic                                                 
linux-headers-2.6.35-24                                                         
linux-headers-2.6.35-24-generic                                                 
linux-headers-2.6.35-25                                                         
linux-headers-2.6.35-25-generic                                                 
linux-headers-2.6.35-26                                                         
linux-headers-2.6.35-26-generic                                                 
linux-headers-2.6.35-27                                                         
linux-headers-2.6.35-27-generic                                                 
linux-headers-2.6.35-28                                                         
linux-headers-2.6.35-28-generic                                                 
linux-headers-generic                                                           
linux-image-2.6.32-25-generic                                                   
linux-image-2.6.35-22-generic                                                   
linux-image-2.6.35-23-generic                                                   
linux-image-2.6.35-24-generic                                                   
linux-image-2.6.35-25-generic                                                   
linux-image-2.6.35-26-generic                                                   
linux-image-2.6.35-27-generic                                                   
linux-image-2.6.35-28-generic                                                   
linux-image-generic                                                             
linux-libc-dev                                                                 
linux-sound-base

Personnellement, ce résultat ne m'étonne pas particulièrement. Presque tous les deux mois, on a une nouvelle sous-version du noyau pour corriger des erreurs ou vulnérabilités qui est proposée en mise à jour. Ce sont d'ailleurs toutes ces versions du noyau que GRUB me propose au lancement de mon système pour un éventuel retour en arrière. Je croyais que c'était quelque chose de classique, parce que je suis plutôt un utilisateur "lambda" et je n'ai rien trafiqué sur mon système...

EDIT : on peut effectivement ne garder que le dernier noyau dans la liste de GRUB:
http://doc.ubuntu-fr.org/grub#ne_garder … s_la_liste

Dernière modification par Felix_Faure (Le 07/05/2011, à 17:54)

Hors ligne

#13 Le 07/05/2011, à 17:58

quent57

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Felix_Faure a écrit :
aptitude search '~i !~M' -F '%p' | grep "linux-" a écrit :

linux-firmware                                                                 
(...)                                             
linux-sound-base

Personnellement, ce résultat ne m'étonne pas particulièrement. Presque tous les deux mois, on a une nouvelle sous-version du noyau pour corriger des erreurs ou vulnérabilités qui est proposée en mise à jour. Ce sont d'ailleurs toutes ces versions du noyau que GRUB me propose au lancement de mon système pour un éventuel retour en arrière. Je croyais que c'était quelque chose de classique, parce que je suis plutôt un utilisateur "lambda" et je n'ai rien trafiqué sur mon système...

EDIT : on peut effectivement ne garder que le dernier noyau dans la liste de GRUB:
http://doc.ubuntu-fr.org/grub#ne_garder … s_la_liste

C'est normal d'avoir plusieurs version du noyau dans une utilisation classique.
En faite ce qui est bizarre c'est que ces paquets soit marqués comme étant installés manuellement.
Mais ce doit être juste une mesure de prévention automatique pour qu'un nettoyage automatique ne supprime pas le noyau linux suite a une mauvaise manipulation, ou un bug.

Je filtrerai donc les paquets linux-image et linux-headers

Dernière modification par quent57 (Le 07/05/2011, à 17:58)


En maintenance ... http://www.tux.quent.fr/

Hors ligne

#14 Le 07/05/2011, à 18:02

AnsuzPeorth

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Bjr,
Si sputnick passe par là, les golden awards vont pleuvoir big_smile
useless of pipe, of cat, of for, ... et j'en passe.

je vais pas corriger ton script, mais si la vitesse d'execution est importante, il serait préférable de le coder en python, bash n'est pas le plus rapide des langages ...

Sinon, si tu veux rester avec bash, il faut éviter l'utilisation des pipes, ca ralenti le tout.
préférer la redirection:

echo $var | grep pattern
grep pattern <<< "${var}"

Egalement, préférer des solutions fullbash plutot que des outils tel que grep & co.
dans un boucle par exemple, plutot que;

while read line; do
 if grep pattern <<< "${line}"
done

plus rapide:

while read line; do
 [[ "${line}" =~ pattern ]] &&
done

J'ai vu que tu faisait 2 cat sur le même fichier avec un grep identique, bien que cela ne jouera pas vraiment sur la vitesse, autant mettre le contenu du grep pattern fichier dans une variable, ensuite y récup tes éléments.

variable_fichier=$(grep "\ install\ " fichier)
allPackagesDate=$(cut -d ' ' -f1,2,3 <<< "${variable_fichier}")
dateInstal=$(tail -1 <<< "${variable_fichier}")
#découpe avec cut:
#dateInstal=$(cut -d ' ' -f1 <<< $dateInstal)
#découpe avec bash:
dateInstal=${dateInstal%% *} 

Si tu n'as qu'un élément de la ligne à récupérer, plutot que cut, utilise la substitution bash, comme l'exemple ci-dessus, bcp plus rapide


Ce qui pique les yeux aussi, c'est l'utilsation de la boucle for i in $(cat fichier), tu t'emm... à modifier l'IFS & co, alors que la boucle while est plus appropriée:

while read line
do

done < fichier

Il y aurait encore surement des choses à arranger, mais bon ....

Comme d'hab, c'est une façon de faire, il y a tjrs mieux, mais déjà, si tu modifie tout ça, tu gagnera un peu de temps, et ton code sera plus propre !


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#15 Le 07/05/2011, à 18:13

quent57

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Bonjour AnsuzPeorth,
merci bien, je prend note de tes indications.

Oui, python serai une idée, ce qui est plus simple avec bash, c'est l'accès à des outils comme tail, head, grep, join, cut que je ne suis pas sur de retrouver dans python. De plus avec bash je peu lancer simplement des commande comme aptitude, dpkg et je ne sais pas bien comment cela marche avec python.

C'est quoi la différence entre << (que je crois connaitre) et <<< (que tu utilise) ?

En faite, aurais tu une bonne documentation bash qui explique tout cela ? J'ai trouvé plein d'intro sur le net, mais pas de tuto claire et complet.

Il faudrait que je me documente un peu sur python, ca pourrais m'être utile par la suite de toute manière.
Donc peut-être une v2 en python. (dsl je ne respecte pas les règle de nommage de numéro de version !).


En maintenance ... http://www.tux.quent.fr/

Hors ligne

#16 Le 07/05/2011, à 20:41

AnsuzPeorth

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Oui, python serai une idée, ce qui est plus simple avec bash, c'est l'accès à des outils comme tail, head, grep, join, cut que je ne suis pas sur de retrouver dans python.

Ah, c'est sur, tu ne trouveras plus ce genre d'outils, c'est beaucoup plus simple en python.

De plus avec bash je peu lancer simplement des commande comme aptitude, dpkg et je ne sais pas bien comment cela marche avec python.

C'est là, où à mes yeux, bash à toute sa place (sinon je n'aurais écrit pas glade2script). Bien que cela ne soit pas très difficile de faire ça en python, bash est plus plus souple si on ne doit exécuter que des commandes systèmes.

Tout dépends du script que tu veux écrire, si tu as un gros traitement à faire, un gros logiciel ou qui devra être maintenu/modifié dans le temps, python est le plus approprié (python ou autres).
bash est parfait pour les petits/moyens script systèmes dont la vitesse de traitement n'est pas un critère important (bien qu'il ne faut pas perdre de vue le temps d'exécution d'un programme par rapport à son temps d'utilisation).

C'est quoi la différence entre << (que je crois connaitre) et <<< (que tu utilise) ?

< <(commande), redirection de commande
<<< "${var}", redirection de variable

En faite, aurais tu une bonne documentation bash qui explique tout cela ? J'ai trouvé plein d'intro sur le net, mais pas de tuto claire et complet.

Pour faire un bon tour d'horizon du scripting bash (pas prendre peur de la taille de la doc, bcp d'exemples et ça se lit bien)
http://abs.traduc.org/abs-fr/
Sinon, man bash pour ce qui concerne bash.

Il faudrait que je me documente un peu sur python, ca pourrais m'être utile par la suite de toute manière.

Python est plus simple que bash je pense (pour une utilisation simple), par contre la POO, les classes, self, héritages & co, au début c'est un peu galère, mais après, quand on découvre la puissance ...


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#17 Le 12/05/2011, à 21:32

quent57

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Bon, du coup dès que j'ai de temps j'y refait en python (exams en ce moment ..)
Merci bien pour les infos !
2eme étape ce sera intégration a la logithèque Ubuntu, youpi, je rêve !
3eme proposition upstream (!!)
Reste à savoir si c'est un besoin pour beaucoup d'utilisateur. Ca me semble très important comme fonctionnalité mais y'a ptet que moi qui pense ça!
Au moins j'ai une base de demo a peu prêt fonctionnelle en bash, c'est déjà ça !


En maintenance ... http://www.tux.quent.fr/

Hors ligne

#18 Le 18/09/2011, à 13:45

janvier42

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Salut,
Super initiative, je trouve que c'est une bonne idée pour pouvoir facilement installer toutes ses applications en cas de réinstallation du système ou mise à jour de la version d'ubuntu.
Je voulais juste savoir où en était ton projet d'écriture du programme en python ?

Hors ligne

#19 Le 23/10/2011, à 21:52

quent57

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

janvier42 a écrit :

Salut,
Super initiative, je trouve que c'est une bonne idée pour pouvoir facilement installer toutes ses applications en cas de réinstallation du système ou mise à jour de la version d'ubuntu.
Je voulais juste savoir où en était ton projet d'écriture du programme en python ?

Salut, je viens de voir ton message, je répond donc un peu en retard.
Au final Didier Roche à écrit un programme : OneConf, qui permet de faire cette synchro entre plusieurs PC. (Merci a lui !)
Ce programme est en faite une "extension" de la logithèque, et il est maintenant installé par défaut dans Oneiric. (Fichier -> Synchronisation entre ordinateurs).
Mon programme n’évoluera donc que très peu, mais il pourra toujours être utiles pour voir les changement que l'on a fait depuis l'installation du pc.


En maintenance ... http://www.tux.quent.fr/

Hors ligne

#20 Le 24/10/2011, à 02:33

TraGiKomiK

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Bonjour,

Alors je viens de tester le script (qui parle d'insomnie?) et j'ai un premier retour:
La lecture ne s'effectue que sur un fichier log (/var/log/dpkg.log) hors son mon install j'ai les fichiers dpkg.log / dpkg.log.1 / dpkg.log.[2-9] donc il faut que j'extrai les archives, que je lise les fichiers et affiche la sortie de ceux-ci pour ne pas avoir que les programmes installés recemments wink
Si l'insomnie dure je rajoute la ligne au script et la rajoute ici wink


Merci de mettre [RESOLU] dans le titre de votre post une fois le  probleme reglé!

GNU/Linux -> \o/

Hors ligne

#21 Le 24/10/2011, à 09:18

quent57

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Bonjour TraGiKomiK,
merci pour ton retour, mais normalement, le cas que tu cite est déjà traité ici :


# adresse de base du fichier des logs.
log="/var/log/dpkg.log"

# on affiche d'abord les logs en gz (2-x) dans l'ordre inverse (x-2) puis les autres (.1 et néant) dans l'ordre inverse.
# on ne récupere que les ligne concernant une installation.
leslogs=$(echo -e "$(gunzip $(ls $log*.gz | sort -r )  --stdout ; cat $(ls $log* | grep -v ".gz" | sort -r ))" | grep "\ install\ ")

Cordialement
Quentin


En maintenance ... http://www.tux.quent.fr/

Hors ligne

#22 Le 24/10/2011, à 21:02

TraGiKomiK

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

re,

toutes mes excuses j'avais pris la version 1.1 sad


Merci de mettre [RESOLU] dans le titre de votre post une fois le  probleme reglé!

GNU/Linux -> \o/

Hors ligne

#23 Le 28/01/2012, à 16:16

Markorki

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Bonjour, je réveille ce fil parce que je suis intéressé par l'utilisation de la liste des paquets installés "manuellement", pour aligner une machine neuve sur une autre qui a beaucoup vécu, qui marche bien mais dont le hard tombe en miettes.
Le source publié ici (post du 3/5/2011) est-il toujours d'actualité, ou y a-t-il mieux pour le "transfert" de la liste des paquets installés manuellement d'une machine vers une nouvelle machine ?

Les paquets ajoutés hors les dépots officiels Ubuntu (tels les drivers d'imprimante Canon par exemple) apparaissent-ils dans cette liste et sont-ils installés automatiquement ?

Hors ligne

#24 Le 29/01/2012, à 20:22

quent57

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

Bonjour Markorki
Ce script marche toujours sous Ubuntu 11.10. (testé aujourd'hui).
Il a l'avantage d'être assez exhaustif, mais des paquets sont notés comme "installés manuellement" alors qu'ils ne le sont pas, il convient de faire encore un peu de tri. Les paquets ajoutés hors dépôts sont bien listés.

La logithèque possède une fonction "similaire" (depuis Ubuntu 11.10) qui permet de sauvegarder sur Ubuntu One ses programmes installés  et de les réinstallés facilement sur une autre installation. (On vois les programme présent sur un autre pc, mais pas sur le présent).
Mais il ne se base pas sur les logiciels installés 'manuellement'.

Inconvénient de cette méthode "Logithèque" pour moi
- Principalement les logiciels "graphiques" sont mis en avant
- Pour voire les autre logiciel, on a une liste exhaustive cette fois, donc très longue.
Cependant l'intégration a la logithèque est très pratique.

En tout cas ce script que j'ai développé coûte rien, prend 2 minutes,  et la liste pourra toujours servir une fois sauvegardée de coté !

Il faudrait j'intègre ceci à la logithèque également, mais c'est moins simple  !

N'hésite pas si t'a d'autres question/ si tu souhaite améliorer le script !!
Cordialement

Dernière modification par quent57 (Le 29/01/2012, à 20:28)


En maintenance ... http://www.tux.quent.fr/

Hors ligne

#25 Le 29/01/2012, à 22:34

n3o51

Re : [Script Bash]Liste Paquets installés manuellement après l'installation

 dpkg -l | grep "^ii"

c'est pas mieux ca pour lister les paquets car moi j'utilise apt et non aptitude donc cette commande est indépendante enfin je pense .


Welcome to the real world
________________________________

Hors ligne