Pagina 1 di 1

Slackpkg e clean-system su repository ad-hoc

Inviato: lun 28 ott 2013, 13:50
da ilmich
Ciao a tutti,

ho la necessità di trovare un modo rapido e indolore di clonare (per quanto riguarda la dotazione software) macchine server remote.
Ho scartato a priori la clonazione delle partizioni perchè utilizzo prevalentemente connesioni domestiche e quindi ci metterei troppo di piu', percio' attualmente mi sono fatto degli script che tramite slapt-get, partendo da una lista di pacchetti 'buoni' li installano. questa procedura pero' è un po' scomoda non solo perchè devo tenere traccia dei pacchetti, ma anche perchè, causa elementare conoscenza del bash scripting, la rimozione dei pacchetti superflui è manuale.

mi sono ricordato pero' che slackpkg ha tra le varie funzioni la 'pulizia' del sistema tramite il comando clean-system. da quello che ho visto io questa funzione si basa sulla ricerca dei pacchetti non presenti nella lista che di solito rappresenta l'insieme dei pacchetti slackware ufficiali.

la domanda ora è questa, se mi creo un repository ad-hoc con tutti i pacchetti (ufficiali e non) che mi servono e vi ci faccio puntare slackpkg, riesco ad avere questa funzionalità tramite mezzi 'ufficiali'!??!?! spazzando via slapt-get che per uso desktop è fenomenale, uso server un po' meno?!?!?!

Re: Slackpkg e clean-system su repository ad-hoc

Inviato: lun 28 ott 2013, 16:19
da ponce
puoi farlo facendoti un tuo repository, usandoci insieme slackpkg+ e poi sfruttando i template di slackpkg.

Re: Slackpkg e clean-system su repository ad-hoc

Inviato: lun 28 ott 2013, 16:38
da ilmich
ponce ha scritto:puoi farlo facendoti un tuo repository, usandoci insieme slackpkg+ e poi sfruttando i template di slackpkg.
ma è possibile specificare il template quando si lancia il clean-system??! perchè cosi' sarebbe perfetto.

comunque come ulteriore info vi faccio un esempio pratico perchè magari detta cosi' sembra piu' un mio capriccio :)
ho dei server su un servizio di hosting virtuale che ha un supporto a slackware che dire pessimo e fargli un complimento, le immagini non si avviano se non si aggiunge un parametro al kernel, installano cose tipo compilatore gcc, le gtk, syslinux, supporto ntfs e mi voglio fermare qui :)
ora siccome aimè ci dovro' convivere per parecchio, ho la necessita di avere server nuovi in tempi molto meno biblici delle piccole automazioni che sono riuscito a fare da solo (che sono state precedute da un lavoro certosino della /var/log/packages in cerca di pacchetti che non mi servono)

per questo ho bisogno di un sistema che riconosca solo un sottoinsieme di tutti i pacchetti della stable, cosi' che ogni macchina creata su questo servizio di hosting venga 'pulita' utilizzando tools ufficiali(e quindi ben collaudati).

Re: Slackpkg e clean-system su repository ad-hoc

Inviato: lun 28 ott 2013, 18:42
da ilmich
ok ho trovato l'uovo di colombo (forse :) )
leggendo questo topic semplicemente utilizzando

Codice: Seleziona tutto

grep -Fxvf lista-pacchetti-minimali lista-pacchetti-installati
riesco a produrre la lista dei pacchetti da rimuovere da dare in pasto al mio 'script'

una volta fatta questa 'pulizia' posso usare i template che citava ponce (tra l'altro ho macchine eterogenee quindi web server piuttosto che database server, ognuna con il suo template) in congiunzione con slackpkg+ per avere, per quanto riguarda il software installato due macchine esattamente identiche

grazie :thumbright:

Re: Slackpkg e clean-system su repository ad-hoc

Inviato: mar 5 nov 2013, 17:22
da ilmich
ho implementato una nuova funzionalità 'clean-template' su slackpkg che fa quello che serve a me. e dai test preliminari direi che fa quel che mi aspetto.
è stato molto banale perchè sostanzialmente è un clean-system che pero' agisce su liste differenti (lista pacchetti template piuttosto che lista pacchetti ufficiali), ora faccio un po' di prove con slackpkg+ e se vedo che il tutto va al volo magari provo a mandare sta mini pezza al mantainer ufficiale perchè secondo me è una funzionalità molto utile.

ciau

Re: Slackpkg e clean-system su repository ad-hoc

Inviato: dom 17 nov 2013, 22:51
da ilmich
allego di seguito la patch che ho realizzato per la funzionalità clean-template

Codice: Seleziona tutto

diff -rupN usr.orig/libexec/slackpkg/core-functions.sh usr/libexec/slackpkg/core-functions.sh
--- usr.orig/libexec/slackpkg/core-functions.sh	2013-11-17 22:24:53.734537348 +0100
+++ usr/libexec/slackpkg/core-functions.sh	2013-11-17 22:35:11.392515109 +0100
@@ -674,6 +674,15 @@ function makelist() {
 				grep -q " ${NAME} " ${TMPDIR}/tmplist || \
 					LIST="$LIST ${FULLNAME}"
 			done
+		;;
+		clean-template)
+			listpkgname
+			for i in $(comm -2 -3 ${TMPDIR}/lpkg ${TMPDIR}/${TEMPLATE}.tmp) ; do
+				PKGDATA=( $(grep -- "^local $i " ${TMPDIR}/tmplist) )
+				[ ! "$PKGDATA" ] && continue
+				LIST="$LIST ${PKGDATA[5]}" 
+				unset PKGDATA
+			done				
 		;;	
 		remove-template)
 			for i in $INPUTLIST ; do
diff -rupN usr.orig/sbin/slackpkg usr/sbin/slackpkg
--- usr.orig/sbin/slackpkg	2013-11-17 22:24:53.708537349 +0100
+++ usr/sbin/slackpkg	2013-11-17 22:40:00.767504690 +0100
@@ -215,7 +215,7 @@ while [ -n "$1" ] ; do
         shift $#
       fi
     ;;
-    generate-template|install-template|remove-template|search|file-search|info)
+    clean-template|generate-template|install-template|remove-template|search|file-search|info)
       CMD=$1
       shift
       if [ -n "$1" ]; then 
@@ -539,6 +539,29 @@ case "$CMD" in
 		showlist "$LIST" $CMD
 		remove_pkg
 	;;
+	clean-template)
+		TEMPLATE=$ARG.template
+		if [ -e $TEMPLATEDIR/$TEMPLATE ]; then
+			( cd $TEMPLATEDIR
+			  parse_template $TEMPLATE
+			)
+			#INPUTLIST=$(cat ${TMPDIR}/${TEMPLATE}.tmp | tr "\n" " ")
+		else
+			echo -e "$ARG template not found!"
+			cleanup
+		fi
+	
+		#makelist $INPUTLIST
+		makelist
+		if [ -n "$LIST" ]; then
+			showlist "$LIST" remove 
+			remove_pkg
+		else
+			echo -e "No packages match the pattern for clean-system\n"
+			POSTINST=off
+		fi
+	;;
+	
 	*)
 		usage
 	;;
Come potete vedere è molto semplice e riprende in parte la funzionalità clean-system applicandola pero' ai template.
La patch andrebbe ultimata inserendo il nuovo comando nell'help in linea e nella pagina di man, ma al momento non sapendo nemmeno se la funzionalità puo' essere portata avanti nel canale ufficiale mi sono interessato esclusivamente della funzionalità (tra l'altro ho visto che il progetto ufficiale sembra un po' morto ed è Pat che rilascia delle pezze ufficiose di volta in volta)

devo ammettere che anche se un po' 'faticoso' inizialmente i template sono una buona cosa :)

EDIT: se pensate che pero' possa essere una cosa utile provo a vedere che mi dicono su linuxquestion :P
RI-EDIT: la patch è stata realizzata con slackpkg presente sulla 14.0