# cat genera-musthave-minimo.sh
#!/bin/bash
FICHERO=$HOME/musthave.$HOSTNAME
echo "Generando lista de paquetes instalados en $FICHERO..."
aptitude show "?installed ?not(?priority(required)) ?not(?essential) ?not(?automatic)" | grep -e ^Package -e ^Paquete | cut -f 2 -d " " | sort > $FICHERO
echo "Obteniendo lista de paquetes multiarch..."
aptitude show "?installed ?multiarch(same)" | grep -e ^Package -e ^Paquete | cut -f 2 -d " " > /tmp/same
sort -u -o /tmp/same /tmp/same
echo "Procesando lista de paquetes multiarch..."
for paquete in `cat /tmp/same`
do
sed -i 's|$paquete||' $FICHERO
dpkg -l|grep "$paquete:i386" 1>/dev/null && echo "$paquete:i386" >> $FICHERO
dpkg -l|grep "$paquete:amd64" 1>/dev/null && echo "$paquete:amd64" >> $FICHERO
done
sort -u -o $FICHERO $FICHERO
#Ahora vamos a purgar los paquetes dependientes y dejar solo los paquetes "primigenios"
if [ ! -f /usr/bin/apt-rdepends ]
then
echo "Instalando apt-rdepends"
apt-get install apt-rdepends
fi
cp /dev/null /tmp/musthave.new
cp /dev/null /tmp/musthave.deps
paquetes_explicitos=$(aptitude search '~i !~M' -F '%p' --disable-columns | sort -u)
for i in $paquetes_explicitos
do
echo -n "Paquete $i"
if grep $i $FICHERO > /dev/null
then
echo " ->instalado por musthave"
echo $i >> /tmp/musthave.new
else
if grep $i /etc/pkgsync/mayhave > /dev/null
then
echo " ->instalado por mayhave"
else
echo " ->instalado por musthave.d"
fi
fi
done
sort -u -o /tmp/musthave.new /tmp/musthave.new
num=1
total=$(wc -l /tmp/musthave.new)
for i in $(cat /tmp/musthave.new)
do
echo "Dependencias de $i: $num/$total"
((num++))
apt-rdepends $i |grep Depends: | awk ' { print $2 } ' | sed "/^${i}$/d" >> /tmp/musthave.deps
done
sort -u -o /tmp/musthave.deps /tmp/musthave.deps
comm -23 /tmp/musthave.new /tmp/musthave.deps > $FICHERO.final
echo "Proceso concluido, musthave en $FICHERO.final"
exit 0
Lanzamos el script y tras un intenso proceso que debemos dejar acabar con paciencia, en el fichero "musthave.$HOSTNAME.final" nos quedan los paquetes básicos para que funcione el pkgsync, que suele quedar en un 15% del musthave que obtenemos con el script original. Una vez generado este musthave en un equipo de pruebas lo podemos copiar a mano o por puppet al resto de equipos similares en su ubicación definitiva dentro de /etc/pkgsync/musthave o /etc/pkgsync/musthave.d/*.Pedazo artículo el de Daniel Marín sobre el Apolo X, ahora que estamos en el 50 aniversario. Seguro que nos tiene preparada una maravilla sobre el Apolo XI en unas semanas.
No hay comentarios:
Publicar un comentario