Programs -- Script Simples e limitado pra instalação de arquivos
Publicado por Perfil removido (última atualização em 09/02/2017)
[ Hits: 2.308 ]
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
Cadastrando e removendo usuários do SAMBA com um script
TxzSync 1.0 - Fazer Backup dos Pacotes Baixados pelo Slackpkg
Verificando disponibilidade de link (V.1)
Pequeno gerador de relatório da rede (CSV)
Nenhum comentário foi encontrado.
IA local no bolso, novo visual no Raspberry Pi OS e mais destaques do software livre
Kernel turbinado, compatibilidade em alta e debate sobre sustentabilidade: o dia no mundo Linux
Kernel turbinado e GNOME 49 dominam o giro do dia no mundo Linux
Novidades Linux: Kernel 6.17, distros em ebulição e segurança em foco
Kernel ganha novos linters Rust e distros avançam com recursos de IA
Adicionando o repositório backports no Debian 13 Trixie
Como definir um IP estático no Linux Debian
SAMBA parou de compartilhar (2)
Orientação para instalar o Warsaw - módulo de proteção do Banco do Bra... (8)
systemd-resol... precisa ser reiniciado periodicamente (5)
Alguém que utilize o Warsaw do BB no Ubuntu 24.04 [RESOLVIDO] (6)
Fedora não reconhece James Donkey 102 Wireless Gaming Mouse (2)