Programs -- Script Simples e limitado pra instalação de arquivos
Publicado por Perfil removido (última atualização em 09/02/2017)
[ Hits: 2.335 ]
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
mant - abra manpages em seu terminal
Configurar servidor proxy no Apt-get usando SS e Kdialog
PDC linux desligando pc em uma de windows
Testa link e reinicia a interface
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (20)
Problemas com Driver NVIDIA (0)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)









