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 18/07/2010, à 13:03

soupaloignon

script verification programes + installation si manquants

Bonjour,

Je bute sur des problèmes que j'arrive pas à résoudre dans une portion de script.

Le contexte est un script qui fait des manipulations sur des fichiers images :
http://forum.ubuntu-fr.org/viewtopic.php?pid=3371321

Ce script utilise quelques programmes et dans une prochaine version j'aimerai y rajouter une portion de script qui aurait ces fonctions :
- Vérification de la présence des dépendances requises
- Si toutes les dépendances sont satisfaites le script se poursuit
- s'il manque des dépendances le script affiche la liste totale des dépendances, celles manquantes, et propose de les installer

La portion de script pour la vérification et l'install est celle-ci :

#!/bin/bash

log1="zenity jhead exiv2 imagemagick sed libimage-exiftool-perl smile"
INSTALL="sudo apt-get install"

er=`for i in $log1
do
	
    which "$i">/dev/null || echo "$i"
done`
if [ ! -z "$er" ] ; then
zenity --question --text="Pour faire fonctionner $title, il faut que les programmes suivants soient installés : \n\n$log1\n\nMais il vous manque :\n$er\n\n\nVoulez-vous que le script les installe ?"
if [ $? = 0 ] ; then
$INSTALL $ser
else
exit
fi   
fi

Il y a plusieurs trucs curieux qui se passent quand je lance juste cette portion :
"wich" est censé localiser une commande, pourtant il me liste imagemagick et libimage-exiftool-perl comme dépendances manquantes alors qu'elles sont installées

Comme sur ma machine j'ai toutes les dépendances déjà installées, j'ai rajouté un soft qui n'a rien à voir (smile) pour voir si l'install se passe bien.
wich reconnait bien que smile est manquant, mais lorsqu eje lance l'install celle-ci ne se fait pas. J'ai juste un retour en console :

Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
0 mis à jour, 0 nouvellement installés, 0 à enlever et 14 non mis à jour.

Merci d'avance pour vos réponses

Dernière modification par soupaloignon (Le 19/07/2010, à 07:18)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#2 Le 18/07/2010, à 13:26

JoelS

Re : script verification programes + installation si manquants

Normalement, la gestion des dépendances est prise en compte par le système de gestion des paquets de la machine cible, et ça pour éviter de réinventer la roue. La résolution des dépendances est un processus assez complexe, évites de le faire.

Il vaut mieux pour toi de faire un script qui 'liste' au début les commandes dont il a besoin et qui s'arrête en cas d'erreur. Et de faire un paquet qui gère l'installation du script et la gestion des dépendances. Si ça te paraît plus compliqué au départ, dis toi bien que par la suite tu va y gagner beaucoup.

je rajoute un truc: la gestion des paquets ne se fait pas obligatoirement sur un poste donné comme tu le penses. Par exemple, la toi tu forces apt-get, mais si l'utilisateur utilise aptitude, dont la base est différente, non seulement ça ne marchera pas, mais en plus tu mettras le bordel sur le poste de l'utilisateur. Et si l'utilisateur n'a pas les droits sudo qui vont bien Et si jamais un utilisateur Fedora veut reprendre ton script, il fait comment vis à vis de rpm et/ou yum ? Et sur slackware ? et Gentoo ? Tu vois que pleins de questions se posent. Donc un (simple) script d'un côté et un paquet pour un système de paquetage d'un autre. Tu maintien le script et le paquet en question, éventuellement quelqu'un d'autre peut prendre en charge la maintenance sur un autre système de paquetage.

Dernière modification par JoelS (Le 18/07/2010, à 13:33)

Hors ligne

#3 Le 18/07/2010, à 21:00

soupaloignon

Re : script verification programes + installation si manquants

Alors je me suis mal exprimé, il ne s'agit pas de dépendances, mais directement de programmes. Et le script fait appel à certains de ces programmes en fonction des actions à effectuer (zenity jhead exiv2 imagemagick sed libimage-exiftool-perl).

Sinon pour poursuivre sur quelques points que tu évoques :

Je me suis fait ce script pour mes propres besoins. Je le diffuse en l'état, s'il peut servir à d'autres tant mieux. Mais je ne me situe pas du tout dans l'optique d'un développement. Donc tout ce qui est lié au portage sur d'autres distributions ne me concerne pas, et ce sera à chacun des utilisateurs éventuels à faire les modifications si nécessaires.

En ce qui concerne aptitude par contre je l'avais prévu, et dans la portion de script finale il y aura une info la dessus (utilisation d'apt-get).

En tout cas merci pour ton intervention pertinente, car j'adhère à son contenu dans le cadre d'un développement "classique" , même si elle est décalée par rapport au besoin d'origine (certainement mal exprimé de ma part, j'ai modifié le titre dans ce sens).

Et je suis donc toujours à la recherche d'informations concernant le 1er post wink

Dernière modification par soupaloignon (Le 19/07/2010, à 07:19)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#4 Le 19/07/2010, à 12:02

HP

Re : script verification programes + installation si manquants

Apprends à écrire des Makefile…
Les scripts d'installation, c'est compliqué pour pas grand chose : c'est réinventer la roue ! make est fait pour çà… c'est, tout simplement, évident ! wink

Par contre l'idée de l'installation des "dépendances" à la place de l'utilisateur est carrément mauvaise, on se croirait sous Wind'Oz là, mais si c'est simplement pour ton usage personnel : alors, ça ne regarde que toi ! wink

Dernière modification par HP (Le 19/07/2010, à 12:06)


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#5 Le 19/07/2010, à 22:57

twocats

Re : script verification programes + installation si manquants

C'est pas étonnant qu'il ne trouve pas libimage-exiftool-perl, ce n'EST PAS un programme, c'est un paquet ! Le programme c'est 'exiftool' (de mémoire). Pareil pour imagemagick. J'ai un peu l'impression que tu fais une bouillie avec programmes, paquets et dépendances, ça aide pas...


La réponse est 42

Hors ligne

#6 Le 21/07/2017, à 12:13

fan2rahan

Re : script verification programes + installation si manquants

Lorsque je cree un script, j y inclus une fonction qui verifie la presence des programmes necessaires:

#Lors de la creation de script verifier la presence des programmes necessaires a son fonctionnement:
	
#Fonction Dependances
fonc_Dep() { 
	List="liste des programmes necessaires"; #ex:      list="vlc mpv streamripper...."
	for prog in $List
	 do
	 which $prog > /dev/null ; #empeche which d afficher ou est le programme
	 done
	    if [ $? -ne 0 ]
	    then  notify-send " Ce script necessite $prog pour fonctionner.   Installez le:'sudo apt-get install $prog'"
	    exit 0;
	    #else notify-send "Dependances satisfaites";      
	    fi
}

si ca peut servir.

Hors ligne

#7 Le 21/07/2017, à 15:01

Watael

Re : script verification programes + installation si manquants

salut,

elle est fausse ta fonction :

$ for i in true false true; do $i; done
$ echo $?
0
$ for i in true false; do $i; done
$ echo $?
1

si le dernier programme est installé $? sera vrai, alors que le programme précédent, qui n'est pas installé, lui, ne sera pas détecté comme étant absent.

checkNeededProgs() {
    local missing=0
    local missingProgs=""
    local neededProgs="liste des programmes necessaires"
    for prog in $neededProgs
    do  
        which $prog > /dev/null || { missing=$(( $missing + 1 )); missingProgs="${missingProgs:+$missingProgs }$prog";}
    done
    if test $missingProgs -ne 0
    then
        notify-send " Ce script necessite $missingProgs pour fonctionner.   Installez les : 'sudo apt-get install $missingProgs'"
        exit 1
    fi
}

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne