Comment créer un script bash qui vérifie si un programme est déjà installé et si ce n'est pas le cas, l'installe?
Merci de votre aide.
Voici le code que j'ai jusqu'à présent:
#/bin/bash
PS3="choose an option"
select opcion in "Installing_Youtube" "exit"
do
case $opcion in
"Installing_Youtube")
youtube-dl > /usr/bin
if [ $? -eq 127 ] ; then
echo "installing youtube"
apt-get update
apt-get install youtube-dl
mkdir Videos
else
echo "Youtube already installed"
fi
;;
"exit")
exit
tu peux le faire:
dpkg -s <packagename> &> /dev/null
puis vérifiez le statut de sortie .niquement si le statut de sortie de la commande ci-dessus était égal à 0
puis du paquet installé.
alors:
#!/bin/bash
echo "enter your package name"
read name
dpkg -s $name &> /dev/null
if [ $? -ne 0 ]
then
echo "not installed"
Sudo apt-get update
Sudo apt-get install $name
else
echo "installed"
fi
Voici une fonction que j'ai écrite dans le but que j'utilise dans mes scripts. Il vérifie si le paquet requis est installé et si non, il invite l'utilisateur à l'installer. Il nécessite un nom de package en tant que paramètre. Si vous ne connaissez pas le nom du paquet auquel appartient un programme requis, vous pouvez le rechercher. Informations sur la disponibilité ici.
function getreq {
dpkg-query --show "$1"
if [ "$?" = "0" ];
then
echo "$1" found
else
echo "$1" not found. Please approve installation.
Sudo apt-get install "$1"
if [ "$?" = "0" ];
then echo "$1" installed successfully.
fi
fi
}
Cette ligne de commande vérifiera à l'aide du programme which
et renverra 0
si elle est installée et 1
si ce n'est pas le cas:
which Apache | grep -o Apache > /dev/null && echo 0 || echo 1
Bien sûr, vous allez l'utiliser de cette manière dans votre script:
which "$1" | grep -o "$1" > /dev/null && echo "Installed!" || echo "Not Installed!"
Un usage simple serait:
#!/usr/bin/env bash
set -e
function checker() {
which "$1" | grep -o "$1" > /dev/null && return 0 || return 1
}
if checker "$1" == 0 ; then echo "Installed"; else echo "Not Installed!"; fi
Notez plusieurs choses:
Pourquoi voulez-vous vérifier en premier lieu? À moins que vous n'ayez une bonne raison, ne le faites pas, juste apt-get install package
terminé. S'il est déjà installé, il sera mis à jour si une version plus récente est disponible, si elle est installée et si elle est à jour, rien ne se passera. Si vous avez une configuration à appliquer, il existe d'autres options, telles que la construction d'un package de configuration qui dépend du package ou l'utilisation d'un logiciel de gestion de la configuration, tel que ansible.
Un moyen simple de rechercher les packages installés à l'aide de apt-mark
:
apt-mark showinstall
listera tous les packages marqués install (déjà installé ou mis en file d'attente pour l'installation). Après cela, il suffit simplement d’emballer le ou les colis qui vous intéressent.
Exemple: apt-mark showinstall | grep -q "^$PACKAGE_NAME$" && echo "installed" || echo "not"