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.

      ignacio dijo

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

         erUzama dijo

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

      dhunter dijo

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

    https://github.com/xr09/kaos

         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.

           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.

      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

      dago dijo

    Una aclaraciรณn, KaOS no usa yaourt, ya que no estรก basada en Arch, usa kcp.
    Saludos.

         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

      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.

         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.

           erUzama dijo

        Gracias por el aporte

      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

         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

      Enrique dijo

    Interesado en Slackware por aca! Alguien que ayude?

         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.

      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.

      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.

      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.

      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 …ยป

      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.