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.813 ]
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
Como ser um expert em GNU/Linux!
Descartando Séries no Slackware não tão Necessárias
Compilação Kernel Linux no Slackware
Pós-instalação do Debian 9 para novatos
Atualização das provas LPIC-1, 304 e Essentials
Guia Introdutório do Linux III
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
Como posso localizar o arquivo HTML da página inicial do GLPI dentro d... (2)
O que você está ouvindo agora? [2] (164)
Como baixar os drivers de áudio no linux mint? (6)
Erro ao iniciar Ubuntu 24.04.1 LTS - Management Owner Key - MoK (6)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta