Programs -- Script Simples e limitado pra instalação de arquivos
Publicado por Perfil removido (última atualização em 09/02/2017)
[ Hits: 2.430 ]
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
Script shell para automatizar downloads do MegaUpload
Atualizador de sistema multipla escolha
Link direto de arquivos no Sharex
[ResuLinux] Discador Claro 3G em dialog
Nenhum comentário foi encontrado.
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
Necessário autenticar ao imprimir - Ubuntu X Windowns (1)
O que houve com slackware ??? (11)
O Free Download Manager não abre no Fedora 43 KDE Plasma (2)









