O desconhecido execpak

Tutoriais BrazilFW 2.x em Português

O desconhecido execpak

Mensagempor br_lemes » Seg Jul 25, 2011 5:15 pm

:arrow: http://www.br-lemes.net/2011/07/brazilf ... ecpak.html

Depois do Instalar addon sem reiniciar, meu próximo artigo seria sobre remover addon sem reiniciar. Mas eis que me veio o fabiosammy e me mostrou a existência do comando execpak, que serve justamente para extrair e iniciar o addon sem reiniciar. E pensei: agora pronto! Meu artigo ficou inútil! Resolvi emendar o texto para incluir essa nova informação.

Nem ia testar, o execpak funciona e pronto. Mas... santo senso paranóico! O caso merece atenção, e resolvi até fazer um artigo extra só para expor isso. O procedimento foi realizado na versão 2.32.2.

Consultando o execpak pude perceber que um addon pode ter mais que um arquivo /etc/rc.d/pkgs/rc.* e esse arquivo nem precisa ter o mesmo nome do addon. Pude ver também, que alguns addons contém módulos do kernel que são iniciados chamando o /etc/rc.d/pkgs/mod.*, tarefa que durante a inicialização fica a cargo do /etc/rc.d/rc.modules que é um dos primeiros comandos executados pelo /etc/rc.d/rc.S.

Para não confundir o que inicia o que, vamos revisar o que vimos antes. O computador liga e encontra o syslinux que passa o controle ao kernel e por sua vez monta o root.tgz e executa o init. O init consulta o /etc/inittab e vê que precisa chamar o /etc/rc.d/rc.sysinit que extrai os seus addons e chama o /etc/rc.d/rc.S. Primeiro o /etc/rc.d/rc.S chama o /etc/rc.d/rc.modules que executa todos os /etc/rc.d/pkgs/mod.*, e depois (voltando ao rc.S) ele chama o /etc/rc.d/rc.M que executa todos os /etc/rc.d/pkgs/rc.* e termina a história chamando o /etc/rc.d/rc.local. Entendido, ou confundiu mais? De qualquer jeito, deixa de lado essa história e passemos adiante.

O caso é que o execpak extrai e inicia seu addon, mas não o coloca na lista /var/lib/lrpkg/packages. Essa lista é usada pelo backup para saber o que deve permanecer e o que deve ser descartado. Sem o seu pacote nessa lista, ao fazer backup seu addon vai para o espaço. Então, um método alternativo para instalar addon sem reiniciar é o seguinte:

Código: Selecionar todos
mt
wget -P /mnt http://www.brazilfw.com.br/users/juanillo/bmt/bmt.tgz
umt
execpak bmt
echo bmt >> /var/lib/lrpkg/packages


Na verdade, não alternativo mas até preferível, por levar em consideração as questões dos addons que possam ter mais de um rc.* e/ou mod.*. Só me resta a dúvida de porque esse execpak está ai escondido no BrazilFW feito fantasma.

br_lemes, o Fantasma insano (Homicida)
Editado pela última vez por br_lemes em Seg Jul 25, 2011 8:32 pm, em um total de 5 vezes.
Se você tem uma maçã e eu tenho outra; e nós trocamos as maçãs, então cada um terá sua maçã. Mas se você tem uma ideia e eu tenho outra, e nós as trocamos; então cada um terá duas ideias.

http://www.br-lemes.net/
Avatar do usuário
br_lemes
BFW Beneméritos
 
Mensagens: 82
Registrado em: Dom Jun 19, 2011 12:46 am
Localização: Apiacás - MT
BrazilFW Box:

Re: O desconhecido execpak

Mensagempor Thiago » Seg Jul 25, 2011 9:04 pm

br_lemes escreveu:
Só me resta a dúvida de porque esse execpak está ai escondido no BrazilFW feito fantasma.

Respondendo a sua pergunta sobre o "fantasma" execpak, se olhar no diretorio "/usr/sbin" verá o execpak la, ele foi escrito e está disponivél para essa versão graças ao Wosh.
Não é nenhum segredo, não é nenhum comando que não seja utilizado.
Abaixo deixo o codigo do execpak para vocês refletirem.... :o!
Código: Selecionar todos
#ExecPak 1.0 by Washington Rodrigues 2008#
usage() {
echo;echo "execpak [name of addon].";echo
exit
}
MNT="/var/lib/lrpkg/mnt"
. /tmp/boot.info
[ -z "$1" ] && usage
mount -o ro /dev/boot $MNT -t $FSTYPE
FILENAME="$MNT/"`basename $1 .tgz`".tgz"
[ ! -e "$FILENAME" ] && { echo;echo "Addon Packet not found!";echo;umount $MNT;exit; }
rm -f /tmp/execpak.tmp 2>/dev/null
LIST=`tar -tzf $FILENAME`
[ "$?" != 0 ] && { echo;echo "Invalid Addon Packet";echo;umount $MNT;exit; }
for FILES in $LIST; do
    FINDRC=`echo $(basename $FILES) | grep -c -i "rc."`
    [ "$FINDRC" = 1 ] && echo "$FILES" >> /tmp/execpak.tmp
    FINDRC=`echo $(basename $FILES) | grep -c -i "mod."`
    [ "$FINDRC" = 1 ] && echo "$FILES" >> /tmp/execpak.tmp

done
echo "Extracting Addon $(basename $1 .tgz).tgz"
tar -xzf $FILENAME -C / 2>/dev/null
umount $MNT 2>/dev/null
echo "Executing Addon..."
cat /tmp/execpak.tmp | while read FILE; do
      [ -f "/$FILE" ] && . /$FILE
done
rm -f /tmp/execpak.tmp 2>/dev/null
echo "done."
echo

Qualquer duvida abra um topico no off topics para eventual discussão sobre o assunto. :o!
Thiago
 


Voltar para BrazilFW 2.x

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron