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.909 ]
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
Compilação Kernel Linux no Slackware
Programas em Modo Texto (on Shell)
Criando um pacote TXZ no Slackware
Descartando Séries no Slackware não tão Necessárias
Programar em Shell - Script só para os baixinhos
Introdução ao gEDA - Suíte de eletrônica
Questão de LPIC - Manipulação de dispositivos
Introdução ao Linux: Dual-Boot com Big Linux 4 e Windows XP
Porque Gentoo semi-binário atualmente (desabafo)
A combinação de WMs com compositores feitos por fora
Audacious, VLC e QMMP - que saudades do XMMS
SUNO OpenSource: Crie um servidor de gerador de música com IA
Instalando SVP4 e MPV (VapourSynth) no Gentoo
Migração do KDE Plasma para Cinnamon no Gentoo (com systemd) + Tema Colloid
Como desativar a economia de energia no Gentoo (Systemd, Wi-Fi, USB e SSH)
Um filme, uma banda, um jogo, um livro, um anime (ou mangá) (5)
como deixo uma inferface grafica abrir automaticamente [RESOLVIDO] (9)









