Comment puis-je créer un script bash qui vérifie si un programme est déjà installé et, s'il ne l'est pas, 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
/usr/bin
?apt-mark showmanual
puis l'installation avec quelque chose commeapt-get install "$(< package.list)"
.Réponses:
tu peux le faire:
dpkg -s <packagename> &> /dev/null
puis vérifiez l'état de sortie. uniquement si l'état de sortie de la commande ci-dessus était égal au
0
package installé .donc:
la source
sudo apt install $name
? La commande doit aller sur la ligne suivante ... Sinon, beau travail ...dpkg
n'est pertinent que pour les paquets Debian installés. Dans le cas particulier d'OP,youtube-dl
par exemple, pourrait également être installé via le gestionnaire de paquets de pythonpip
if dpkg -s “$name” &> /dev/null ; then
? Même effet, imo plus propre / plus clair.if
fait ...Voici une fonction que j'ai écrite dans le but que j'utilise dans mes scripts. Il vérifie si le package requis est installé et sinon, invite l'utilisateur à l'installer. Il nécessite un nom de package comme paramètre. Si vous ne connaissez pas le nom du package auquel appartient un programme requis, vous pouvez le rechercher. Informations à ce sujet disponibles ici.
la source
Cette ligne de commande vérifiera à l'aide du
which
programme et retournera0
si elle est installée et1
sinon:Bien sûr, vous l'utiliserez de cette manière dans votre script:
Une utilisation simple serait:
Notez plusieurs choses:
la source
which
est super non portable. J'utilise souvent à lacommand -v
place, mais cela dépend fortement du type de nom que vous recherchez (alias, fonction, exécutable, etc.)Unix & Linux
site! Si je répondais surUnix & Linux
place, ce serait différent!Pourquoi voulez-vous le vérifier en premier lieu? Sauf si vous avez une bonne raison à cela, ne le faites pas, juste
apt-get install package
après. S'il est déjà installé, il sera mis à jour s'il existe une version plus récente, s'il est installé et à jour, rien ne se passera. Si vous avez une configuration à appliquer, il existe d'autres options, comme la création d'un package de configuration qui dépend du package ou l'utilisation d'un logiciel de gestion de configuration comme ansible.la source
Une façon simple de vérifier les packages installés en utilisant
apt-mark
:apt-mark showinstall
répertorie tous les packages marqués comme étant installés (déjà installés ou en attente d'installation). Après cela, il suffit de saluer le ou les paquets qui vous intéressent.Exemple:
apt-mark showinstall | grep -q "^$PACKAGE_NAME$" && echo "installed" || echo "not"
la source