Non è niente di che, in realtà; volevo trovare il modo di aggiornare automaticamente tutti i pacchetti che portaudit(1) classifica come vulnerabili, insieme a loro eventuali dipendenze. Questo script sembra assolvere lo scopo: se c’è un modo migliore, fatemelo sapere.
#!/usr/local/bin/bash
# psupgrade: Aggiorna i port rilevati come insicuri da portaudit(1) utilizzando portmanager(1).
me=$(basename $0)
awk=$(which awk)
echo=$(which echo)
grep=$(which grep)
pkg_info=$(which pkg_info)
portaudit=$(which portaudit)
portmanager=$(which portmanager)
sed=$(which sed)
for tool in $awk $echo $grep $pkg_info $portaudit $portmanager $sed; do
if [ ! -x $tool ]; then
echo "Non è possibile eseguire $me perchè manca uno dei seguenti tool:"
echo "awk\n\grep\pkg_info\nportaudit\nportmanager".
echo "Assicuratevi che siano installati in una directory del PATH di sistema prima di rieseguire lo script."
exit 1
fi
done
echo "$me: Rilevo quali pacchetti necessitano di un aggiornamento..."
packages=$($echo -n $($portaudit -a | $grep "Affected package:" | $awk '{print $3}'))
echo "$me: Riferisco i pacchetti ai port d'origine..."
ports=$($echo -n $($pkg_info -o $packages | $grep -A 1 "Origin:" | $sed -e "s/Origin://g" -e "s/--//g"))
echo "$me: Lancio $portmanager..."
$portmanager $ports



Commenti recenti