Wiki Linux SMH

   

Flux RSS

Recuperer Liste Des Paquets Deb Pour Update

1 - Script 1

Bon l'idée est de récupérer la liste d'urls des fichiers pour: la mise à jour comme l'installation de nouveau paquets la réponse: mon script Le seul problème : il faut encore faire un apt-get update

Comment ca marche: On met à jour la liste de paquets

apt-get update

Puis on choisit si on veut la liste des urls des paquets à mettre à jour

./get_urls update

Ou bien la liste des paquets pour installer un paquet (les dépendances seront aussi dans les urls) ainsi que ceux du update.

./get_urls install paquet
#!/bin/bash


rm -f urls_install.txt
touch urls_install.txt
unset package_list
ftp="ftp:''"

function catch_package_list( ) {

    apt-get -d -s install $1 | grep Inst | cut -d' ' -f2 > temp
    
    #if [ $? -eq 0 ]
    #then
    #echo "Erreur"
    #return 1
    #fi
    
    while read ligne 
    do
        package_list=$package_list" "$ligne
    done < temp
    rm -f temp

}

function save_urls(){
    
    #for package in $package_list
    while [ -n "$1" ]
    do
        package=$1
        shift
        addr=`apt-cache showpkg $package | grep /var/lib/apt/lists | cut -d '/' -f6 | cut -d '_' -f1`
        rep=`apt-cache showpkg $package | grep /var/lib/apt/lists | cut -d '/' -f6 | cut -d '_' -f2`
        filename=`apt-cache show $package | grep Filename: | cut -d ' ' -f2`
        echo -e "$ftp$addr/$rep/$filename\r" >> urls_install.txt
    done
}

catch_update(){
    echo catching all packages names
    package_list=`apt-get -s dist-upgrade | grep Inst | cut -d ' ' -f2`
}

catch_install(){
    #if arg are not ""
    if [ -z $1 ]
    then
        echo "Error: no packages for install"
        exit 0
    fi
    #while args
    while [ -n "$1" ]
    do
        echo "Catching package list for package "$1
        catch_package_list $1
        shift
    done
}

#checking first arg
uori=$1
shift
#Update or install new package?
if [ "$uori" ! "" ]
then
    uori="update"
elif [ "$uori"  "update" ]
then
    catch_update
elif [ "$uori" ! "install" ]
then
    catch_install $*
elif [ "$uori"  "all" ]
then
    catch_update
    catch_install $*
else
    echo "syntax error"
    exit 1
fi

echo "Saving urls of packages"
save_urls $package_list

echo done!

Pour le télécharger

Donc il marche quelque soit votre sources.list mailez moi si y'a un pb, _ricardinho_ at _worldonline.fr_

2 - Script 2

Voici le script bash que mon crontab effectue tous les jours afin de mettre à jour mon système.

Principe :

  • Récuperer la liste des mises à jour disponibles en effectuant une simulation avec apt-get upgrade,
  • Recupérer la liste des paquets déjà installé sur le sytème grâce à la commande dpkg,
  • Conserver les paquets communs devant être mis à jour,
  • Installer le tout.
#!/bin/bash
#
# Auteur ... : thialme (thialme at smhteam.info)
# Date ..... : 27/11/2006
# Version .. : 1.01
#
# Description :
#	Script de mise à jour des paquets présents sur le système. Dans un premier temps, une mise à jour
# des dépôts est effectuée. Ensuite, la liste des paquets installés est comparée avec la liste des paquets
# nécessitant une mise à jour. La mise à jour est effectuée avec l'option -y et --force-yes afin de ne pas
# bloquer l'installation.

# Déclaration des constantes locales au module
# --------------------------------------------
RELEASE='1.01'

# Initialisation des variables
# ----------------------------
pkg_list=''

# Vérifier que l'utilisateur est bien root
if (( `/usr/bin/id -u` != 0 )); then { echo "Désolé, Vous devez être root..."; exit 1; } fi
 
# Mettre à jour la liste des paquets
apt-get update

# Obtenir la liste des anciens paquets pour une mise a jour et les nouveaux paquets a installer
pkg_list_u=`apt-get -s dist-upgrade | grep Inst | cut -d' ' -f2`

# Obtenir la liste des paquets installés sur le système
pkg_list_i=`dpkg -l | cut -d' ' -f3`

# Effectuer la comparaison
for pkg_i in $pkg_list_i;do
       for pkg_u in $pkg_list_u;do
               if [ "$pkg_i" = "$pkg_u" ]
               then
                       pkg_list=$pkg_list" "$pkg_i
               fi
       done
done

# Faire une mise à jour des paquets installés
if [ -n "$pkg_list" ]; then apt-get -y --force-yes install $pkg_list; fi

# Supprimer les paquets orphelins
apt-get -y remove --purge $(deborphan)

# Supprimer les fichiers téléchargés présent dans /var/cache/apt/archives
apt-get clean

exit 0

Remarque : On m'a fait remarquer, et à juste titre, qu'il existait dejà un soft qui faisait ca sous Ubuntu, et il en est de même sur la Debian (en mode graphique). Voici le lien sur le wiki pour ce qui est de la Debian : NotificationDeMiseAJourDisponible

Vous êtes : 38.107.191.87 Dernière modification : 27/11/06 23:55 Propriétaire : Fritz Modifié par : thialme

Commentaires

Afficher les commentaires
Il n'y a aucun commentaire sur cette page