Installation d'un paquet a distance Ubuntu

asma sisi Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   -
bonjour,
j'aimerai installer un ensemble de paquets a distance pour le client ldap (ldap-auth-client_0.5.2_all.deb ,auth-client-config_0.9_all.deb ,ldap-auth-config_0.5.2_all.deb,libnss-ldap_261-2.1ubuntu4_i386.deb, libpam-ldap_184-8ubuntu1_i386.deb) ... je me connecte au pc distant avec ssh et je lance la commande dpkg -i nom_du_paquet . Tout cela est mis dans un script (bash shell), jusqu'au là pas de problème
il y a certains paquets qui demandent une configuration donc des réponse alors que moi je ne doit pas intervenir, le script doit s'exécuter tout seul sur la machine distante .
puisque cette configuration modifie des fichiers ...je les ai remplacer mais quand je consulte les paquets installés il me dit qu'il y a des paquets défectueux.
alors comment puis-je installer les paquets sans avoir à répondre aux questions ou les ignorer complètement .
merci d'avance ...
A voir également:

1 réponse

mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
La première chose à faire c'est de virer les paquets défectueux, par exemple avec la commande dpkg --purge :

sudo dpkg --purge paquet1 paquet2


Il se peut que tes .deb soient corrompus ou qu'il manque des dépendances. Dans tous les cas il vaut mieux installer tes paquets via un gestionnaire de paquet (aptitude, apt-get) plutôt que d'y aller avec dpkg. Ainsi tu auras la certitude qu'il n'y aura pas de problèmes de dépendances.

Automatisation de la procédure

Plutôt que d'injecter en dur des paquets avec scp et de les dépaqueter avec dpkg -i, je pense qu'il serait plus raisonnable de les déployer avec aptitude (ou apt-get) via ssh directement :

ssh root@server aptitude update   
ssh root@server aptitude safe-upgrade   
ssh root@server aptitude install paquet1 paquet2


Étant donné que tu es sous ubuntu il faudrait activer le compte root et s'assurer que root peut se connecter en ssh (voir /etc/ssh/sshd_config), bref ce n'est pas forcément l'idéal. Ceci dit je pense que tu peux faire directement un :

ssh user@server sudo aptitude update   
ssh user@server sudo aptitude safe-upgrad   
ssh user@server sudo aptitude install paquet1 paquet2


Le problème c'est qu'à ce stade ssh te demandera le mot de passe 3 fois. On peut donc imaginer que tu utilises une clé ssh :
http://prendreuncafe.com/blog/post/2005/08/29/262-installer-sa-cle-ssh-sur-un-serveur-distant

À tester mais tu risques également d'avoir sudo qui va te demander le mot de passe à chaque fois. Ainsi il serait peut être plus sage d'utiliser un script shell install.sh que l'on va transférer sur la machine distante et transférer avec scp. Sur ta machine cliente crée deux fichiers. Dans l'idée (je n'ai pas testé) voici ce qu'on pourrait imaginer :

install.sh

#!/bin/sh   

aptitude update   
aptitude safe-upgrade   
# remplace paquet1... par ce que tu souhaites installer   
aptitude install paquet1 paquet2


start_install.sh

#!/bin/sh   

if [ $# -lt 1 ]   
then
  echo "usage $0 [login@]host [port]" >/dev/stderr   
  exit 1   
fi   

remote=$1

if [ $# -eq 2 ]   
then
  port=$2
else
  port=22
fi

echo "$0: trying to connect (${remote}:${port})"

# Si le script plante ici, c'est soit que l'host est invalide, soit  
# que le serveur ssh n'est pas accessible ou n'écoute pas  
# sur le port 22  

scp -P ${port} install.sh ${remote}: || {echo "$0: ssh: connection failed" >/dev/stderr; exit 3;}   
ssh -p ${port} ${remote} sudo sh install.sh || {echo "$0: ssh connection failed" >/dev/stderr; exit 4;}
echo "$0: done"
exit 0


En admettant que je ne me sois pas trop craquée et que tu veuilles déployer des paquets sur toto@titi.org cela donne :

sh start_install.sh toto@titi.org


Bonne chance
0