DioPSI - Script multidistro para instalar programas
Publicado por Isaac Luiz Angelo Castro (última atualização em 08/01/2024)
[ Hits: 2.887 ]
Homepage: http://bitcoinrotator.pe.hu/
Introdução
Um dia rodando pela internet vi um post de um Vlog chamado DioLinux de um entusiasta de Linux, tentando automatizar a instalação dos programas após , de forma simples e funcional mas muito redundante, do ponto de vista da programação é extremamente redundante o que ele estava fazendo, mas a ideia me parecia boa, por isso resolvi aproveitar e criar uma solução mais robusta, e batizei em homenagem a quem inspirou o script.
O que é o DioPSI ?
O DioPSI é um script escrito em Shell Script para acelerar a instalação de Programas após você ter recém instalado um sistema operacional Linux (Debian based).
Como funciona?
Esse script analisa um arquivo de texto simples contendo uma lista de programas organizada tendo como base os método de instalação, e executa a instalação dos programas listados.
Como usar?
Logue como usuário root, entre na pasta do script e dê perrmissão de escrita para o arquivo diopsi.sh com o comando chmod +x diopsi.sh.
Sintaxe do comando
abstração comando [flag] arquivo
exemplo ./diopsi.sh -a my_prograns.txt
flags
flag função
--all Instala utilizando todos os metodos disponíveis (apt,flatpack,snap)
-a Instala os programas utilizando metodo apt.
-f Instala os programas utilizando metodo flatpack.
-s Instala os programas utilizando metodo snap.
-h ou --help Exibe ajuda.
-v ou --version exibe a versão do script.
montando a lista de programas
O script aceita somente arquivos do tipo ASCII text, não é preciso extensão. esse arquivo deve ser organizado da seguinte forma:
Pacotes que vão utilizar método de instalação apt devem ser escritos em lowercase e estar entre as palavras APT...PTA, divididas por espaço.
Exemplo apt
APT gimp krita:i386 TPA
ou
APT
gimp krita:i386
TPA
Pacotes que vão utilizar método de instalação Flatpack devem ser escritos em lowercase e estar entre as palavras FLAT...TALF, divididas por espaço.
Exemplo Flatpack
FLAT gimp krita:i386 TALF
ou
FLAT
gimp krita:i386
TALF
Pacotes que vão utilizar método de instalação snap devem ser escritos em lowercase e estar entre as palavras SNAP...PANS, divididas por espaço.
Exemplo snap
SNAP gimp krita:i386 PANS
ou
SNAP
gimp krita:i386
PANS
Github do projeto:
https://github.com/isaacangello/DioPSI
#!/bin/bash ######################################################################## # script DioPSI #Essa é uma reconstrução do script inicial DioPSI. #Esse script tem como objetivo automatizar a reinstalação #de programas após a instalção do sistema operacional (linux). #Esse script foi inspirado no post do Dio Linux. ######################################################################## ############ Para evitar alguns erros essa sessão contém informaçoes de ajuda ############ e contém informações sobre a versão do script. helpprint (){ echo " Sintaxe comando [flag] arquivo Flags-------------------------------------------------------------------------- --all Instala utilizando todos os metodos disponíveis (apt,flatpack,snap) -a Instala os programas utilizando metodo apt. -f Instala os programas utilizando metodo flatpack. -s Instala os programas utilizando metodo snap. _______________________________________________________________________________ O script aceita somente arquivos do tipo ASCII text, não é preciso extensão " exit 0 } version="0.1.1" if [ $1 == "-h" ] || [ $1 == "--help" ] ;then helpprint ; fi if [ $1 == "-v" ] || [ $1 == "--version" ] ; then echo "versão $version" ; fi #################################################################################### ############ aprte do script para tratamente de nomes de arquivos temorários #################################################################################### arquivo=$(echo $*) tmparqapt=aptprogs.txt tmparqflat=flatprogs.txt tmparqsnap=snapprogs.txt arquivo=$(echo "${arquivo##* }") testearq=$(file $arquivo) #echo $testearq | cut -d':' -f2 | cut -d' ' -f2-3 testearqresult=$(echo $testearq | cut -d":" -f2 | cut -d" " -f2-3) remoteflatpack=$( flatpak remotes | head -n 1 | cut -f1 ) #################################################################################### ############ checando se o arquivo existe passado no argumento. #################################################################################### if [ "$testearqresult" != "ASCII text" ] ; then echo " houve algum erro ou arquivo não existe. " exit 1 fi if [ -f $tmparqapt ];then rm -f $tmparqapt ;fi if [ -f $tmparqflat ];then rm -f $tmparqflat ;fi if [ -f $tmparqsnap ];then rm -f $tmparqsnap ;fi #read isc sed -n '/APT/,/TPA/p' $arquivo > $tmparqapt sed -n '/FLAT/,/TALF/p' $arquivo > $tmparqflat sed -n '/SNAP/,/PANS/p' $arquivo > $tmparqsnap sed -i 's/APT/ /g' $tmparqapt sed -i 's/TPA/ /g' $tmparqapt sed -i 's/FLAT/ /g' $tmparqflat sed -i 's/TALF/ /g' $tmparqflat sed -i 's/SNAP/ /g' $tmparqsnap sed -i 's/PANS/ /g' $tmparqsnap sed -i '/^$/d' $tmparqapt sed -i '/^$/d' $tmparqflat sed -i '/^$/d' $tmparqsnap #################################################################################### ############ funcão motor que executa as instalaçoes dos pacotes #################################################################################### function installpkgs(){ arquivo_param=$1 while IFS= read -r linha || [[ -n "$linha" ]]; do for palavra in $linha do case $2 in "Apt") apt install $palavra -y ;; "Flatpack") flatpack install -y $remoteflatpack $palavra ;; "Snap") resuldinfo=$(snap info $palavra | grep latest/stable: | grep classic | wc -l) if [ $resuldinfo == 0 ] ; then echo "Instalando $palavra via $2 aguarde..." snap install $palavra else echo "Instalando $palavra via $2 aguarde..." snap install --classic $palavra fi ;; *) echo "Houve algum erro estrambólico com o codigo de saída $?" ;; esac sleep 1 done done < "$arquivo_param" } #################################################################################### ############ tratamento de argumentos recebidos pelo comando principal ($0) #################################################################################### while [ $# -gt 0 ]; do case "$1" in -a) installpkgs "$tmparqapt" "Apt" break ;; -f) installpkgs "$tmparqflat" "Flatpack" break ;; -s) installpkgs "$tmparqsnap" "Snap" break ;; --all) installpkgs "$tmparqapt" "apt" installpkgs "$tmparqflat" "Flatpack" installpkgs "$tmparqsnap" "Snap" break ;; *) echo "$0: Este parâmetro '$1' não foi reconhecido, saindo... proximo é $2" exit 1 ;; esac shift done #################################################################################### ############ ####################################################################################
Baixe e converta um vídeo do Youtube (download e convert)
Atualizando o sistema no Debian
Contar o número de arquivos e subdiretórios de um diretório
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
Notebook instalado com Linux Debian de fábrica dando problema (1)
Geração de CSR para enviar à CA + instalação do certificado SSL no ubu... (6)
Mensagem na Inicialização - Debian 11 [RESOLVIDO] (4)
Firefox - internet banking Banco do Brasil - ubuntu 24.04 [RESOLVIDO] (3)
Por um executável MS/DOS " exe " no grub, alguém sabe fazer ... (20)