Crie Seu Próprio Gerenciador de Pacotes do Zero - Parte 1
Eu sempre fui curioso em relação às coisas que me interessam, quando iniciei no mundo do GNU/Linux, eu fiquei admirado com a facilidade de instalar programas. No início, rodando entre as distribuições Linux, eu acabei conhecendo vários tipos de gerenciadores de pacotes e cada um com sua peculiaridade. Foi aí que me interessei em ler o código fonte de diversos gerenciadores e criar o meu próprio.
[ Hits: 11.565 ]
Por: Slackjeff em 19/02/2020 | Blog: https://slackjeff.com.br
#!/bin/sh #==============================HEADER================================| #AUTOR # Jefferson 'Slackjeff' Rocha # #VERSÃO # 0.1 # #DESCRIÇÃO #pkginstall - Instala pacotes gerado com o createpkg e gera uma lista # de rastreamento em /var/log/installed/PKG.track #====================================================================| set -e #======================== CONFIGURAÇÕES INSTALLED_PKG="/var/log/installed"
#======================== TESTES [ ! -d $INSTALLED_PKG ] && mkdir $INSTALLED_PKG
INSTALL() { } #======================== INICIO case $1 in -i|--install|install) shift # Rebaixando parâmetro. # Se o arquivo existir chem a função INSTALL com o nome do pacote. [ -e "$1" ] && INSTALL "$1" ;; *) echo "Opções disponiveis: -i|--install|install" ;; esac
INSTALL() { # Nome do pacote completo com extensão local pkg="$1" # Nome do pacote sem extensão .tar.xz local pkg_only_name="${pkg//.tar.xz/}"
# Informação para o usuário. echo "========> Iniciando instalação do pacote ${pkg}" # Criando arquivo .track e enviando nome do pacote como comentário. echo "#PACOTE: ${pkg_only_name}" > "${INSTALLED_PKG}/${pkg_only_name}.track" echo
# Fazendo extração do pacote e enviando a lista do que está sendo instalado # para o arquivo .track tar xvf ${pkg} -C / >> "${INSTALLED_PKG}/${pkg_only_name}.track"
echo "Removendo caracteres desnecessários do arquivo .track" # Removendo alguns caracteres não importantes! e que podem resultar em falhas. sed -i 's/\.\//\//g; s/^\/$//; /^$/d' "${INSTALLED_PKG}/${pkg_only_name}.track" 2>/dev/null
echo "Pacote: $pkg foi instalado com sucesso." return 0
#!/bin/sh #==============================HEADER================================| #AUTOR # Jefferson 'Slackjeff' Rocha # #VERSÃO # 0.1 # #DESCRIÇÃO #pkginstall - Instala pacotes gerado com o createpkg e gera uma lista # de rastreamento em /var/log/installed/PKG.track #====================================================================| set -e #======================== CONFIGURAÇÕES INSTALLED_PKG="/var/log/installed/" #======================== TESTES [ ! -d $INSTALLED_PKG ] && mkdir $INSTALLED_PKG #======================== FUNÇÕES INSTALL() { # Nome do pacote completo com extensão local pkg="$1" # Nome do pacote sem extensão .tar.xz local pkg_only_name="${pkg//.tar.xz/}" # Informação para o usuário. echo"========> Iniciando instalação do pacote ${pkg}" # Criando arquivo .track e enviando nome do pacote como comentário. echo "#PACOTE: ${pkg_only_name}" > "${INSTALLED_PKG}/${pkg_only_name}.track" echo # Fazendo extração do pacote e enviando a lista do que está sendo instalado # para o arquivo .track tar xvf ${pkg} -C / >> "${INSTALLED_PKG}/${pkg_only_name}.track" echo "Removendo caracteres desnecessários do arquivo .track" # Removendo alguns caracteres não importantes! e que podem resultar em falhas. sed -i 's/\.\//\//g; s/^\/$//; /^$/d' "${INSTALLED_PKG}/${pkg_only_name}.track" 2>/dev/null echo "Pacote: $pkg foi instalado com sucesso." return 0 } #======================== INICIO case $1 in -i|--install|install) shift # Rebaixando parâmetro. # Se o arquivo existir chem a função INSTALL com o nome do pacote. [ -e "$1" ] && INSTALL "$1" ;; *) echo "Opções disponiveis: -i|--install|install" ;; esac
Programar em Shell - Script só para os baixinhos
Compilação do Kernel Linux para máquinas locais Debian
Howto de Compilação com Slackbuilds
Criando um pacote TXZ no Slackware
Instalação do Moodle 3.0 no CentOS 7
Instalando seu Debian Sarge (Parte I)
Como gerar um podcast a partir de um livro em PDF
Automatizando digitação de códigos 2FA no browser
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Músicas de Andrew Hulshult no DOOM (WAD)
Instalar o Apache, MySQL e PHP no Oracle Linux 8
Bloqueando telemetria no Deepin 23.1
Como converter imagens PNG/JPEG para SVG em linha de comando
Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!
Java é uma linguagem de brinquedo? (9)
Rejeição de acesso ao servidor (1)
Alguém pode me explicar essa matemática? (2)