DioPSI - Script multidistro para instalar programas
Publicado por Isaac Luiz Angelo Castro (última atualização em 08/01/2024)
[ Hits: 3.281 ]
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 #################################################################################### ############ ####################################################################################
Logs do daemontools - tradução de timestamp
Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
NÓtinha - Gerador de notas fiscais para empresas
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Minha rede tem um espaço invisível que não dá pra digitar o nome da re... (1)
Pedagogia no brasil não passa de alfabetização por m4sturbação mental ... (2)
compilação samba 4.22 rock linux 9.5 (3)
Erro de segmentação «Segmentation fault (core dumped)» ao retornar obj... (7)