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
---------------------------------------------------------------------

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

Responder a