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: 10.967 ]
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
Como ser um expert em GNU/Linux!
Criando um pacote TXZ no Slackware
Howto de Compilação com Slackbuilds
Introdução ao Arch Build System
GNU/Linux, querido software livre
Sabayon completo, personalizado e portátil, em pendrive de boot
Compilando Apache 2 com PHP, MySQL, mod_perl e mod_ssl
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Melhorando a precisão de valores flutuantes em python[RESOLV... (15)
Mint começou a apresentar varios erros (2)
Recuperar arquivos de HD em formato RAW usando Linux (1)