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: 12.781 ]
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
Howto de Compilação com Slackbuilds
Programas em Modo Texto (on Shell)
Guia de Instalação do Arch Linux
Gerenciadores de Pacote e Repositórios
Entendendo a estrutura do Linux
Como Ativar a Aceleração por GPU (ROCm) no Ollama para AMD Navi 10 (RX 5700 XT / 5600) no Gentoo
Como criar um make.conf no Gentoo (para iniciantes)
Como instalar o Open WebUI para Ollama no Gentoo (com systemd)
INSTALAR (e jogar) COUNTER STRIKE 1.6 (install cs 1.6) NO LINUX
Removendo o bloqueio por erros de senha no Gentoo (systemd)
Papel de Parede Animado no KDE Plasma 6 (Com dicas para Gentoo)
Homebrew: o gerenciador de pacotes que faltava para o Linux!
Removendo a trava de versão do Project Brutality para GZDoom/UZDoom
Acelere a compilação no Gentoo com distcc (guia para Systemd)









