IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Installation de paquets en masse dans un script


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 892
    Billets dans le blog
    1
    Par défaut Installation de paquets en masse dans un script
    Bonjour,

    pour réaliser un script de construction d'une distribution sur raspberry Pi (sur une Raspbian, donc Debian), je dois installer des paquets en masse.

    J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    apt-get install -y paquet1 paquet2 paquet3...
    Or je constate que lorsqu'il y a des paquets manquants dans le dépôt, aucun paquet de la liste ne s'installe. Ça se comporte comme si j'avais fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    apt-get install -y paquet1 && paquet2 && paquet3...
    Comment faire en sorte que les paquets présents dans les dépôts s'installent même lorsque certains paquets sont absents ? Mes recherches sur le Net et dans les man pages ne m'ont pas permis de trouver de réponse.
    Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
    Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 417
    Par défaut
    Bonjour,

    Dans le man apt-get :
    -m, --ignore-missing, --fix-missing
    Ignorer les paquets manquants ; si des paquets ne peuvent être récupérés, ou, après récupération, ne satisfont pas au contrôle d'intégrité,
    cette commande met ces paquets de côté et gère le résultat. Utiliser cette option conjointement avec -f peut produire une erreur dans
    certaines situations. Quand un paquet, sélectionné pour une installation (particulièrement si c'est mentionné en ligne de commande), ne peut
    être récupéré, il est mis silencieusement de côté. Élément de configuration : APT::Get::Fix-Missing.

  3. #3
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 892
    Billets dans le blog
    1
    Par défaut
    Il va falloir que je réapprenne à lire, parce que je suis vraiment passé à côté de cette option alors que j'ai eu la page sous les yeux !

    Sais-tu si avec cette option ça renvoie une erreur lorsqu'un paquet est manquant ?
    Parce qu'il faudra tout de même pouvoir faire afficher, en fin de script, ce qui a posé problème.
    Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
    Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 417
    Par défaut
    Bon en fait, c'est une fausse piste, l'option ne sert pas du tout à ça (soit dit en passant, le man français est encore pas terrible...)

    Le seul workaround existant semple être la boucle unitaire d'installation de chaque paquet...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in ${listpackage}
    do
      sudo apt-get install $i
    done
    ou plus subtil mais certainement plus long (quoique pas sur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    listfinal=""
    for i in ${listpackage}
    do
      if sudo apt-get --print-uris install $i >/dev/null
      then
        listfinal="$listfinal $i"
      fi
    done
    echo "sudo apt-get install $listfinal"
    la sortie du 2ème script donnerait pour listpackage=toto ash tata tcsh:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    E: Impossible de trouver le paquet toto
    E: Impossible de trouver le paquet tata
    sudo apt-get install  tcsh ash
    Et bien sur ici, je fais un echo au lieu de lancer la commande...

  5. #5
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 892
    Billets dans le blog
    1
    Par défaut
    Merci disedorgue,

    on n'échappe pas en fait à la nécessité de traiter un à un chaque paquet..
    Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
    Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 417
    Par défaut
    Oui, ou alors peut-être tricher avec apt-cache afin d'avoir la liste de ceux qui existent en une seule fois, ce qui doit être plus rapide. Par contre, chez moi, je n'arrive pas à choper la sortie d'erreur: dés que je la détourne, je récupère rien...

    Donc ici, le but serait:
    1) On récupère la liste des package existant de la liste initiale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listefinale=$(apt-cache -g show $listeinitiale | sed -n 's/^Package: *//p' | tr '\n' ' ')
    2) On affiche les packages non trouvés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ${listeinitiale} | sed "s/\(${listefinale// /\\|}\n\) *//g"
    3) On installe la liste valide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo apt-get install $listefinale

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/03/2018, 16h55
  2. Obtenir l'utilisateur courant dans un script de postinstallation d'un paquet
    Par Philippe Dpt35 dans le forum Shell et commandes GNU
    Réponses: 33
    Dernier message: 07/11/2017, 12h52
  3. dezipper une archive dans un script d'installation
    Par killgones dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 07/07/2014, 15h18
  4. Réponses: 4
    Dernier message: 13/03/2014, 12h47
  5. Requête POST dans un script bash
    Par desperado dans le forum Linux
    Réponses: 4
    Dernier message: 11/12/2007, 23h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo