touchstyle ha scritto:
Se funziona ti faccio Presidente della Repubblica, te lo prometto!

Troppo tardi
Questo è lo script:
----cut----
#!/bin/sh
#lru è uno script che, tramite swaret, rsync e gli swaret tools, crea e mantiene aggiornato un repository
#di pacchetti slackware,usabile in locale,di repositories remoti.
#Lo script crea una directory con lo stesso nome di quella del repository aggiungendo il suffisso _loc
#(ad esempio, per Slacky.it, crea, in /var/swaret/repos/, una directory Slacky.it_loc con tutti i pacchetti
#del repository. Dopo ogni aggiornamento crea, in /var/swaret/repos_backup, una directory contenente
#i pacchetti sostituiti che ha come nome $NomeRepository_$Data (per Slacky.it aggiornato il 10/5/06
#sarà creata una directory Slacky.it_060510)
#
#Alcuni passi sono necessari per ottenere il repository locale.
#
#Prima di lanciare il comando (ad esempio lru Slacky.it) è necessario lanciare "swaret --update" in modo
#da aggiornare FILELIST.TXT per il repository che si vuole aggiornare (se avete più REPOS_ROOT attivi
#consiglio di lasciare decommentato solo quello che si vuole aggiornare). Il passo successivo è quello
#di lanciare #swaret --get -a#. Questo comando avvierà un processo lungo solo la prima volta che viene lanciato
#in quanto le volte successive scarichera solo i nuovi pacchetti.
#A questo punto deve essere lanciato il comando "lru Slacky.it" per ottenere in /var/swaret/repos una
#directory, Slacky.it_loc, che è possibile masterizzare ed usare su pc non in rete
SWARET_DIR=/mnt/downloads/slackware/swaret #definisce la vostra directory. Generalmente è /var/swaret
#Sostituire le voci nel costrutto case, secondo i propri bisogni. I nomi sono quelli dei REPOS_ROOT in swaret.conf
case $1 in
Slacky.it)
repo=$1
;;
frg)
repo=$1
;;
InfinityPerl)
repo=$1
;;
LinuxPackagesDOTNET)
repo=$1
;;
tuxjm)
repo=$1
;;
*)
echo
echo "Indicare il repository locale da aggiornare."
echo "Repository disponibili su questo sistema:"
echo "Slacky.it frg InfinityPerl LinuxPackagesDOTNET tuxjm" #sostituire queste voci con quelle dei
#REPOS_ROOT usate precedentemente
echo
exit
;;
esac
cd $SWARET_DIR
if [ ! -d mom ]; then
mkdir mom
fi
if [ -e mom/lista_pacchetti ]; then #Se gia esiste lista_pacchetti
mv mom/lista_pacchetti mom/lista_pacchetti.old #lo rinomina in lista_pacchetti.old
fi
cp -v repos/$repo/FILELIST.TXT mom/lista_pacchetti
cd repos/$repo
ls *.tgz>../../mom/lista_pacchetti1 #crea un file con all'interno i nomi dei pacchetti presenti in locale
cd $SWARET_DIR
sed -i "s|^[0-9]* \./MANIFEST.bz2||g" mom/lista_pacchetti #elimina la riga del Manifest.bz
sed -i "s|^[0-9]* \.||g" mom/lista_pacchetti # elimina tutti i numeri
sed -i "s|/.*/||g" mom/lista_pacchetti #elimina le sottodirectory lasciando soo in nome del file
diff -e mom/lista_pacchetti mom/lista_pacchetti1>mom/vecchi_pacchetti
sed -i "s|^[0-9]*[a-z]$||g" mom/vecchi_pacchetti
sed -i "s|^\.||g" mom/vecchi_pacchetti
sed -i "s|^[0-9]*,[0-9]*[a-z]||g" mom/vecchi_pacchetti
mv mom/vecchi_pacchetti mom/vecchi_pacchetti1
sed -e '/^$/d' mom/vecchi_pacchetti1 >mom/vecchi_pacchetti
rm -fv mom/vecchi_pacchetti1
mkdir -p repos_backup/"$repo"_`date +%y%m%d`
for pacchetto in `cat mom/vecchi_pacchetti`; do
mv -v repos/"$repo/$pacchetto" repos_backup/"$repo"_`date +%y%m%d`
done
rm -rfv mom
echo "aggiorno i pacchetti del repository locale..."
rsync -azrbv --delete --exclude=.* --exclude=CHECKSUMS.md5 --exclude=*.TXT --exclude=MANIFEST.bz2 \
$SWARET_DIR/repos/$repo/ $SWARET_DIR/repos/"$repo"_loc
rm -f $SWARET_DIR/repos/"$repo"_loc/*.tgz~
echo "lancio repos per creare un repository valido per swaret...."
repos $SWARET_DIR/repos/"$repo"_loc
----cut----
bisogna invocare lru $nomeRepository (ad esempio lru Slacky.it -- modificare la lista dei repository nello script second le proprie esigenze) dopo aver dato swaret --update e swaret --get -a.
All'inizio del file ci sono dei commenti che spiegano meglio.
Per dubbi e consigli non esitate a esprimervi.