[go: up one dir, main page]

Menu

[r58]: / dn4d2 / dnfd  Maximize  Restore  History

Download this file

170 lines (151 with data), 5.2 kB

#!/bin/bash

###############################################################
	PROGRAMA="Debian Netinstall For Dummies"  
			 VER="0.5"
#		     AUTHOR="niky45"
###############################################################
#
#   por favor, lee el archivo README antes de usar DNFD
#
##########  TO-DO  ############################################
# // V0.5
#	|- listas de paquetes (DONE)
#	|- questions-txt (DONE)
#	|- revisar repos.conf (DONE)
#	|- añadir el README!! (estara en una revision anterior :S ) (DONE)
#	|- aniadida licencia (doc/licencia-GPL3.0.txt) (DONE)
#	|- quitar el to-do de la 0.5 que ya esta implementado. 
#	|	(mcun, hazlo tu cuando lo hayas pasado a las notas de la release, si??) 
#	|  	pasarlo al readme!! 
#
# // V0.6
#	|- interfaz dialog
#	|- modos debug y verbose reales. (...) como se implementa un modo debug?? (DONE?)
#	|- lista de develop (al menos dependencias de compilacion)
#	|- lista de apps ncurses (apps)
#	|- listas de apps aparte?? o extras?? (gimp & OOo aparte?)
#	|- drivers grafica (ati & nvidia)
#	|- kernel!!
#	|- el questions-txt ha de llevar la interfaz APARTE. 
#	|	averiguar como hacer que funcione el select (con espacios :S)
#	|- selector y questions UNICOS, el texto va en interfaz-txt (T.O.D.O el texto)
#	|- decidir cuando llamar a aptitude con el -R y cuando no. (ver llamada a aptitude)
#	|- distribucion: dos paquetes, uno con dependencias (dialog) y otro sin ellas. 
#	|  	cuando haya interfaz dialog, claro... ^_^u 
#	|- ofrecer tambien un paquete .deb
#	|- traducciones (como minimo ingles)
#	|- revisar comportamiento de repos.conf
#	|- crear un log de todo lo que ocurre (de cara a posibles bug reports). 
#	|	preguntar AL FINAL al usuario si desea borrarlo. 
#	|- necesitaremos a "script" como dependencia... y esperemos que no lleve mucho detras :S  
#	|	NOP! es un paquete esencial de debian (esta en bsdutils) :) 
#	|- modo silent (redirigir todo)
#
################################################################

##### variables globales (modifican el comportamiento del programa)
AUTO=N ## modo auto - instalacion de lista de paquetes predeterminada SIN PREGUNTAR
DEBUG=N ## modo debug
VMODE=N ## verbose
NCURSES=N ### selector interfaz: dialog / texto puro 
	### la interfaz dialog no esta disponible en esta version
listaauto="auto.list"
#### /variables globales

### funciones
GREP() { $@ |grep -v "#" ; }
PRINT() { bash $interfaz $@ ; }
### /funciones

### variables condicionales
if [ $NCURSES == Y ]; then 
	questions="questions-dialog"
	selector="selector-dialog"
	interfaz="interfaz-dialog"
else
	questions="questions-txt"
	selector="selector-txt"
	interfaz="interfaz-txt"
fi

##verbose y debug
if [ $DEBUG == Y ]; then
	APTS=" -s" ## permite usar el programa sin necesidad de instalar nada
	rm() { echo "se borraria $@" ;} ## evitamos que borre nada, en lugar de eso, mostramos lo que haria
	DBG() { 
		echo  -e "--> $@ \n " 
		echo "continue? (y/n)" ; read C
		if [ "$C" == y ] ; then $@ ;fi
	} 
	##permitimos que ciertos comandos no se ejecuten en modo debug 
else 
	DBG() { $@ ;}
fi

if [ $VMODE == Y ]; then
	### seteamos las variables para los echos de verbose
	V="-v" ## esto para que?? no veo ninguna llamada...
	REDIR() { $@ ;}
else
	REDIR() { $@ > /dev/null 2>&1;}
fi

### /condicionales

## comprobamos que es root quien trabaja
if [ $UID != 0 ]; then
	PRINT rooterr
	exit 10
fi
## comprobamos que la sintaxis es correcta
if [ "$1" == a ] || [ "$1" == p ] || [ "$1" == e ]; then
	echo ""
else
	PRINT syntaxerr
	exit 1
fi

### configurador
#instalamos dialog si se va a usar el modo ncurses
if [ $NCURSES == Y ];then
	REDIR dpkg -i dep/*deb 
fi
### /configurador

### WELCOME
PRINT welcome "$PROGRAMA" "$VER"
### /welcome

## NETCONF 
#por ahora, suponemos la red configurada
##/netconf

### configuracion de repos: repos.conf
DBG bash repos.conf $interfaz 
### /configuracion repos

### aptitude update && aptitude dist-upgrade
DBG aptitude update 
DBG aptitude dist-upgrade $APTS ## no hace falta especificar rama, tenemos apt.conf
### /aptitude

### llamadas a los modos
case $1 in 
	a) ## auto - instala lista dada de paquetes
		PKG=$(GREP cat $listaauto) ## definir variables y comprobar el funcionamiento de aptitude
		;;
	p) ## preselect - se instalaran paquetes segun las repuestas
		bash $questions ##llamamos a preguntas
		PKG=$(GREP cat paquetes) ## questions imprime lista en ./paquetes
		rm paquetes
		;;
	e) ## expert - se instalaran paquetes segun las repuestas + selector
		bash $questions ##llamada a questions
		bash $selector $interfaz ## llamada a selector
		PKG=$(GREP cat paquetes ) ## selector imprime lista en ./paquetes
		rm paquetes
		;;
esac
### /modos (listas)

### aptitude install
DBG aptitude install $PKG -R $APTS
#nota: la optimizacion real requiere el -R, pero la gestion de dependencias puede complicarse... 
## idea: usar el -R solo en expert y/o auto
### /aptitude 

### drivers - ponerlo aqui!!! 
## nvidia y fglrx con suerte se pueden automatizar. 
## hay algun otro driver no libre habitual?? (madwifi lo descarto, el libre va bien)
## OJO: asegurarse antes de que se esta trabajando con el kernel mas reciente!!!
### /drivers

### goodbye!!!
echo -e "\n \n"
PRINT goodbye $PROGRAMA 
### /googdbye

## EOF