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.419 ]
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
Programar em Shell - Script só para os baixinhos
Programas em Modo Texto (on Shell)
Como ser um expert em GNU/Linux!
Compilação do Kernel Linux para máquinas locais Debian
Pesquisa com slocate, locate e updatedb
Distribuições GNU/Linux em computadores limitados ou antigos
Debian + Squid + Webmin + Outlook (porta 25, 110)
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
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
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Não consigo instalar distro antiga no virtualbox nem direto no hd (11)
Quais os códigos mais dificeis que vcs sabem fazer? (12)
systemd-resol... precisa ser reiniciado periodicamente [RESOLVIDO] (7)









