samedi 9 mars 2013

#Depot #Local #paquets #logiciels

script depot local

Bonjour !

Voilà un script destiné à ceux qui n'ont pas de connexion internet chez eux. Ce  petit programme permet de mettre à jour , ou d'installer une nouvelle application sur une machine dépourvue de connexion internet.

Il existe des solutions de cache réseau pour les administrateurs qui  ont la chance d'avoir un réseau:  c'est quand même plus pratique pour mettre à jour une multitude de machine.

Il y a des tas de défauts a ce scripts. Cependant ça à l'air de fonctionner correctement, alors...

RESUME
Ce programme télécharge  des paquets sur les dépots Internet (apt repository) depuis une machine A sous debian. Ensuite il n'y a qu'a copier le repertoire cible sur une clef usb par exemple (si ya assez de place) et  copier sur une autre machine B dans un nouveau repertoire. On édite le fichier /etc/apt/sources.list, pour ajouter le repertoire comme source, et on lance la même commande normale d'installation comme si on avait été sur internet. Le depot local que l'on a copié masque le détail qui manque.

MODE D'EMPLOI DETAILLE
(step by step comme on dit)
convention : les lignes de commandes sont présentées en gras italique comme l'exemple suivant:  echo "Hello JerikoJerk"
1 - on se connecte sur la machine A !!!
2 - on colle le script ci dessous dans un fichier texte (gedit...) que l'on nommera par exemple "debdepot.sh"  (le nom est arbitraire)
3
- on rend le script executable chmod +x  debdepot.sh, ou avec l'interface graphique

4
- on installe le paquet dpkg-dev au besoin (droit super-utilisateur nécessaire). apt-get dpkg-dev.On est toujours sur la machine A. Si ce n'est  pas fait le script ne fonctionne pas.

5 - on ammène le terminal dans le repertoire est enregistré le script à l'aide de "cd " et de "ls" pour vérifier.

6 - on crée le dépot dans un répertoire, arbitrairement /home/user_A/depot/  : sh debdepot.sh creer  /home/user_A/depot/
7
- on selectionne les paquets, au choix
  •  * par une entree manuelle: sh debdepot.sh  actualiser /home/user_A/depot/
  •  * par une liste passee en argument: sh debdepot.sh  actualiser  /home/user_A/depot/  ~/liste
  •  * par un tube (attention cette methode donne l'impression d'un bug, avec un affichage qui s'affole mais tout va bien, il peut y avoir 1500 affichages) : dpkg --get-selections | sh debdepot.sh actualiser /home/user_A/depot/
  • le téléchargement débute automatiquement ainsi que la gestion des dépendances. Il y a rarement un conflit à arbitrer, donc vous pouvez prendre une pause pendant que ma cuisine fonctionne.
    8 - on copie le répertoire /home/user_A/depot/ sur un media amovible.
    9 - on se déconnecte de la machine A
    10
    - on se connecte sur la machine B

    11
    - on connecte le média amovible et on transfère le contenu du média amovible vers un répertoire arbitrairement nommé /home/user_B/depot/ (allez savoir pourquoi)
    12
    - dans un terminal on lance sudo -s avoir la console root (be carefull !!!!). Lorsqu'on n'est pas sous ubuntu, su devrai faire l'affaire.
    13 - dans le terminal root on tape gedit /etc/apt/sources.list et on ajoute la ligne à la fin du fichier  :
    deb file: /home/user_B/depot ./  #depot local

    14
    - on sauvegarde et on ferme gedit
    15 - dans le même terminal on lance:
    apt-get update pour prendre en compte le nouveau dépot.

    16
    - ensuite celon ce qu'on veut faire:
    * apt-get  upgrade pour mettre a jour les logiciels,* apt-get install gnagna pour installer "gnagna"
    17 - enfin exit pour quitter la console root, (sudo -k  pour faire expirer le bail  de  sudo  )

    A l'étape 16 et 17, il  y a des warnings pour signaler que le dépot n'est pas authentifié. Cet avertissement est normal, je n'ai pas réussi à intégrer une signature qui n'apporte pas grand chose, puisque au moment ou les paquets ont été téléchargés, la signature du site dépot à été vérifiée.

    LE SCRIPT

    #!/bin/sh 
    # Autor : jerikojerk (jerikojerk.over-blog.net)
    # Copyright : some rights reserved
    
    back="`pwd`"
    repertoire="`dirname $0`"
    cd "$repertoire"
    repertoire="`pwd`"
    
    
    ################################################################################
    
    W_BINAIRE="warnig_packages.log" # you may custom this
    W_SOURCE="warnig_sources.log" # you may custom this
    
    # this some of this variables are true const.
    LISTS="lists"  
    ARCHIVES="archives" 
    APT_CONF_D="apt.conf.d" 
    BINAIRE="Packages.gz"
    SOURCE="Sources.gz"
    SOURCES_LIST="sources.list"
    APT_CONF="apt.conf"
    PREFERENCES="preferences"
    PAQUETS_DEPOT="paquets.lst"
    STATUS="status"
    DEPOT_CREATE="creer_depot.sh"
    DEPOT_UPDATE="actualiser_depot.sh"
    OVERRIDE="/dev/null"
    
    #if you want to change color of help to fit your shell.
    C_VERT="33[1;32m" #green
    C_NORMAL="33[0;39m" # defaut
    C_ROUGE="33[1;31m" #red
    C_ROSE="33[1;35m" #pink
    C_BLEU="33[1;34m" #blue
    C_BLANC="33[0;02m" #white
    C_BLANCLAIR="33[1;08m" #white strong
    C_JAUNE="33[1;33m" #yellow
    C_CYAN="33[1;36m" #cyan 
    
    ################################################################################
    function aide(){
     echo "usages:"
     
     echo -e  " `basename $0` $C_ROSE actualiser $C_NORMAL  [depot local]  [liste de paquets  |  ]"
     echo -e  "  met à jour un depot."
     echo -e  " `basename $0` $C_ROSE comparer $C_NORMAL  [depot local]  [liste de paquets]"
     echo -e  "  verifie si les deux listes sont identiques, retourne 0 si oui"
     echo -e  " `basename $0` $C_ROSE creer $C_NORMAL  [depot local] "
     echo -e  "  cree un depot."
     echo -e  " `basename $0` $C_ROSE effacer $C_NORMAL  [depot local]"
     echo -e  "  efface le depot."
     echo -e  " `basename $0` $C_ROSE enlever $C_NORMAL  [depot local]"
     echo -e  "  enlève le paquet du depot."
     echo -e  " `basename $0` $C_ROSE index $C_NORMAL  [depot local]"
     echo -e  "  regenère l'index du depot."
     echo -e  " `basename $0` $C_ROSE liste $C_NORMAL [depot local]  [liste]"
     echo -e  "  positionne une liste de reference pour le depot local"
     echo -e  " `basename $0` $C_ROSE montrer $C_NORMAL  [depot local]  [ nom du paquet] "
     echo -e  "  enlève un paquet sans ses dependances"
     echo -e  " `basename $0` $C_ROSE stats $C_NORMAL  [depot local]"
     echo -e  "  some nice stuff"
     echo 
     echo " [depot local] signifie le repertoire qui contient le depot local, preferez les repertoires absolus"
     echo 
     echo "$0 was design by Jerikojerk, some rights reserved."
     echo -e "Please visit $C_BLEU jerikojerk.over-blog.net $C_NORMAL"
     echo -e "email: $C_BLEU jerikojerk $C_NORMAL*$C_BLEU hotmail $C_NORMAL*$C_BLEU fr $C_NORMAL"
     echo 
    }
    
    ################################################################################
    function analyser(){ 
     local repertoire;repertoire="$1//";repertoire="${repertoire%%//*}"
     apt-cache -c "$repertoire/$APT_CONF" stats
    }
    
    ################################################################################
    function actualiser() {
     local cpt
     local i
     local liste
     local mode
     local paire
     local paquet
     local repertoire
     local tmp
     
     tmp="/tmp/modifier_depot$(date +%s)"
     repertoire="$1//";repertoire="${repertoire%%//*}" # enlever les "/" finaux.
     liste=""
     cpt=0
     
     # basis directory  is $repertoire
     echo "repertoire de base du depot: $repertoire"
    
     if [ ! -d "$repertoire" ];then
      if ! mkdir -p  "$repertoire";then
       # unable to create directory
       echo "impossible de creer le répertoire"
       aide
       exit 1
      fi
     fi
    
     # accepte le mode interactif ou le mode pas interactif
     if [  -z "$2" ]; then 
      mode="i" #script interactif
     elif [ -f "$2" ] ;then  
      mode="n" # script non interactif
     else 
      #faillure file $2 not found
      echo "erreur: fichier '$2' introuvable"
      aide 
      exit 2
     fi
    
     test -f "$repertoire/$PAQUETS_DEPOT" && mv "$repertoire/$PAQUETS_DEPOT" "$repertoire/$PAQUETS_DEPOT.bak"
     
     if [ "_$mode" != "_n" ];then
      #read standard input, one *.deb per line please 
      echo "Lecture de l'entree standart, un paquet par ligne"
      # stop reading with EOF or #. word
      echo  
      while echo -n "fin: '#.' ?" && read ligne
      do
       if [ "_$ligne" == "_#." ];then
        break
       else
        paire="${ligne%%#*}" #on elimine les commentaires
        paire="${paire%% *}" # on filtre tout ce qui est à droite d'une tabulation
         paquet="${paire%% *}" # ici on vire les espaces
        liste="$liste $paquet"
        cpt=$((cpt + 1))
       fi 
      done
      
     else
      # to be factorized
      #read file $2
      echo "Lecture du fichier $2"
      while echo -n "fin: '#.' ?" && read ligne< "$2"
      do
       # useless
       if [ "_$ligne" == "_#." ];then
        break
       else
        paire="${ligne%%#*}" #on elimine les commentaires
        paire="${paire%% *}" # ici on enleve une ligne à partir de sa première tabulation
         paquet="${paire%% *}" # ici on vire les espaces, si jamais les tab on été remplacée par des espaces
        liste="$liste $paquet"
        cpt=$((cpt + 1))
       fi 
      done
      
      #retrier le fichier de sortie
      sort --unique --field-separator=n  "$repertoire/$PAQUETS_DEPOT"  "$2" 1> "$tmp"
      cat "$tmp" > "$repertoire/$PAQUETS_DEPOT"
      rm "$tmp"
     fi
    
     # files to download
     echo "paquets a rendre disponible:"
     echo "$liste"
     # total:  $cpt files
     echo "total: $cpt fichiers"
     
     # download
     
     if [ -n "$liste" ]; then 
      # apt-get + fichier de configuration
      echo "mise a jour de la base de donnees"
      apt-get update -c  "$repertoire/$APT_CONF" --quiet 
      echo
      echo "debut du telechargement"
      echo 
      if ! apt-get install -c "$repertoire/$APT_CONF" --quiet --assume-yes $liste ; then
       wait 
       echo
       echo "un des paquets n'a pu etre telecharge, essai de telecharger les paquets un par un"  
       echo
       for i in $liste
       do
        echo 
        echo 
        if ! apt-get install -c "$repertoire/$APT_CONF" --quiet --assume-yes $i; then # pas de guillemets pour liste
         wait 
         echo "erreur de recuperation du paquet:"
         echo "$i"
         echo "> validez pour tenter de continuer ou Ctrl + C pour annuler"
         read ligne
        fi 
       done
      fi
     else
      echo "Pas de paquet en entree"
      aide
      exit 2
     fi
    
     generer_index "$repertoire"
     return 0
    }
    
    ################################################################################
    # generer apt.conf
    function creer(){
     local repertoire
     repertoire="$1//";repertoire="${repertoire%%//*}"
     
     # creating directories
     echo "creation de l'arborescence "
     creer_arborescence "$repertoire"
     wait
     # creating config files
     echo "creation des fichiers de configuration"
     creer_sourceslist  "$repertoire"
     creer_aptconf "$repertoire"
     creer_preferences "$repertoire"
     creer_status "$repertoire"
    
     wait
     echo "Fin de configuration du depot, vous pouvez maintenant ajouter des paquets."
     echo "Pour ajouter des paquets faites:"
     echo "sh `basename $0`  actualiser $repertoire  [ liste de paquet |   ]"
     
    }
    
    ################################################################################
    # generer apt.conf
    function creer_aptconf(){ # repertoire #arch #cible
     local repertoire
     local fichier_cible 
     local achitecture
     
     repertoire="$1//";repertoire="${repertoire%%//*}"
     
     if [ -z "$2" ]; then 
      achitecture="i386"
     else  
      # other archtecture selected
      achitecture="$2";echo "architecture definie par l'utilisateur:$achitecture"
     fi
     
     fichier_cible="$repertoire/$APT_CONF" 
    
     echo "// apt.conf"      >  $fichier_cible
     echo "APT"       >> $fichier_cible
     echo "{"       >> $fichier_cible
     echo " Architecture "$achitecture";"   >> $fichier_cible
     echo " Get::Download-Only "true";"    >> $fichier_cible
      echo " Get::Upgrade "true";"    >> $fichier_cible
     echo " Clean-Installed "false";"    >> $fichier_cible
     echo " Cache-Limit "134217728";"   >> $fichier_cible # pretty cache
     echo " Assume-Yes "true";"    >> $fichier_cible
     echo " Fix-Broken "true";"    >> $fichier_cible
    # echo  " Recommends-Important "true";"  >> $fichier_cible
     echo "};"       >> $fichier_cible
     echo ""       >> $fichier_cible
     echo "Dir"       >> $fichier_cible
     echo "{"       >> $fichier_cible
     echo " State "$repertoire/";"   >> $fichier_cible
     echo " State::status "$STATUS";"   >> $fichier_cible
     echo " State::Lists "$LISTS";"   >> $fichier_cible
     echo " Cache "/$repertoire/";"   >> $fichier_cible
     echo " Cache::archives "$ARCHIVES/";"  >> $fichier_cible
     echo " Etc "$repertoire/";"     >> $fichier_cible
     echo " Etc::SourceList "$SOURCES_LIST";"  >> $fichier_cible
     echo " Etc::Main "$APT_CONF";"    >> $fichier_cible
     echo " Etc::Preferences "$PREFERENCES";"  >> $fichier_cible
     echo " Etc::Parts "$APT_CONF_D/";"   >> $fichier_cible
     echo "};"       >> $fichier_cible
     echo "Acquire::Retries "3";"    >> $fichier_cible
     
     return 0
    }
    
    ################################################################################
    # apt
    # sur que c'est peu pratique si on ajouter un depot par defaut.
    # pour ajouter un depot il faut inserer une ligne du style
    # echo "ligne du depot" >> $fichier_cible
    # sinon on peut appeler le script avec l'action creer, puis éditer le sources.list à la mains
    
    function creer_sourceslist(){   #repertoire #distribution name #cible
     local repertoire
     local distribution 
     local fichier_cible
      
     repertoire="$1//";repertoire="${repertoire%%//*}"
     
     if [ -z "$2" ]; then 
      distribution="dapper"
     else  
      distribution="$2";echo "distribution definie par l'utilisateur:$distribution"
     fi
     
     fichier_cible="$repertoire/$SOURCES_LIST" 
     
     # eventuellement tester si le depot est actif avant de l'inscrire dans le fichier. 
     adresse="fr.archive.ubuntu.com"
     tester_serveur "$adresse"
     
     echo "####### SOURCES.LIST DEPOT LOCAL $distribution#######"   > $fichier_cible
     echo -e "n## 'main'"        >> $fichier_cible
     echo "deb http://$adresse/ubuntu/ $distribution main"    >> $fichier_cible
     echo "deb-src http://$adresse/ubuntu/ $distribution main"  >> $fichier_cible
     
     echo -e "n## 'restricted'"       >> $fichier_cible
     echo "deb http://$adresse/ubuntu/ $distribution restricted"   >> $fichier_cible
     echo "deb-src http://$adresse/ubuntu/ $distribution restricted"  >> $fichier_cible
     
     echo -e "n## 'universe' repository."      >> $fichier_cible
     echo "deb http://$adresse/ubuntu/ $distribution universe"   >> $fichier_cible
     echo "deb-src http://$adresse/ubuntu/ $distribution universe"   >> $fichier_cible
     
     echo -e "n## 'multiverse'"       >> $fichier_cible
     echo "deb http://$adresse/ubuntu/ $distribution multiverse"   >> $fichier_cible
     echo "deb-src http://$adresse/ubuntu/ $distribution multiverse" >> $fichier_cible
     
     echo -e "n## 'bug fix'"       >> $fichier_cible
     echo "deb http://$adresse/ubuntu/ $distribution-updates main restricted"  >> $fichier_cible
     echo "deb-src http://$adresse/ubuntu/ $distribution-updates main restricted"  >> $fichier_cible
     
     echo -e "n## 'backports'"        >> $fichier_cible
     echo "deb http://$adresse/ubuntu/ $distribution-backports main restricted"  >> $fichier_cible
     echo "deb-src http://$adresse/ubuntu/ $distribution-backports main restricted" >> $fichier_cible
     echo "deb http://$adresse/ubuntu/ $distribution-backports universe multiverse" >> $fichier_cible
     echo "deb-src http://$adresse/ubuntu/ $distribution-backports universe multiverse" >> $fichier_cible
     
     adresse="security.ubuntu.com"
     tester_serveur "$adresse"
     echo -e "n## ''securite'"        >> $fichier_cible
     echo "deb http://$adresse/ubuntu $distribution-security main restricted"  >> $fichier_cible
     echo "deb-src http://$adresse/ubuntu $distribution-security main restricted"  >> $fichier_cible
     
     echo "deb http://$adresse/ubuntu $distribution-security universe multiverse"  >> $fichier_cible
     echo "deb-src http://$adresse/ubuntu $distribution-security universe multiverse">> $fichier_cible
     return 0
    }
    
    ################################################################################
    function creer_preferences(){
     # on ne souhaite pas améliorer ça
     local repertoire
     local fichier_cible
     
     repertoire="$1//";repertoire="${repertoire%%//*}"
     fichier_cible="$repertoire/$PREFERENCES"
     touch "$fichier_cible"
     rm "$fichier_cible"
     touch "$fichier_cible"
    
     return 0
    }
    
    ################################################################################
    function creer_status(){
     local repertoire
     local fichier_cible
     # on ne souhaite pas améliorer ça
     
     repertoire="$1//";repertoire="${repertoire%%//*}"
     fichier_cible="$repertoire/$STATUS"
     touch "$fichier_cible"
     rm "$fichier_cible"
     touch "$fichier_cible"
    
     return 0
    }
    
    #################################################################################
    function creer_arborescence(){
     local repertoire
     
     repertoire="$1//";repertoire="${repertoire%%//*}" 
     if [ ! -d "$repertoire" ]; then
      mkdir -p "$repertoire"
     else
      if [ ! -r "$repertoire" ]; then
       if ! chmod +r "$repertoire"; then  
        echo "Vous ne pouvez pas lire le repertoire"
       fi
      fi
      if [ ! -w "$repertoire" ]; then
       if ! chmod +w "$repertoire"; then  
        echo "Vous ne pouvez pas modifier le repertoire"
       fi
      fi
      if [ ! -x "$repertoire" ]; then
       if ! chmod +x "$repertoire"; then  
        echo "Vous ne pouvez pas executer dans le repertoire"
       fi
      fi 
     fi
     
    
     if [ ! -d "$repertoire/$ARCHIVES/partial" ] ; then
      mkdir -p "$repertoire/$ARCHIVES/partial"
     fi
    
     if [ ! -d "$repertoire/$LISTS/partial" ]; then
      mkdir -p "$repertoire/$LISTS/partial"
     fi
     
     touch "$repertoire/$BINAIRE"
     #ln -sv  "$repertoire/$ARCHIVES/$BINAIRE" "$repertoire/$BINAIRE"
     
     return 0
    }
    
    ################################################################################
    function effacer(){
    
     local repertoire;
    
     if [ -d "$1" ];then
      repertoire="$1//";repertoire="${repertoire%%//*}"
     else
      echo "repertoire introuvable"
      exit 1  
     fi
    
     analyser "$repertoire"
     echo " ********************************************************* "
     echo " Confimer l'effacement complet du repertoire? [ oui / non] " 
     read reponse
     if [ "_$reponse" == "_oui" ];then 
      rm -vR  "$repertoire"
     elif [ "_$reponse" == "_non" ];then 
      echo "annule !"
     else
      echo "il faut repondre oui ou non."
     fi
     return 0
    }
    
    ################################################################################
    function enlever(){
     local repertoire
     local paquet
     local ligne
     repertoire="$1//";repertoire="${repertoire%%//*}"
     cd "$repertoire/$ARCHIVES" 
     # positif answer is yes
     
     echo "N'enleve pas les dependances...   pour confirmer: 'y' 'yes' 'o' 'oui'"
     echo 
      while echo -n "fin: '#.' ?" && read ligne
      do
       if [ "_$ligne" == "_#." ];then
        break
       else
        if basename "$ligne"*; then
         paquet=`basename $ligne*`
         paquet="$repertoire/$ARCHIVES/$paquet"
         rm -i "$paquet"
        else 
         echo "non trouvé, ou trop de possibilité"
         ls "$ligne"*
        fi
       fi
     done
     echo "reconstruction de l'index"
     generer_index "$repertoire"
     return 0
    }
    
    ################################################################################
    # regenere le fichier Packages.gz ($BINAIRE) en fonction des fichiers deb présent dans le répertoire passé en paramettre
    function generer_index(){
     
     local repertoire
     repertoire="$1//";repertoire="${repertoire%%//*}"
     
     tester_install || exit 127 # necessaire parce qu'on redirige le flux d'erreur pour virer le warning
     
     if cd "$repertoire"; then
      echo  "attendez pendant la generation de l'index..."
      if [ -e "$repertoire/$BINAIRE" ];then
       rm "$repertoire/$BINAIRE"
      fi
      dpkg-scanpackages "$ARCHIVES" "$OVERRIDE" 2> "$W_BINAIRE"  | gzip -9c > "$BINAIRE"  
      #ln -sv  "$repertoire/$ARCHIVES/$BINAIRE" "$repertoire/$BINAIRE"
    
      echo -n "..."
      #dpkg-scansources "$ARCHIVES" "$OVERRIDE" 2> "$W_SOURCE" | gzip -9c > "$SOURCE" 
      echo "ok!"
      
      #echo "inserez les lignes suivantes a votre fichier /etc/apt/sources.list:"
      #add the following line to your sources.list
      echo "inserez la ligne suivante a votre fichier /etc/apt/sources.list:"
      echo "deb file:$repertoire ./"
      #echo "deb-src  file:$repertoire/ ./"
      return 0
     else
      echo "erreur: Arg 1"
      exit 1
     fi
    }
    
    ################################################################################
    function lister(){
     local repertoire;
     
     if [ -d "$1" ];then
      repertoire="$1//";repertoire="${repertoire%%//*}"
     else
      echo "repertoire introuvable"
      exit 1  
     fi
    
     if [ -f "$2" ];then
      echo -e "Fichier selectionne:n"
      cat "$2"
      if [ $? -eq 0 ]; then 
       echo -e "nncopie simple du fichier"
       cp -v "$2" "$repertoire/$PAQUETS_DEPOT"
       echo "n'oubliez pas d'actualiser le depot maintenant"
       echo "votre depot contiendra au moins les paquets de la nouvelle liste"
      else
       echo "fichier source non lisible"
       aide
       exit 2
      fi
     else
      echo "la liste n'existe pas"
      aide 
      exit 2
     fi
     return 0
    } 
    
    ################################################################################
    function verifier(){
     
     local repertoire;
     
     if [ -d "$1" ];then
      repertoire="$1//";repertoire="${repertoire%%//*}"
     else
      echo "repertoire introuvable"
      exit 1  
     fi
     
     if [ -f "$repertoire/$PAQUETS_DEPOT" ];then
      echo "test de similitude des fichiers de listes de paquets"
      if diff   --suppress-common-lines "$repertoire/$PAQUETS_DEPOT" "$2"; then 
       echo "les listes de paquets concordent."
       return 0
      else
       echo "les listes de paquets sont differentes"
       echo "Veuillez à mettre à jour votre depot et votre kit de securite".
      fi
     else
      echo "il n'y a pas de listes de paquets preenregistree dans le depot."
      echo "pour activer faites:"
      echo "`basename $0` liste [depot local] [nom de la liste]" 
     fi
     return 1
    }
    
    ################################################################################
    function montrer(){
     
     local repertoire;repertoire="$1//";repertoire="${repertoire%%//*}"
     apt-cache -c "$repertoire/$APT_CONF" show "$2"
     return 0
    }
    
    ################################################################################
    function tester_install(){
     dpkg-scanpackages &> /dev/null
     if  [ $? -eq 127 ];then 
      echo 
      echo "le paquet dpkg-dev (dpkg-scanpackages) semble ne pas etre installe sur ce systeme"
      echo "vous devez fixer ce probleme imperativement"
      echo 
      echo "apt-get install dpkg-dev "
      echo  
      return 127
     fi
     
     gzip --version &> /dev/null #celui ci ne devrai pas poser de problèmes.
     if  [ $? -eq 127 ];then 
      echo 
      echo "le paquet gzip semble ne pas etre installe sur ce systeme"
      echo "vous devez fixer ce probleme imperativement"
      echo 
      echo "apt-get install gzip "
      echo  
      return 127
     fi
     
     apt-cache &> /dev/null #celui ci ne devrai pas poser de problèmes.
     if  [ $? -eq 127 ];then 
      echo 
      echo "le paquet gzip semble ne pas etre installe sur ce systeme"
      echo "vous devez fixer ce probleme imperativement"
      echo 
      echo "apt-get install apt-cache "
      echo  
      return 127
     fi
     
     return 0
    }
    ################################################################################
    # test si un serveur est fonctionnel. ce test est indicatif, parfois les serveurs bloquent les ping
    function tester_serveur(){
     if  ping -Aq -c 3 "$1" &> /dev/null ; then 
      #marche mieux avec un résultat positif qu avec un résultat non négatif
      return 0
     else
      echo "Le serveur '$1' ne repond pas"
      return 1
     fi
    }
    
    ################################################################################
    ################################################################################
    
    
    case "$1" in 
     "remove" | "enlever")
      tester_install || exit 1
      if [ -z "$4" ];then
       enlever "$2" "$3"
      else
       aide;exit 2
      fi
      ;;
      
     "erase" | "effacer")
      if [ -z "$3" ];then
       effacer "$2"
      else
       aide;exit 2
      fi
      ;;
      
     "lister"|"list")
      if [ -z "$4" ];then
       lister "$2" "$3"
      else
       aide;exit 2
      fi
      ;;
      
     "show" | "montrer")
      if [ -z "$4" ];then
       montrer "$2" "$3"
      else
       aide;exit 2
      fi
      ;;
      
     "stats")
      if [ -z "$3" ];then
       analyser "$2"
      else
       aide;exit 2
      fi
      ;;
      
     "comparer" | "comparer")
      if [ -z "$4" ];then
       verifier "$2" "$3"
      else
       aide;exit 2
      fi
      ;;
      
     "index")
      if [ -z "$3" ];then
       generer_index "$2"
      else
       aide;exit 2
      fi
      ;;
      
     "update" | "actualiser")
      tester_install || exit 1
      if [ -z "$3" ];then
       actualiser "$2"
      else
       aide;exit 2
      fi
      ;;
      
     "create" | "creer")
      if [ -z "$3" ];then
       creer "$2"
      else
       aide;exit 2
      fi
      ;;
      
     *)# defaut
      aide;exit 1
     ;;
    esac
     
    
    exit 0
    

    liens

    http://doc.ubuntu-fr.org/tutoriel/comment_installer_un_depot_local

    HowTo : Dépôt local Debian sous Debian

    Aucun commentaire:

    Enregistrer un commentaire

    Archives du blog