2008/3/6, Paulo Roberto Bagatini <[EMAIL PROTECTED]>:
>
>
> Oi lista.
>
> Fiz um slackbuild pro kernel do linux, que atende bem as minhas
> necessidades. Ele faz tudo o que eu preciso, meu unico trabalho eh
> alterar alguns parametros quando aparece nova versao para download.
>
> Esse slackbuild adiciona ao sistema alguns scripts, que automatizam o
> download, configuracao, compilacao e instalacao dos modulos cdfs,
> svgalib_helper e os modulos do vmware.
>
> O doinst.sh que o slackbuild gera executa esses scripts e mais algumas
> acoes, quando da instalacao do pacote. Vou coloca-lo abaixo, para terem
> uma nocao. As linhas estao mal quebradas, mas nao vem ao caso.
>
> O problema eh que o doinst eh executados DUAS vezes, quando uso o
> comando upgradepkg. Uma quando ele faz a pre-instalacao, e outra quando
> instala realmente.
>
> Isso eh um bug ou uma caracteristica do upgradepkg? Fiz um script que
> varre uma lista de nomes de pacotes, que podem ou nao estar instalados,
> e, se estiverem instalados, podem ou nao estar desatualizados.
>
> Entao, uso o comando 'upgradepkg --install-new', para nao precisar
> primeiro testar se o pacote ja se encontra instalado para entao decidir
> se uso o comando installpkg ou upgradepkg.
>
> Mas, esse comportamento do upgradepkg me incomoda, ja que uma das
> operacoes do doinst eh descompactar o fonte do kernel, uma operacao meio
> lenta, ja que o arquivo eh pego por nfs.
>
> Uma solucao seria fazer o doinst detectar se esta sendo executado na
> instalacao ou na pre-instalacao, e entao executar ou nao suas acoes, mas
> isso me parece funcao do gerenciador de pacotes, nao do doinst.
>
> Alguem tem alguma informacao sobre isso? Se for um bug, posso tentar
> resolver, e mandar a solucao para o responsavel pelo pacote pkgtools.
>
> []'s
>
> -- BOF ----------------------------------------
> ( cd lib/modules/2.6.24.3.ark1 ; rm -rf source )
> ( cd lib/modules/2.6.24.3.ark1 ; ln -sf /usr/src/linux-2.6.24.3 source )
> ( cd lib/modules/2.6.24.3.ark1 ; rm -rf build )
> ( cd lib/modules/2.6.24.3.ark1 ; ln -sf /usr/src/linux-2.6.24.3 build )
>
> config()
> # usage: config $ROOT/<path_to>/<config_file>.new
> {
>    NEW="$1"
>    OLD="$(dirname $NEW)/$(basename $NEW .new)"
>    if [ ! -r $OLD ]
>              # if there's no config file by that name
>    then
>      mv $NEW $OLD # mv it over
>    elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]
>              # else, if new config is equal to old config
>    then
>      rm $NEW # toss the redundant copy
>    else
>      :       # otherwise, leave the new copy for the admin to consider
>    fi
> }
>
>
> if ! df | grep -q /proc
> then
>    mkdir -p /proc
>    mount -t proc proc /proc
>    UMOUNT=1
> fi
>
>
> # Constants in boot managers config files
>
> parts=$(sfdisk -l 2> /dev/null | grep ^/dev | sed "s/*//;s/  */\t/g")
>   boot=$(echo "$parts" | cut -f1 | awk -F[0-9] '{print$1}' | sort | uniq
> | head -1)
> lroot=$(cat $ROOT/etc/fstab | grep -E "[[:space:]]/[[:space:]]" | awk
> -F[[:space:]] '{print$1}')
> wroot=$(echo "$parts" | cut -f1,6 | grep c | sort | head -1 | cut -f1)
>    lin=$(echo "$lroot" | cut -d/ -f3)
>    win=$(echo "$wroot" | cut -d/ -f3)
>
> if [ ! "$wroot" ]
> then
>    wroot="_WROOT_"
>      win="_WIN_"
> fi
>
>
> sed_code="
> s|_BOOT_|$boot|
> s|_LROOT_|$lroot|
> s|_WROOT_|$wroot|
> s|_LIN_|$lin|
> s|_WIN_|$win|
> "
>
> for i in etc/lilo.conf boot/grub/menu.lst boot/grub/menu/advanced.lst
> do
>    cat $ROOT/$i.new | sed "$sed_code" >| $ROOT/$i.new.tmp
>    mv  $ROOT/$i.new.tmp $ROOT/$i.new
> done
>
>
> # Default kernel in lilo.conf
>
>        cf=$ROOT/etc/lilo.conf
>       er1="[[:space:]]*"
>       er2="default$er1=$er1"
>       def=$(cat $cf     | grep -E "^$er1$er2" | tr -d [:space:] | awk
> -F[=#] '{print$2}')
>   new_def=$(cat $cf.new | grep -E "^$er1$er2" | tr -d [:space:] | awk
> -F[=#] '{print$2}')
>
> sed_code="
> s|^$er1\($er2$new_def\b\)|#\1|
> s|^$er1#\($er1$er2$def\b\)| \1|
> "
>
> if [ "$new_def" != "$def" ]
> then
>    cat $cf.new | sed "$sed_code" >| $cf.new.tmp
>    mv  $cf.new.tmp $cf.new
> fi
>
>
> # TODO: Default kernel in menu.lst
>
>
> # Default mode for rc.bg
> rc=$ROOT/etc/rc.d/rc.bg
> [ ! -e $rc -o -x $rc ] && chmod +x $rc.new
> config $rc.new
>
>
> ignoreeof=0
> chroot $ROOT/ << EOS
>    KERNEL=2.6.24.3.ark1 mkprepare
>    KERNEL=2.6.24.3.ark1 mkcdfs -nodepmod
>    KERNEL=2.6.24.3.ark1 mksvgalib_helper -nodepmod
>    depmod -ae -F /boot/kernel/2.6/24.3.ark1/System.map -b / -r
> 2.6.24.3.ark1
> EOS
>
>
> if [ "" = 1 ]
> then
>    umount /proc
> fi
>
>
> unset i parts boot lroot wroot lin win sed_code UMOUNT
> -- EOF ----------------------------------------
>
> --
> ------------------------    __o    [EMAIL PROTECTED]  ----.-----------
>   [EMAIL PROTECTED] Roberto Bagatini   _`\<,    www.ceat.net/~arkanon  \
>    -=---=---==---=---=-   (_)/(_)   Phone +55 51 3748 7000  `--------
>   Lajeado - RS - Brasil  ---------  ICQ 34 789 30 - LinuxUser 102.514
> ---------------------------------------------------------------------
>
> >
>
###########################################################################################################

Eu acho que vc esta certo, a algo errado:
(extraido do man makepkg)
 The primary installation script(doinst.sh) is  executed  immediately
after  the  package  is  installed  with installpkg, pkgtool, or setup.

ou seja, so poderia ser executado uma vez.

E oq eu acho....

-- 
Adote um pinguim, saiba como! Me mande um e-mail demonstrando interesse!

http://www.slackware.com
http://img365.imageshack.us/img365/8483/snapshot3ak6.png
U.L. : 450347
Fnord

--~--~---------~--~----~------------~-------~--~----~
GUS-BR - Grupo de Usuários de Slackware Brasil
http://www.slackwarebrasil.org/
http://groups.google.com/group/slack-users-br
-~----------~----~----~----~------~----~------~--~---

Responder a