Como crear un script post-instalacion

¡Hey! Hola, GNU/Linuxeros, hoy vengo con una entrada superútil y superrápida, que seguramente nos sera muy de utilidad a la hora de estar saltando de una distro (o distribución) a otra (distro-hopping), o al volver a formatear una PC con la misma distribución, me dejo de rodeos y empezamos.

Este script sirve para instalar programas automáticamente al ejecutar el script, muy útil para los distro-hoperos como yo.

Con este comando creamos el archivo install.sh, (.sh es un archivo de bash)

touch install.sh

Y con este comando volvemos ejecutable el archivo install.sh, sudo porque sino no nos dejaría editarle los permisos

sudo chmod a+x install.sh

Aqui eligen el editor de texto que más les guste: vim, nano, emacs, kate, gedit … bueno ya saben el que mas les guste y sudo para poder guardar los cambios, de mi parte voy a elegir Vim.

sudo vim install.sh

Cuándo estemos editando al principio de todo tenemos que escribir

#!/bin/bash

Y después

# -*- ENCODING: UTF-8 -*-

Un poco más abajo escribimos el comando para actualizar nuestra distribución:

Debian, Ubuntu y sus millones de derivadas :

su && apt update && apt upgrade

CentOS y Red Hat like:

sudo yum update

En la última versión de Fedora se ha introducido dnf, que es el hijo directo de yum.

Fedora:

sudo dnf update

OpenSUSE:

sudo zypper update

Arch Linux, Manjaro, Antergos, KaOS …:

sudo pacman -Syu o yaourt -Syua

U otras, como Gentoo o Slackware, usen los comandos de actualización y de instalación… , en mi caso uso Arch Linux por lo que en mi script debe ser:

Snap1

Después de escribir vamos a clasificar los programas a instalar en 7 categorias:

  1. Utilidades
  2. Internet
  3. Juegos
  4. DE (Desktop Environment, o escritorios)
  5. Multimedia
  6. Productividad
  7. Desarrollo

Escribimos:

#  Utilidades
#  Desarrollo
#  Internet
#  Juegos
#  DE's y WM's
#  Multimedia
#  Productividad

Esto lo ponemos para clasificar un poco mejor las aplicaciones y utilidades en grupos, más tarde escribimos los comandos de instalación, según nuestra distribución, de los paquetes que queramos, normalmente debeis saber cuál es vuestra distribución y como instalar paquetes por lo que instalamos lo que queremos, por ejemplo chromium, steam, y gnome-shell

sudo pacman -S chromium
sudo pacman -S steam
sudo pacman -S gnome-shell gnome-extra

Al final guardamos nuestro script y:

cd (Donde este el script) && ./install.sh

Un ejemplo es esto:

Snap2

Bueno, esto ha sido todo por hoy, espero que os sea de mucha utilidad y nos vemos en otras entradas.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   ignacio dijo

    Muy buena entrada para los que no tenemos tanta idea, pero nos gusta distro-hoppear, instalar cosas y finalmenete arruinar distribuciones jajaja

    1.    erUzama dijo

      Pues esta es la base mas simple, despues se puede hacer mas complicado

  2.   dhunter dijo

    Yo tengo el mio para Debian, pero se puede modificar relativamente fácil para cualquier otra distro.

    https://github.com/xr09/kaos

    1.    erUzama dijo

      Gracias por comentar, he visto tu script y a partir de él voy a hacer mi script complejo.
      Tambien he visto tu blog y es bueno, si tengo dudad de PyQT, ya se a quien preguntar.

      1.    dhunter dijo

        Pues vaya, me alegro te sirva de base, ese script fue inspirado en uno que vi en el trabajo para instalar Fedora que estaba muy bien. El nombre que le puse «KaOS» no tiene nada que ver con la distro, de hecho creo que cuando empecé el script la distro no la habían anunciado todavía.

  3.   Manuel Blanco Montero dijo

    Lihuen con el entorno de escritorio► LXDE con integración de► LibreOffice
    Les quedo Muy Bien es Un Éxito Rápido y Muy completo estoy instalando a varias Personas y lo Uso Actualmente Esta Versión Son Los Únicos en El Mundo Q an sacado con este Entorno: LXDE tan Eficiente en conjunto con LibreOffice de Todo los Linux Español
    Tales como: Canaima; Trisquel; GuadaLinex; lliurex estos usan Entornos Muy Pesados y Lentos como GNone y KDE como Predeterminado %
    No Posen cualidades Diseño Como Lo Realizaron UD/s son los Únicos en Pensar Hacer Posible Un Linux tan Rápido y estable
    y con Paquetes de Programas Muy Útiles en Plataformas : 32Bit & 64Bit.
    y Dividido en cuatro Necesidades Escritorio Lihuen LXDE y Lihuen Aplicaciones Educativas y Linux Para Estudiantes de Informatica
    =Me Imagino un Mundo Usando Entorno como Base: LXDE y Cinnamon
    ->Los Felicito Excelente Sistema Operativo Sacaron UD/s
    Gracias Dios Se los Pague…
    «Ojala el Gobierno de Venezuela Use Este Linux Lihuen y los Ponga en las Canaima y lo Promuevan en Venezuela en la Población y en Las Instituciones Publicas y en los Hogares por Su Rapidez »
    ->Lo Voy Promover en La Universidades de Mi Estado y en mis Amistades&Familiares Me gusto Lo Rápido y Fácil de instalar la Estupenda
    Presentación Q Tiene
    ->Gracias q La Pase Bien desde Venezuela->Estado Trujillo.
    Q siempre saquen Linux Lihuen Lo Estaré Bajando Y Usando y recomendando a todo Aquel Q Conozca Q Use PC

  4.   dago dijo

    Una aclaración, KaOS no usa yaourt, ya que no está basada en Arch, usa kcp.
    Saludos.

    1.    erUzama dijo

      Ya lo se, he utilizado KaOS por un tiempo, decía que pacman era el común entre las dos distros, yaourt es propio de Arch y kcp es de KaOS, kcp -i paquete

  5.   Swicher dijo

    No se en otras distribuciones pero con Gentoo el tema se facilita un poco ya que para listar todos los programas instalados basta con hacer un
    cat /var/lib/portage/world
    Por ejemplo, así es como se ve mi archivo world (la categorización ya viene incluida).
    En cuanto al script, yo lo mejoraría un poco usando un array de este modo:
    declare -a paquetes

    Si bien pareciera que las categorías están dentro del array, estas son ignoradas ya que son comentarios

    paquetes=(

    categoría1

    paquete1
    paquete2
    paquete3

    categoría2

    paquete4
    paquete5
    )

    Iteramos sobre el array para instalar los paquetes secuencialmente

    for contador in ${!paquetes[@]}
    do
    sudo apt-get install ${paquetes[$contador]}
    done

    De este modo también se facilita para cambiar el comando de instalación (otro tema es si los paquetes mantienen los mismos nombres en distintas distribuciones).
    Y para instalar todos los paquetes a la vez se puede cambiar el bucle for del código anterior por esto:
    sudo apt-get install $(echo ${paquetes[@]})

    Seria lo mismo que escribir sudo apt-get install paquete1 paquete2 paquete3...

    Si por alguna razón se quiere usar cualquier otro carácter como separador en lugar del espacio, aquí se explican algunas formas de hacerlo.

    1.    Swicher dijo

      Al parecer WordPress interpreta los saltos de linea y los numerales/almohadillas como quiere dentro del tag code (o yo hice algo mal). Acabo de poner el código del script aquí para que se entienda mejor.

      1.    erUzama dijo

        Gracias por el aporte

  6.   Inukaze dijo

    Puedes hacer algo mas completo usando bash por ejemplo , recalco es SOLO UN EJEMPLO :

    Puedes hacer algo mas completo usando bash por ejemplo

    #!/bin/bash

    – ENCODING: UTF-8 –

    Titulo=»Actualizador de Distros o Derivadas»
    Pregunta=»Por Favor Elige una Opcion : »
    Distros=(
    «ArchLinux»
    «Debian»
    «CentOS»
    «Fedora»
    «OpenSuSE»
    «Salir»
    )

    function distro(){

    Determinar si existe /etc/issue

    if test -f /etc/issue
    then

    DISTRO_DESTINO="Manjaro Linux"
    DISTRO_ISSUE=$(cat /etc/issue | grep "$DISTRO_DESTINO" | cut -d " " -f01,02)

    if [ $DISTRO_ISSUE = $DISTRO_DESTINO ] then
    DISTRO=ArchLinux
    fi

    DISTRO_DESTINO="Debian"
    DISTRO_ISSUE=$(cat /etc/issue | grep "$DISTRO_DESTINO" | cut -d " " -f01)

    if [ $DISTRO_ISSUE = $DISTRO_DESTINO ] then
    DISTRO=Debian
    fi

    DISTRO_DESTINO="Ubuntu"
    DISTRO_ISSUE=$(cat /etc/issue | grep "$DISTRO_DESTINO" | cut -d " " -f01,02)

    if [ $DISTRO_ISSUE = $DISTRO_DESTINO ] then
    DISTRO=Debian
    fi

    DISTRO_DESTINO="Elementary"
    DISTRO_ISSUE=$(cat /etc/issue | grep "$DISTRO_DESTINO" | cut -d " " -f01,02)

    if [ $DISTRO_ISSUE = $DISTRO_DESTINO ] then
    DISTRO=Debian
    fi

    DISTRO_DESTINO="Fedora"
    DISTRO_ISSUE=$(cat /etc/issue | grep "$DISTRO_DESTINO" | cut -d " " -f01)

    if [ $DISTRO_ISSUE = $DISTRO_DESTINO ] then
    DISTRO=Fedora
    fi

    Fin de «Determinar si /etc/issue existe»

    fi

    Si no existe , devolver el texto «Distro Desconocida»

    else

    echo '
    Distro desconocida
    '

    fi
    }

    Actualizar_Distro(){

    case $1 in
    ArchLinux)
    sudo pacman -Syu
    yaourt -Syua
    ;;
    Debian)Versiones
    sudo apt-get update
    sudo apt-get -y upgrade
    ;;
    CentOS)
    sudo yum update
    ;;
    Fedora)
    sudo dnf update
    ;;
    OpenSuSE)
    sudo zypper update
    ;;
    esac

    }

    Esto va al final 😀

    echo
    echo ‘Por Favor usa un Numero’
    echo ‘Para Actualizar la Distro Deseada’
    echo
    echo «$Titulo»
    PS3=»$Pregunta»

    select Opcion in «${Distros[@]}» ; do
    printf «\n»
    case «$REPLY» in

    1 ) echo "Has escogido la Opcion Numero : $REPLY" $'\n' "$(Actualizar_Distro $Opcion)" $'\n' $'\n\n' "$DISTRO La distro ha sido actualizada por Inukaze (De Venezuela)" $'\n'; break;;
    2 ) echo "Has escogido la Opcion Numero : $REPLY" $'\n' "$(Actualizar_Distro $Opcion)" $'\n' $'\n\n' "$DISTRO La distro ha sido actualizada por Inukaze (De Venezuela)" $'\n'; break;;
    3 ) echo "Has escogido la Opcion Numero : $REPLY" $'\n' "$(Actualizar_Distro $Opcion)" $'\n' $'\n\n' "$DISTRO La distro ha sido actualizada por Inukaze (De Venezuela)" $'\n'; break;;
    4 ) echo "Has escogido la Opcion Numero : $REPLY" $'\n' "$(Actualizar_Distro $Opcion)" $'\n' $'\n\n' "$DISTRO La distro ha sido actualizada por Inukaze (De Venezuela)" $'\n'; break;;
    5 ) echo "Hasta La Proxima!" $'\n' && break;;
    Salir ) echo "Hasta La Proxima!" $'\n' && break;;
    $(( ${#Distros[@]}+1 )) ) echo && echo "Hasta Luego!" && echo; break;;
    *) echo "Opcion Invilada. Por Favor Elige Una Opcion Valida." $'\n';continue;;
    esac

    done
    fi

    Fin del Ejemplo . yo sugiero que si vas a hacer algo muy trabajado y complejo , en ese caso , mejor uses «dialog» para hacer instaladores textuales , como el que trae Debian

    Puedes ver un ejemplo aqui -> http://bash.cyberciti.biz/guide/Bash_display_dialog_boxes

    1.    erUzama dijo

      Ya se que se puede hacer con if then fi, coml lo voy a hacer yo, hare un script lo mas conpleto posible, con todas las distros que se,, y gracias por la ayuda, me has aclarado un poco como hacerlo, cuando termine el script, te lo paso

  7.   Enrique dijo

    Interesado en Slackware por aca! Alguien que ayude?

    1.    erUzama dijo

      Creo que con sabopkg – i paquete en vez de apt get o pacman, y para actualizar no tengo ni idea, aun no he pasado por esa distro.

  8.   derin dijo

    @erUzama

    Que gran GUIÁ este post, la verdad me gusto mucho, esa es la modalidad mediante comandos que se mueve FreeBSD Unix, ahora voy entendiendo poco a poco sobre los escripts, se podrá hacer lo mismo en FreeBSD Unix?, ya me gustaría una GUIÁ de como configurar y personalizar en un sistema como Gentoo o Slackware un escritorio Fluxbox y LXDE, pero las wikis son muy confusas para los nuevos usuarios.

  9.   Dave Rivera dijo

    Muy buena nota. Hace poco tuve que reinstalar el OS y me encontré con el problema de reinstalar todo lo que necesitaba, así que cree un post-install script: https://gist.github.com/daverivera/7d47761a98c3dd995225#file-install-sh

    Esta hecho para Arch, configura e instala algunos paquetes. Esta hecho sobre funciones que pueden ser comentadas para usar solo la necesaria. De pronto también le puede servir a alguien de base.

  10.   jaraneda dijo

    Muy interesante este articulo, pienso que lo mejor seria que el script pudiera sacar una lista de lo instalado y guardarla para en un proximo formateo te instalara lo de esa lista, yo por eso no he cambiado de distro ultimamente.
    Muchas gracias.

  11.   KANNON dijo

    Buen post,10 puntos y a favoritos lince de las montañas.

    Voy a profundizar un poco mas en estos scripts pafa crear el mío para Ubuntu.
    Me acuerdo que en la pagina Slice of Linux solian poner esos scripts en los post de «que hacer despues de instlar …»

  12.   nosferatuxx dijo

    Saludos comunidad..!!

    Wow.!!
    Veo que este script se puede volver tan complejo y tan completo como se quiera según he leído los comentarios.
    Yo por ejemplo encontré un script post instalación para xubuntu que incluye hasta código de color para hacerlo mas presentable digamos, los cuales incluso me atreví a jugar con ellos.

    Aquí quiero pensar que puedo hacer un primer script que mediante la condicional if then fi , pueda primero verificar de que distro se trata, y dentro de la condicional respectiva; llamar al script apropiado para la instalacion de paquetes en la distro correspondiente.

    Esto con la finalidad de hacerlos lo mas simple posible y que dichos scripts no sean ni tan extensos ni tan complejos y resulten mas facil de mantener/actualizar.