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.403 ]
Por: Slackjeff em 19/02/2020 | Blog: https://slackjeff.com.br
#!/bin/sh
#=========================HEADER===============================|
#AUTOR:
# Jefferson Rocha
#
#VERSÃO:
# 0.1
#
#DESCRIÇÃO:
#removepkg - Remove pacote e hierarquia do sistema operacional.
#==============================================================|
# Erros? pare.
set -e
#==========================| FUNÇÕES
REMOVE()
{
}
#==========================| INICIO
case $1 in
-r|--remove|remove)
shift # Rebaixando um parâmetro posicional.
# O usuário passou o nome de algum pacote?
[ -z "$1" ] && { echo "Você deve fornecer o nome do pacote."; exit 1 ;}
# Entrando no diretório /var lalala
cd /var/log/installed
# Fazendo a listagem do diretório /var/log/installed e
# conferindo se o pacote está instalado no sistema.
for pack_exist in *; do
if ! [ "$(grep "$1" < ${pack_exist})" ]; then
echo "O pacote $1 não está instalado no sistema."
exit 1
else
# Capturando o nome do track para lançar na função REMOVE.
pkg_for_remove="$pack_exist"
break
fi
done
# Chamando a função REMOVE e passando como parâmetro o nome do pacote.
REMOVE "$pkg_for_remove"
;;
esac
REMOVE()
{
local pkg_remove="$1"
# Deletando arquivos. while read the_file; do rm $the_file 2>/dev/null && echo " Delete: $the_file" done < "$pkg_remove"
# Removendo links simbólicos se existir.. while read the_link; do unlink $the_link &>/dev/null && echo "Delete Links: $the_link" done < "$pkg_remove"
# Removendo diretórios nulos while read the_dir; do rm -d $the_dir &>/dev/null && echo "Delete empty directories: $the_dir" done < "$pkg_remove"
echo "Deletando track ${pkg_remove}"
[ -e "${pkg_remove}" ] && rm -v ${pkg_remove}
#!/bin/sh
#=========================HEADER===============================|
#AUTOR:
# Jefferson Rocha
#
#VERSÃO:
# 0.1
#
#DESCRIÇÃO:
#removepkg - Remove pacote e hierarquia do sistema operacional.
#==============================================================|
# Erros? pare.
set -e
#==========================| FUNÇÕES
REMOVE()
{
local pkg_remove="$1"
# Deletando arquivos.
while read the_file; do
rm $the_file 2>/dev/null && echo " Delete: $the_file"
done < "$pkg_remove"
# Removendo links simbólicos se existir..
while read the_link; do
unlink $the_link &>/dev/null && echo "Delete Links: $the_link"
done < "$pkg_remove"
# Removendo diretórios nulos
while read the_dir; do
rm -d $the_dir &>/dev/null && echo "Delete empty directories: $the_dir"
done < "$pkg_remove"
echo "Deletando track ${pkg_remove}"
[ -e "${pkg_remove}" ] && rm -v ${pkg_remove}
}
#==========================| INICIO
case $1 in
-r|--remove|remove)
shift # Rebaixando um parâmetro posicional.
# O usuário passou o nome de algum pacote?
[ -z "$1" ] && { echo "Você deve fornecer o nome do pacote."; exit 1 ;}
# Entrando no diretório /var lalala
cd /var/log/installed
# Fazendo a listagem do diretório /var/log/installed e
# conferindo se o pacote está instalado no sistema.
for pack_exist in *; do
if ! [ "$(grep "$1" < ${pack_exist})" ]; then
echo "O pacote $1 não está instalado no sistema."
exit 1
else
pkg_for_remove="$pack_exist"
break
fi
done
# Chamando a função REMOVE e passando como parâmetro o nome do pacote.
REMOVE "$pkg_for_remove"
;;
esac
Programar em Shell - Script só para os baixinhos
Descartando Séries no Slackware não tão Necessárias
Como ser um expert em GNU/Linux!
Criando um pacote TXZ no Slackware
Arredondando o Ubuntu em seu desktop
Funcionamento de um cluster Linux
Fundamentos do sistema Linux: discos e partições
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
fusermount3 no Ubuntu 25.10 - mantenha o perfil do AppArmor
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
Criação de diretórios e aplicação de restrições de acesso no Linux
Monte o Google Drive como uma pasta remota no Linux (2)
Podem me chamar de 1mbecil :) (10)
Compartilhar ZEBRA ZD220 na rede (0)
diferença entre o Tor baixado pelo Gerenciador de Aplicativos e o Tor ... (8)









