221 lines (196 with data), 6.8 kB
#!/bin/bash
###############################################################
PROGRAMA="Debian Netinstall For Dummies"
VER="V 0.5"
# AUTHOR="niky45"
###############################################################
#
# por favor, lee el archivo README antes de usar DNFD
#
########## TO-DO ############################################
# // V0.5
# DONE - 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)
# - 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!!
# DONE - en lenny aun esta kde 3. corregir esto!! (intenta instalar kde4 pero no esta).
# DONE - arreglar instalacion de kde3 ... necesitamos que solo esten los repos de stable.
# DONE - tucan tampoco esta en lenny (dichosa stable... no hay nada. :S )
# DONE - en awesome y lxde no funcionan las X por default - hacer la config desde dnfd
# DONE - comprobar que no era por las fuentes (en cuyo caso, no es necesario reconfigurar las X)
# DONE - repos.conf crea un sources.list completo
# DONE - corregido el mensaje de bienvenida
# - empaquetarlo todo (tar.gz)
#
# // V0.6
# - interfaz dialog
# DONE? - modo debug
# - modo verbose real.
# - 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)
# DONE - 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)
# - instalador
#
# // algun dia de estos
# - importar configuraciones (vim, entorno... )
# - paquetes deb
#
################################################################
### 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
### FOR DEBUG ONLY
#set -x
#set -v
### /dbg only
### 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
DBG() {
echo -e "--> $@ \n "
echo "continue? (y/n)" ; read C
if [ "$C" == y ] ; then $@ ;fi
}
echo "desea el debugging de bash? (y/n)" ; read bd
if [ bd == y ]; then
set -x
set -v
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
DBG 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 $DEBUG
### /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
R="-R"
;;
p) ## preselect - se instalaran paquetes segun las repuestas
bash $questions ##llamamos a preguntas
PKG=$(GREP cat paquetes) ## questions imprime lista en ./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
R="-R"
;;
esac
### /modos (listas)
### repos para kde3 - quitar cuando salga squeeze estable!!!
if test "$(cat paquetes | grep kde-core)";then
REDIR mv /etc/apt/sources.list /etc/apt/sources.list2 -v
REDIR touch /etc/apt/sources.list
cat /etc/apt/sources.list2 | grep -v "#" | grep -w --regexp={stable,lenny} >> /etc/apt/sources.list
fi
### /kde3
### aptitude install
R="-R" ## quitar esto en la release
DBG aptitude install $PKG $APTS $R
#nota: la optimizacion real requiere el -R, pero la gestion de dependencias puede complicarse...
## idea: usar el -R solo en expert y/o auto
DBG aptitude clean
### /aptitude
### sources completo en kde3
if test -f /etc/apt/sources.list2;then
REDIR mv /etc/apt/sources.list2 /etc/apt/sources.list -v
fi
### /kde3
### 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
### configuracion de las X para lxde y awesome
#if test "$( cat paquetes |grep awesome )" || test "$( cat paquetes |grep lxde)" ;then # funciona?
# X -configure
# REDIR cp /root/xorg.conf.new /etc/X11/xorg.conf -v
#fi
### borramos lista de paquetes
DBG REDIR rm paquetes -v
### comprobamos que aptitude no haya hecho cosas raras...
if ! test /usr/bin/aptitude ;then apt-get install aptitude; fi
### goodbye!!!
echo -e "\n \n"
PRINT goodbye $PROGRAMA
### /googdbye
## EOF