DioPSI - Script multidistro para instalar programas
Publicado por Isaac Luiz Angelo de Azevedo (última atualização em 08/01/2024)
[ Hits: 2.422 ]
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 #################################################################################### ############ ####################################################################################
Multiplos gerenciadores nome do seu pacote
mysqlapache2combo - Pequeno script que facilita a vida
Listar e desconectar usuarios conectados no DB Progress 9.1c/d
Crie alias para as tarefas que possuam longas linhas de comando - bash e zsh
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET
Instalando Discord no Fedora 40
Instalando Discord no Ubuntu 24.04 LTS
Como instalar o XFCE4-terminal na sua distribuição Linux e integrá-lo ao sistema
Como instalar o Tilix Terminal no Gnome e usá-lo como menu drop-down ao estilo Quake
Acento til, agudo e circunflexo nao funcionam com Debian (3)
Problemas na configuração da acentuação do meu teclado ABNT2 [RESOLVI... (12)
BUG ao atualizar pacotes libglib2.0-0 libglib2.0-bin libglib2.0-data [... (15)