Programs -- Script Simples e limitado pra instalação de arquivos
Publicado por Perfil removido (última atualização em 09/02/2017)
[ Hits: 2.125 ]
Script que serve para instalar programas que não estão disponiveis pelo seu Package Manager, em vez de instalar diretamente nos diretorios do seu sistema, ele é inspirado pelo GoboLinux, que instala no seguinte esquema:
/Programs/<NomeDoPrograma>/<VersãoDoPrograma>/<DiretoriosComunsAInstalação> # Diretorios como /bin /usr/share /etc
/Programs/<nomeDoPrograma>/<VersãoDoPrograma>/src # Mantem o source code
Exemplos:
/Programs/2bwm/git/{bin,/usr/bin,/usr/share/man/man1,/etc}
/Programs/2bwm/git/src
Em seguida ele faz um Symlink entre a instalação e o Diretorio especificado
Exemplos:
/usr/bin/2bwm -> /Programs/2bwm/git/usr/bin/2bwm # Binaria do 2bwm é um symlink a sua instalação
/usr/bin/hidden -> /Programs/2bwm/git/usr/bin/hidden # Binaria do Hidden, que faz parte do 2bwm
/usr/share/man/man1/2bwm.1 -> /Progarms/2bwm/git/usr/share/man/man1 # man page do 2bwm é um symlink a sua instalação
Vantagens:
--> Deletar o programa é uma questão de deletar sua pasta/versão em /Programs, não precisa caçar symlinks
--> Seguindo: um comando com find é o suficiente pra deletar symlinks quebrados em /bin, /usr/bin, etc
--> È mais organizado e voce pode ver exatamente todos os pacotes instalados com um comando ls
Desvantagens:
--> O script tem escopo limitado, ele não vai seguir mais de 1 diretorio a fundo
--> lib/programa.so (sera linkado)
--> lib/programa/library.so (não sera linkado, pois ele segue ate 1 diretorio )
--> O script não permite modificações nos Makefiles como package managers como Portage e Paludis
--> O script requer que o usuario baixe e crie a hireaquia /Programs/<programa>/<versão> por si mesmo.
--> Varias cosias como os diretorios que são instalados e o local que tem /Programs são hardcoded
#!/bin/sh CMD="$1" if [ "$(id -u)" -ne 0 ]; then printf "%s: must be superuser.\n" "$( basename "$0")" 2>&1 exit 1 fi if [ -z "$1" ]; then printf "usage: %s [symlink|update|mkinfo|compile] <program> <version>\n" "$(basename "$0")" exit 1 fi cd /Programs/infodir || exit mkinfo() { printf "bin\nsbin\nusr/bin\nusr/sbin\n" > BINDIR printf "usr/share/man/man1\n" > DOCDIR printf "lib\nusr/lib\nusr/lib64\n" > LIBDIR } checkprogram() { if [ -z "$1" ]; then printf "Please give a program name\n" exit 1 fi if [ -z "$2" ]; then printf "Please give a program version\n" exit 1 fi } symlink() { TARGET="$1/$2" grep -v '^ *#' /Programs/infodir/BINDIR \ /Programs/infodir/LIBDIR \ /Programs/infodir/DOCDIR \ | cut -d : -f 2 \ | while IFS= read -r dir do for bin in /Programs/"$TARGET"/"$dir"/*; do if [ -f "$bin" ]; then ln -sv "$bin" "/$dir/$(basename "$bin")"; fi done done } update() { TARGET="$1/$2" cd /Programs/"$TARGET"/src || exit if [ -d ".git" ]; then git pull -v fi } compile() { TARGET="$1/$2" cd /Programs/"$TARGET"/src || exit if [ -f /Programs/"$TARGET"/src/configure ]; then ./configure --prefix=/Programs/"$TARGET"/usr fi make clean make make install PREFIX=/Programs/"$TARGET"/usr MANPREFIX=\$\{PREFIX\}/share/man } case "$CMD" in sym*) checkprogram "$2" "$3" symlink "$2" "$3" ;; upd*) checkprogram "$2" "$3" update "$2" "$3" ;; com*) checkprogram "$2" "$3" compile "$2" "$3" ;; mki*) mkinfo ;; *) printf "usage: %s [symlink|update|mkinfo|compile] <program> <version>\n" "$(basename "$0")" exit 1 ;; esac
"Wnslookup" - Monitorando os DNS da Rede
Script simples para Atualizar hora Slackware
Nenhum comentário foi encontrado.
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
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como aumentar tamanho do anexo? (0)
como instalar o controle do ps2 no linux? (1)
Definir tempo limite para acesso ssh (6)
Tentando instalar o Ekattor School no xampp (6)
Problema instalação do sige software gestão escolar script gratuito (0)
[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