Tengo un requisito simple Quiero definir varias variables que corresponderán a cualquier número de paquetes dados que quiero instalar a través de un script de shell.
Código de muestra a continuación:
MISC="shutter pidgin"
WEB="apache2 mongodb"
for pkg in $MISC $WEB; do
if [ "dpkg-query -W $pkg | awk {'print $1'} = """ ]; then
echo -e "$pkg is already installed"
else
apt-get -qq install $pkg
echo "Successfully installed $pkg"
fi
done
Todo funciona, pero la lógica parece defectuosa porque no está instalando de manera confiable los paquetes que quiero. Dice que ya se han instalado o está intentando instalar paquetes que ya se han instalado anteriormente.
También he estado intentando command -v
o lo siguiente:
if [ "dpkg -l | awk {'print $2'} | grep --regexp=^$pkg$ != """ ]; then
E incluso con las banderas -n
y -z
para verificar si la cadena devuelta estaba vacía. Estoy bastante seguro de que me falta algo de sentido común aquí.
¿Tienes alguna idea de lo que podría hacer para asegurarme de que un paquete esté realmente instalado o no?
¡Gracias!
apt-get install
paquetes instalados? Podrías simplemente llamarapt-get install $MISC $WEB
.