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.339 ]
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
Compilação do Kernel Linux para máquinas locais Debian
Programas em Modo Texto (on Shell)
Compilação Kernel Linux no Slackware
Afinal, qual a melhor distribuição?
Meu primeiro contato com Basic Linux
Como utilizar o Kurumin dentro de uma única partição Windows
Como escolher o melhor escalonador de CPU para melhorar o desempenho da máquina
Curiosidade sobre DOOM Guy e Isabelle de Animal Crossing
Inicializando servidor Ubuntu na AWS e rodando apache em Container
Instalando TeamViewer no Debian 12
Conheça o Octopi, outro frontend para o Pacman com acesso ao AUR (Arch Linux e derivados)
Terminal transparente no Debian 12 com interface i3wm usando Xfce4-Terminal e Compton
O que é isso no meu navegador? [RESOLVIDO] (5)
Eu estou com problemas para usar o QBASIC no Dosbox X (2)
Ubuntu simplesmente morreu (8)
Como colocar uma assinatura digital em um código compilado ! (2)