Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- #**********************************************************************************************************#
- # Nombre : MARIA (Modest ARchlinux Install Assistant) [Asistente Modesto de instalación de Archlinux] #
- # Autor : Brian I. Martínez E. (Angelux de México) #
- # Lenguaje : Zsh #
- # Versión : 0.1 beta #
- # Idiomas : Español México #
- #**********************************************************************************************************#
- # Formato del script
- red='\e[31m'
- green='\e[32m'
- yellow='\e[33m'
- blue='\e[34m'
- gray='\e[35m'
- cyan='\e[36m'
- bold='\033[1m'
- italic='\033[3m'
- reset='\033[0m'
- err="$red Error:$reset"
- ###################################
- # Preparación de post instalación #
- ###################################
- if [[ "$USER" != "root" ]]; then
- echo -ne "$err Debes ser superusuario para ejecutar este script.\n";
- elif [[ "$SHELL" != "/bin/zsh" ]]; then
- echo 'Este es un script para zsh y no es tu shell ahora, ¿Quieres instalarlo e intentarlo de nuevo?[s/N]'
- read inst_shell
- if [[ "$inst_shell" = "s" ]]; then
- echo -ne "$green Instalando herramientas necesarias...$reset\n"
- mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.original
- head /etc/pacman.d/mirrorlist.original | grep Server | awk -F\# '{print $2}' > /etc/pacman.d/mirrorlist
- pacman-db-upgrade
- pacman -S zsh chsh
- chsh -s /bin/zsh
- echo -ne "$green Terminado:$reset Copia tu archivo .zshrc favorito al home de root y vuelve a logearte para comenzar de nuevo, si no tienes un archivo .zshrc puedes copiar el que está en esta carpeta y pegarlo en el home de root.\n"
- echo -ne "$red ADVERTENCIA:$reset Continua solo si las operaciones de arriba fueron exitosas, si no el script no funcionará correctamente, si no, presiona Ctrl+C en cualquier momento para detener el Script\n"
- else
- echo -ne "$yellow ADVERTENCIA:$reset No se han hecho cambios en ningún aspecto, el script terminado inesperadamente sin ningún cambio en tu sistema, para correrlo de nuevo instala zsh y usa el comando chsh para establecerlo como tu shell por defecto y copia un archivo .zshrc al home de root con el comando:\n"
- echo 'pacman -S zsh chsh; chsh -s /bin/zsh'
- fi
- else
- echo -ne "$cyan::$reset $bold Iniciando la preparación$cyan ::$reset\n"
- if [[ ! -f /etc/pacman.d/mirrorlist.original ]]; then
- mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.original
- head /etc/pacman.d/mirrorlist.original | grep Server | awk -F\# '{print $2}' > /etc/pacman.d/mirrorlist
- pacman-db-upgrade
- fi
- if [[ -f /bin/vi ]]; then
- echo 'Desinstalando Vi'
- pacman -Rsn vi
- fi
- if [[ ! -f /bin/vim ]]; then
- echo 'Actualizando e instalando Vim (Editor de textos), Mlocate (Localizador de archivos), Reflector (Rankeador de mirrors) y lynx(Navegador web)'
- pacman -S reflector vim mlocate lynx
- rm /etc/pacman.d/mirrorlist
- fi
- if [[ "$EDITOR" != "vim" ]]; then
- echo 'Haciendo exports y alias'
- export $EDITOR="vim"
- alias vim="vim -c 'syntax on'"
- fi
- ########################
- # Mirrors actualizados #
- ########################
- if [[ ! -f /etc/pacman.d/mirrorlist ]]; then
- echo 'Mirrorlist actualizando con los 6 más nuevos y rápidos según mi locación (Esto puede tardar varios minutos dependiendo de tu conección de internet, por favor espera a que termine)'
- reflector -l 6 -f 6 > /etc/pacman.d/mirrorlist
- pacman -Syy
- echo -ne "$green Terminado:$reset Mirrors Actualizados\n"
- fi
- echo -ne "$cyan::$reset$bold Actualización del sistema$reset$cyan::$reset\n"
- pacman -Syu
- echo -ne "$green Terminado:$reset$bold Sistema Actualizado\n$reset"
- #####################
- # Locales e idiomas #
- #####################
- echo -ne "$cyan::$reset$bold Generación de locales$reset$cyan::\n$reset"
- echo 'Generar los locales...[Y/n] '
- read locales
- if [[ "$locales" = 'y' ]]; then
- if [[ ! -f /etc/locale.gen.original ]]; then
- awk -F\# 'match($0,"es_MX")==0 {print "#"$2} match($0,"es_MX")!=0 {print $2}' /etc/locale.gen > locales.mx
- grep en_US /etc/locale.gen | grep -v \# >> locales.mx
- mv /etc/locale.gen /etc/locale.gen.original
- mv locales.mx /etc/locale.gen
- fi
- locale-gen
- echo -ne "$green Terminado:$reset Locales: Español México e Inglés Estados Unidos generados con exito.\n"
- else
- echo -ne "$yellow Advertencia:$reset Locales no generados\n"
- fi
- ###################
- # Usuarios nuevos #
- ###################
- echo -ne "$cyan::$reset$bold Creación de usuarios$reset$cyan::$reset\n"
- echo -en "¿Quieres crear usuarios?[S/n]\n$italic$yellow(En un sistema Linux es indispensable tener un usuario al menos)\n$reset"
- read create_user
- if [[ "$create_user" = "s" ]]; then
- echo 'Añadiendo un usuario, teclea el nombre: '
- read user
- while [[ "$user" = "" ]]; do
- echo -ne "$err El nombre de usuario no puede estar vacío, teclea otro\nUsuario: "
- read user
- done
- useradd -m -g users -G audio,lp,optical,storage,video,wheel,games,power,scanner -s /bin/zsh $user
- echo -ne "$green Terminado:$reset Usuario creado con exito\n"
- fi
- ###########################
- # Instalación de paquetes #
- ###########################
- echo -ne "$cyan::$reset$bold Preparando instalación de paquetes$reset$cyan::$reset\n"
- if [[ ! -f /usr/bin/pacman-color ]]; then
- echo "# Repositorio para uso de yaourt">>/etc/pacman.conf;echo "[archlinuxfr]">>/etc/pacman.conf;echo "Server = http://repo.archlinux.fr/\$arch">>/etc/pacman.conf
- pacman -S sudo wget yaourt unzip unrar tar bunzip2 make gcc fakeroot
- yaourt -S pacman-color
- alias pacman='pacman-color'
- echo -ne "$green Terminado:$reset Instalado de herramientas de compresión, compilación, sudo, yaourt y pacman-color\n"
- else
- echo -ne "$yellow Terminado:$reset Herramientas ya estaban instaladas\n"
- fi
- ###############################
- # Sonido según la computadora #
- ###############################
- echo -ne "$cyan::$reset$bold Sonido$reset$cyan::$reset\n"
- if [[ ! -f /usr/bin/alsamixer ]]; then
- echo -ne "¿Requiere compilación de driver de sonido? [s/N]\n$yellow Advertencia:$reset Se compilará específicamente con chip c0106 y secuenciador\n"
- read compile
- if [[ "$compile" = "s" ]]; then
- echo -ne "Descargando alsa nuevo con drivers del sitio oficial"
- mkdir /usr/src/alsa/
- wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.24.tar.bz2
- # wget ftp://ftp.alsa-project.org/pub/firmware/alsa-firmware-1.0.24.1.tar.bz2
- # wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.24.1.tar.bz2
- # wget ftp://ftp.alsa-project.org/pub/plugins/alsa-plugins-1.0.24.tar.bz2
- # wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.24.2.tar.bz2
- # wget ftp://ftp.alsa-project.org/pub/tools/alsa-tools-1.0.24.1.tar.bz2
- # wget ftp://ftp.alsa-project.org/pub/pyalsa/pyalsa-1.0.24.tar.bz2
- # wget ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-1.0.17.tar.bz2
- mv alsa-* /usr/src/alsa/
- /usr/src/alsa/
- bunzip2 alsa-driver-1.0.24.tar.bz2
- tar xf alsa-driver-1.0.24.tar
- cd alsa-driver-1.0.24
- ./configure --with-cards=ca0106 --with-sequencer=yes
- make
- make install
- echo -ne "$green Terminado:$reset Driver compilado e instalado\n Creando archivo de configuración para 5.1 canales divididos...\n"
- echo 'pcm.20to51 {
- type route
- slave.pcm surround51
- slave.channels 6
- ttable.0.0 1
- ttable.1.1 1
- ttable.0.2 1
- ttable.1.3 1
- ttable.0.4 0.5
- ttable.1.4 0.5
- ttable.0.5 0.5
- ttable.1.5 0.5
- hint {
- show on
- description "Upmix Stereo to 5.1"
- }
- }
- pcm.!default {
- type plug
- slave.pcm "20to51"
- }' > ~/.asoundrc
- if [[ "$user" != "" ]]; then
- cp ~/.asoundrc ~$user/.asoundrc
- chown $user:users ~$user/.asoundrc
- else
- echo -ne "$yellow Advertencia:$reset$bold Recuerda copiar el archivo de configuración de sonido .asoundrc al home de todos los usuarios para que funcione en 5.1 canales con ellos también$reset\n"
- echo 'Copiar archivo de configuración .asoundrc al home de los usuarios' >> ~/pendientes.todo
- fi
- # chmod a+rw /dev/dsp /dev/mixer /dev/sequencer /dev/midi # Primero checar si funciona este
- # ./snddevices # Luego probar si funciona este
- # cd ..
- # bunzip2 alsa-lib-*
- # tar -xf alsa-lib-*
- # cd alsa-lib-1.0.24.1
- # ./configure ; make ; make install
- # cd ..
- # bunzip2 alsa-utils-*
- # tar -xf alsa-utils-*
- # cd alsa-utils-1.0.24.2
- # ./configure ; make ; make install
- #echo -ne "Compilados e instalados, cargando modulos..."
- # modprobe snd-ca0106 ; modprobe snd-pcm-oss ; modprobe snd-mixer-oss ; modprobe snd-seq-oss
- #echo -ne "Si algo falló, visita el sitio del archivo trouble_shutting"
- echo -ne "[Audigy Sound blaster X-fi PCI Driver ALSA]\nhttp://www.alsa-project.org/main/index.php/Matrix:Module-ca0106">>~/trouble_shutting
- #echo -ne "Intentar instalar alsa-oss gnome-alsamixer pulseaudio-alsa">>~/todo
- fi
- if [[ ! -f /usr/bin/gnome-alsamixer ]]; then
- pacman -S alsa-utils alsa-oss gnome-alsamixer pulseaudio-alsa
- fi
- echo '¿Configurar alsamix? [Y/n] '
- read alsamixopt
- escucha="n"
- while [[ "$alsamixopt" = "y" && "$escucha" = "n" ]]; do
- echo -ne "Quita el mute de todos los canales de audio con la tecla 'M' y regula los niveles de sonido según veas conveniente, cuando termines, sal de alsamixer para continuar la instalación\n$yellow Advertencia:$reset$bold Mantén los niveles en un nivel no mayor a 80% para evitar daño a tus bocinas o sistema de sonido$reset\n[Presiona una tecla para continuar]"
- read ok
- alsamixer
- aplay /usr/share/sounds/alsa/Front_center.wav
- echo -ne "¿Se escuchó bien?[S/n] "
- read escucha
- if [[ "$escucha" = "n" ]]; then
- echo -ne "Configurando de nuevo, si no quieres continuar con este paso presiona S en la pregunta de arriba y revisa después el tutorial para ver cual fué el problema\n"
- echo -ne "Revisar configuraciones de audio, si todo salió bien desde el inicio, ignora este paso">>~/pendientes.todo
- else
- escucha="s"
- fi
- done
- else
- echo -ne "$yellow Advertencia:$reset$bold No se hicieron configuraciones de sonido, verifica que funcione$reset\n"
- fi
- echo -ne "$green Terminado:$reset$bold Configuración de sonido terminada\n"
- ###########################
- # Instalación de paquetes #
- ###########################
- echo -ne "$cyan::$reset$bold Instalación de paquetes básicos para entorno gráfico$reset$cyan::$reset\n"
- echo -ne "Hacer instalación de paquetes básicos necesarios?[S/n]\n$yellow(Si ya están instalados no se reinstalaran)$reset"
- read ok
- if [[ "$ok" != "n" ]]; then
- echo -ne "Instalando Paquetes necesarios y extras\n"
- echo -ne "¿Que ambiente quieres instalar? [$cyan A$reset ]ngelux ($yellow Default: Gnome, fluxbox, windowmaker$reset ), [$green G$reset ]nome, [$blue K$reset ]DE, [$yellow F$reset ]luxbox, [$gray W $reset]indowmaker\n"
- read wm
- if [[ "$wm" = "g" ]]; then
- pacman -S xf86-input-keyboard xf86-input-mouse xf86-input-evdev xdg-user-dirs firefox firefox-i18n firefox-i18n-es arch-firefox-search pidgin libpurple nautilus gdm gnome-session gnome-panel gnome-terminal networkmanager network-manager-applet gnome-utils gnome-system-tools gnome-tweak-tool gnome-control-center gtk-engines gtk-aurora-engine gtk-engine-murrine gtk-rezlooks-engine libreoffice gedit file-roller gconf-editor alacarte deskbar-applet gnome-volume-control vlc rhythmbox transmission-gtk gvim gthumb python2-gtkspell python2-libgnome dbus fuse hal xorg-server xorg-xinit xorg-utils xorg-server-utils ttf-dejavu gimp inkscape
- elif [[ "$wm" = "k" ]]; then
- echo -ne "$yellow No soportado aún$reset\n"
- elif [[ "$wm" = "f" ]]; then
- echo -ne "$yellow No soportado aún$reset\n"
- elif [[ "$wm" = "w" ]]; then
- echo -ne "$yellow No soportado aún$reset\n"
- elif [[ "$wm" = "a" ]];then
- pacman -S xf86-input-keyboard xf86-input-mouse xf86-input-evdev xterm fluxbox fluxter idesk menumaker fluxmenu lm_sensors xsensors xdg-user-dirs firefox firefox-i18n firefox-i18n-es arch-firefox-search zim pidgin libpurple purple-plugin-pack emesene aurvote feh nautilus nautilus-actions gdm gnome-session gnome-panel gnome-terminal guake networkmanager network-manager-applet conky libreoffice gedit lyx file-roller gconf-editor alacarte gnome-volume-control audacious vlc totem totem-plugin vlc-plugin rhythmbox transmission-gtk openssh gvim gthumb kdegraphics-gwenview scrot windowmaker windowmaker-extra docker python2-gtkspell python2-libgnome brasero dbus fuse hal xorg-server xorg-xinit xorg-utils xorg-server-utils ttf-dejavu
- fi
- echo -ne "¿Instalar extras?[N/s] $yellow Dropbox, Eclipse, Apache, postgress, Netbeans, Gwenview$reset "
- read ok
- if [[ "$ok" = "s" ]]; then
- pacman -S apache php-apache php-pgsql postgresql pgadmin3 eclipse-cdt eclipse-ecj eclipse-phpeclipse gimp inkscape dia vim-plugins ctags ncurses vim-spell-es vim-spell-en vim-align vim-nerdtree vim-surround vim-supertab vim-timestamp
- yaourt -S man-pages-es
- else
- echo "$yellow No se instalaron extras$reset"
- fi
- echo -ne "$cyan::$reset$bold Configurando directorios personales$reset$cyan::$reset\n"
- echo -ne "
- # This file is written by xdg-user-dirs-update
- # If you want to change or add directories, just edit the line you're
- # interested in. All local changes will be retained on the next run
- # Format is XDG_xxx_DIR=\"\$HOME/yyy\", where yyy is a shell-escaped
- # homedir-relative path, or XDG_xxx_DIR=\"/yyy\", where /yyy is an
- # absolute path. No other format is supported.
- #
- XDG_DESKTOP_DIR=\"\$HOME/Escritorio\"
- XDG_DOWNLOAD_DIR=\"\$HOME/Descargas\"
- XDG_TEMPLATES_DIR=\"\$HOME/Plantillas\"
- XDG_PUBLICSHARE_DIR=\"\$HOME/Público\"
- XDG_DOCUMENTS_DIR=\"\$HOME/Documentos\"
- XDG_MUSIC_DIR=\"\$HOME/Música\"
- XDG_PICTURES_DIR=\"\$HOME/Imágenes\"
- XDG_VIDEOS_DIR=\"\$HOME/Videos\"
- " > ~/.config/user-dirs.dirs
- if [[ "$user" != "" ]]; then
- cp ~/.config/user-dirs.dirs ~$user/.config/user-dirs.dirs
- fi
- echo -ne "Archivos de configuración fluxbox, wmaker, firefox, bash y zsh" >> ~/pendientes.todo
- yaourt -S fluxbox-colorflux-themes
- fi
- echo -ne "$green Terminado:$reset Instalación de extras y herramientas\n"
- ######################
- # Idiomas y demonios #
- ######################
- echo -ne "$cyan::$reset$bold Configuraciones de idioma y teclado y demonios de sistema$reset$cyan::$reset\n"
- echo -ne "Es una laptop? [s/n] "
- read laptop
- if [[ "$laptop" = "s" ]]; then
- pacman -S xf86-input-synaptics
- fi
- echo -ne "Configurando demonios en rc.conf..."
- mv /etc/rc.conf /etc/rc.conf.original
- daemons=`awk 'match($0,"DAEMONS\=")!=0{print $0}' /etc/rc.conf.original`
- sed -e "s/$daemons/DAEMONS=(syslog-ng dbus fuse networkmanager netfs crond hal alsa gdm)/g" /etc/rc.conf.original > /etc/rc.conf
- locale=`awk 'match($0,"LOCALE\=")!=0{print $0}' /etc/rc.conf.original`
- sed -e "s/$locale/LOCALE=\"es_MX.UTF-8\"/g" /etc/rc.conf > /etc/rc.conf
- echo -ne "$green Terminado:$reset$bold Configuración básica del rc.conf\n"
- #########
- # Video #
- #########
- echo -ne "$cyan::$reset$bold Configuraciones de Video$reset$cyan::$reset\n"
- echo -ne "¿Que repositorio añadirá ATI o NVIDIA? [a/n] ($yellow Cualquier opción para ningúna$reset)"
- read video
- if [[ "$video" = "a" || "$video" = "A" ]]; then
- echo -ne "Añadiendo repositorio para tarjetas$red ATI$reset\n"
- echo -ne "[radeon]">>/etc/pacman.conf;echo -ne "Server = http://gtklocker.tiven.org/radeon-repo/i686/">>/etc/pacman.conf
- pacman -S catalyst catalyst-utils
- aticonfig --initial
- echo -ne "Si existen problemas, añado el sitio del wiki de Archlinux en el archivo trouble_shutting\n"
- echo -ne "[ATI Drivers]\nhttps://wiki.archlinux.org/index.php/ATI_Catalyst#Installation" >> ~/trouble_shutting
- elif [[ "$video" = "n" || "$video" = "N" ]]; then
- echo -ne "No tiene repositorio, instalando driver para$green Nvidia$reset"
- pacman -S nvidia nvidia-utils
- nvidia-xconfig
- if [[ -f /etc/X11/xorg.conf ]]; then
- mv /etc/X11/xorg.conf /etc/X11/xorg.conf.original
- dri=`awk 'match($0,"\"dri\"")!=0{print $0}' /etc/X11/xorg.conf.original`
- sed -e "s/$dri/#$dri/g" /etc/X11/xorg.conf.original > /etc/X11/xorg.conf
- fi
- echo -ne "Si existen problemas, añado el sitio del wiki de Archlinux en el archivo trouble_shutting\n"
- echo -ne "[NVIDIA Drivers]\nhttps://wiki.archlinux.org/index.php/NVIDIA" >> ~/trouble_shutting
- else
- echo -ne "$yellow No se ha configurado un driver de video$reset."
- echo -ne "Configurar Tarjeta de Video" >> ~/pendientes.todo
- fi
- echo -ne "$green Terminado:$reset$bold Configuraciones de Video$reset"
- ###########
- # Sudoers #
- ###########
- echo -ne "$cyan::$reset$bold Permisos de sudo$reset$cyan::$reset\n"
- echo -ne "¿Vas a dar permisos a alguien?[N/s]\n$red Advertencia:$reset$yellow A quien le dés permisos tendrá poder sobre el sistema, si no estas seguro de lo que haces no selecciones S$reset\n"
- read ok
- if [[ "$ok" = "s" ]]; then
- vim -c "/root ALL" /etc/sudoers
- fi
- echo -ne "$green Terminado:$reset$bold Permisos de superusuario$reset\n";
- ###########
- # Teclado #
- ###########
- echo -ne "$cyan::$reset$bold Teclado y distribución$reset$cyan::$reset\n"
- if [[ ! -f /etc/X11/xorg.conf.d/10-evdev.conf.original ]]; then
- mv /etc/X11/xorg.conf.d/10-evdev.conf /etc/X11/xorg.conf.d/10-evdev.conf.original
- layout=`awk 'match($0,"Option \"XkbLayout\"")!=0{print $0}' /etc/X11/xorg.conf.d/10-evdev.conf.original`
- sed -e "s/$layout/$layout \"latam\"/g" /etc/X11/xorg.conf.dev/10-evdev.conf.original > /etc/X11/xorg.conf.d/10-evdev.conf
- echo -ne "Verificar que el archivo /etc/X11/xorg.conf.d/10-evdev.conf exista y esté bien configurado antes de hacer cualquier cosa" >> ~/pendientes.todo
- fi
- echo -ne "$green Terminado:$reset$bold Configuración de teclado mediante evdev"
- #####################
- # Xinit y eskeletos #
- #####################
- echo -ne "$cyan::$reset$bold Archivos de configuración personales$reset$cyan::$reset\n"
- if [[ "$user" != "" ]]; then
- echo -ne "Copiando los eskeletos a ~$user..."
- cp /etc/skel/.bash* ~$user
- cp /etc/skel/.xinit* ~$user
- chown $user:users ~$user/.bash*
- chown $user:users ~$user/.xinit*
- cp ~/.zsh* ~$user
- chown $user:users ~$user/.zsh*
- fi
- echo -ne "$green Terminado:$reset$bold Configuraciones personales$reset\n"
- #############################
- # Base de datos de búsqueda #
- #############################
- echo -ne "$cyan::$reset$bold Finalizando $reset$cyan::$reset\n"
- echo 'Actualizando Base de datos de locate...'
- updatedb
- echo 'Completado...'
- echo -ne "$yellow Recuerda los pendientes: $reset$bold\n"
- cat ~/pendientes.todo
- echo -ne "$reset$yellow Recuerda también los sitios de interes: $reset$bold\n"
- cat ~/trouble_shutting
- echo -ne "$reset$blue::$reset$cyan Script finalizado$reset$blue ::$reset\n"
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement