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.966 ]
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
Howto de Compilação com Slackbuilds
Criando um pacote TXZ no Slackware
Software Manivela VS Software Modinha
Compilação do Kernel Linux para máquinas locais Debian
Compilação Kernel Linux no Slackware
À procura por pacotes em distros Debian-based (Ubuntu, Linux Mint e outras)
Software livre e a liberdade fundamental
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
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
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Melhorando a precisão de valores flutuantes em python[AJUDA] (15)
Mint começou a apresentar varios erros (2)
Recuperar arquivos de HD em formato RAW usando Linux (1)