Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Guia] Actualizar gentoo 'en diferido'
View unanswered posts
View posts from last 24 hours

Goto page Previous  1, 2  
Reply to topic    Gentoo Forums Forum Index Spanish
View previous topic :: View next topic  
Author Message
Büldden
Tux's lil' helper
Tux's lil' helper


Joined: 13 Jan 2005
Posts: 97
Location: #gentoo-es

PostPosted: Sun Feb 06, 2005 4:02 pm    Post subject: Reply with quote

RadikalQ3, tu script promete, y cada vez más, ¿no has pensado en dedicarle una web donde poder seguir los avances de este?, solo es una idea... :wink:
Back to top
View user's profile Send private message
RadikalQ3
Apprentice
Apprentice


Joined: 26 Oct 2003
Posts: 172
Location: Planeta Tierra

PostPosted: Sun Feb 06, 2005 4:08 pm    Post subject: Reply with quote

¿Y que tiene de malo ésta? (salvo lo horrible que se vuelve la edicion de un post largo, y mas con el bbcode que falla en Mozilla...aunque ya he buscado una solucion para el problema... hasta que no recompilen la version CVS de estos foros no estará disponible...

Editado:
Está ya funcionando mi modificación de los foros :)
_________________
Radikal Trucomania


Last edited by RadikalQ3 on Fri Jun 17, 2005 8:59 am; edited 1 time in total
Back to top
View user's profile Send private message
Büldden
Tux's lil' helper
Tux's lil' helper


Joined: 13 Jan 2005
Posts: 97
Location: #gentoo-es

PostPosted: Sun Feb 06, 2005 4:25 pm    Post subject: Reply with quote

bueno solo era una idea, donde podrias tener una seccion en la posteases tus noticias, descargas del script en ficheros de diferentes versiones .... no se, he visto web de proyectos menos "utiles" que tu script, como dije antes, solo era una idea, si a ti te gusta llevarlo por el foro, adelante tampoco es mala idea y lo tienes en la web oficial de gentoo :wink:
Back to top
View user's profile Send private message
tomasecastro
n00b
n00b


Joined: 12 Jun 2005
Posts: 4

PostPosted: Sun Jun 12, 2005 1:49 am    Post subject: error al ejecutar el Script Reply with quote

Hola RadikalQ3, tengo un error al ejecutar tu script me dice que la sintaxis es invalida en la ultima linea del script, por favor si puedes verificalo, parece que necesitara un final de archivo o algo parecido, Gracias
Back to top
View user's profile Send private message
RadikalQ3
Apprentice
Apprentice


Joined: 26 Oct 2003
Posts: 172
Location: Planeta Tierra

PostPosted: Mon Jun 13, 2005 9:10 am    Post subject: Reply with quote

A ver... la última línea es:
Code:

rm -f ${TMP_NO_COMPILADOS}

Sólo es una linea para borrar un fichero temporal (la lista de los paquetes que no han sido compilados).
A mi no me da ningún error... no sé que decirte... ¿lo has grabado bien? :)
_________________
Radikal Trucomania
Back to top
View user's profile Send private message
jhigueros
n00b
n00b


Joined: 21 Dec 2004
Posts: 34
Location: Guatemala

PostPosted: Sun Jun 19, 2005 8:00 pm    Post subject: Reply with quote

Gracias por el How to buenisimo :mrgreen:
_________________
La Libertad Comienza desde Nosotros Mismos

Jorge Higueros
GNU/Linux user #369545
Integration GNU/Linux
www.softwarelibreguatemala.org
Guatemala C.A.
Back to top
View user's profile Send private message
tomasecastro
n00b
n00b


Joined: 12 Jun 2005
Posts: 4

PostPosted: Fri Jul 29, 2005 12:34 pm    Post subject: El mensaje de error que me da es /pupdate: line 406: syntax Reply with quote

No se trabajar muy bien con los script, pero copie textualmente el script en un archivo llamado /bin/pupdate, pero me sigue generenado problemas.
Back to top
View user's profile Send private message
RadikalQ3
Apprentice
Apprentice


Joined: 26 Oct 2003
Posts: 172
Location: Planeta Tierra

PostPosted: Fri Jul 29, 2005 12:37 pm    Post subject: Reply with quote

¿Que problemas?

Si te sirve de consuelo, ese script es ejecutado en 6 servidores que administro y nunca me ha dado el mas mínimo problema.
_________________
Radikal Trucomania
Back to top
View user's profile Send private message
capira
Tux's lil' helper
Tux's lil' helper


Joined: 02 May 2005
Posts: 147
Location: Spain

PostPosted: Sat Oct 14, 2006 8:48 am    Post subject: Reply with quote

Hola RadikalQ3.
Llevo usando tu script un tiempo y tengo que decir que es muy bueno y que me ha salvado de muchas horas de trabajo. Aprovecho el momento para darte la gracias.
Por necesidades del trabajo, le he hecho algunas modificaciones que paso a comentarte por si quieres inclurlo en tu script y en el hilo.
  • Posibilidad de hacer 'emerge-webrsync' en lugar de 'emerge --sync'. Donde trabajo sólo está abierto el puerto 80 y sólo podía hacer webrsync
Code:
...
#Hacer emerge-webrsync y bajar fuentes de golpe al principio
HACER_RSYNC='si'
...
#Actualizamos arbol del portage:
echo " ${VE}*${NO} Sinconizando portage (${AZ}emerge --sync${NO})"
if [ ${HACER_RSYNC} = 'no' ]
then emerge --sync
else emerge-webrsync
fi
...
  • He ampliado el nombre del paquete para incluir la categoría. Algunos paquetes son ambiguos porque tienen el mismo nombre que otro perteneciente a una categoría diferente (como últimamente están cambiando los USE_FLAGS en algunos paquetes, he incluido la opción '-N' pero puedes eliminarla)
Code:
...
#emerge -uDp world | grep ebuild | cut -f 2- -d "/" | cut -f 1 -d " " > ${TMP_NUEVOS_PAKETES}
emerge -NuDp world > ${TMP_EMERGE}
cat ${TMP_EMERGE} | grep ebuild | cut -f 2- -d "]" | cut -f 2 -d " " > ${TMP_NUEVOS_PAKETES}
...
  • Al cambiar el punto anterior, he cambiado también la forma de comprobar los paquetes compilados. Este cambio lo he hecho en diferentes partes del código porque se repite
Code:
...
#     if [ ! -f ${PKGDIR}/All/$i.tbz2 ]
      if [ ! -f ${PKGDIR}/$i.tbz2 ]
...
  • He ampliado la descripción de los paquetes NO compilados, incluyendo que paquetes son necesarios que estén instalados para que estos se compilen
Code:
...
echo "  - $i" >> ${TMP_NO_COMPILADOS}
PARTE_DCHA=` echo $i | cut -f 2 -d "/" `
for j in ` emerge -vp =$i | grep ebuild | cut -f 2- -d "]" | cut -f 2 -d " " | grep -v "${PARTE_DCHA}" `
do
   if [ -f ${PKGDIR}/$j.tbz2 ]
   then echo "     depende de: [*] $j" >> ${TMP_NO_COMPILADOS}
   else echo "     depende de: [ ] $j" >> ${TMP_NO_COMPILADOS}
   fi
done
...
Lo siguiente que quiero incluir en el script sería poder detectar cuando hay otros conflictos: paquetes MASKED y paquetes BLOCKED, de manera que se pueda avisar. Ahora mismo da un error y envia un reporte vacío.
Saludos.
_________________
http://www.nosoftwarepatents.com/
Back to top
View user's profile Send private message
ekz
l33t
l33t


Joined: 21 Jun 2006
Posts: 994
Location: Temuco - Chile

PostPosted: Sat Oct 14, 2006 12:30 pm    Post subject: Reply with quote

Capira, tambien puedes probar emerge-delta-webrsync, que solo añade los cambios realizados por dia al arbol de portage bajando un pequeño fichero.
_________________
Mi tumblelog
Back to top
View user's profile Send private message
capira
Tux's lil' helper
Tux's lil' helper


Joined: 02 May 2005
Posts: 147
Location: Spain

PostPosted: Thu Dec 07, 2006 8:02 am    Post subject: Reply with quote

Hola a todos.
He revisado el script he intentado mejorarlo de distintas maneras (algunas ya las publiqué en este mismo hilo). Me he puesto en contacto con RadikalQ3 y me ha comentado que él ya no esta involucrado en Gentoo ( :cry: ) y que podía cambiar el script a mi criterio.
Ahora mismo estoy usando una versión del script mejorada que os pongo a continuación. He respetado el trabajo anterior en la medida de lo posible y he comentado algunas líneas que ahora mismo no se utilizan.
Code:
#! /bin/sh

# ----------------------------------------------------------------------------
# pupdate
# Script para actualizar el portage mediante un evento desatendido
# Se trata de realizar el quivalente a:
#   emerge sync ; emerge -NvuDp world
# y tras esto, compilar las novedades pero SIN INSTALARLAS, es decir,
# se crean los paquetes compilados en $PKGDIR para tenerlos ahí
# ya compilados, y, a la hora de actualizar el sitema, poder hacerlo
# mediante un:
#   emerge -uDk world
# en un periodo breve de tiempo, mientras se supervisa la operacion,
# utilizando los paquetes binarios creados de antemano por el script.
#
#El script puede enviar por email un reporte con el resultado
#y tambien tiene en cuenta a los usuarios del MLDonkey
#frenando su consumo de ancho de banda mientras dure la actualizacion.
#
#               Por RadikalQ3 para todos los colegas de Gentoo
#
# Version 3.3-r1 alfa 04/12/2006 capira
# - Mejora del algoritmo para la gestión de los paquetes que hay
#   que reconstruir
#
# Version 3.3 alfa 25/11/2006 capira
# - Detección de paquetes que hay que reconstruir pero que fallan
#   porque ya hay un paquete binario contruido previamente
#
# Version 3.2 alfa 19/10/2006 capira
# - Añadido detección de bloqueos (pendiente de probar y mejorar)
#
# Version 3.1 alfa 11/10/2006 capira
# - Añadido una variable, HACER_RSYNC, para hacer 'emerge --sync' o
#   'emerge-webrsync'
# - Modificada la llamada para obtener la lista de paquetes a compilar,
#   añadiendo la opcion 'N' (comprobación de USE_FLAGS nuevas)
# - Ampliado el nombre del paquete: <categoría>/<paquete>-<version>
#
# Version 3.0      30/01/2005
# - Eliminado el '--newuse' incorporado en la version 2.0
# - Añadidos colores a la salida del programa
# - Añadida opcion para que no realice el emerge sync
# - Añadida opcion para ver los paquetes que faltan por compilar
# - Añadida opcion para ver los paquetes ya compilados listos para instalar
# - Añadida purga del directorio temporal de compilaciones del portage
# - Añadida opcion para que no realice la purga
# ----------------------------------------------------------------------------


#**************************************************************
#      Configuración inicial:
#******************************

#Fichero temporal para crear el informe de la actualizacion (se borrará al terminar):
TMP_REPORT='/tmp/pupdate-report'

#Fichero temporal conteniendo la lista de los paquetes nuevos a actualizar:
TMP_NUEVOS_PAKETES='/tmp/pupdate-nuevos'

#Fichero temporal conteniendo la lista de los paquetes recompilados:
TMP_NUEVOS_REBUILD='/tmp/pupdate-rebuild'

#Fichero temporal para albergar la lista de paquetes ya compilados
TMP_COMPILADOS='/tmp/pupdate-c'

#Fichero temporal para albergar la lista de paquetes ya compilados
TMP_EMERGE='/tmp/pupdate-emerge'

#Fichero temporal para albergar la lista de paquetes sin compilar
TMP_NO_COMPILADOS='/tmp/pupdate-sc'

#Fichero para no borrar paquetes que van a ser recompilados, pero
#que ya han sido recompilados previamente
PUPDATE_REBUILD='/var/log/pupdate/emerge_rebuild'

#Hacer emerge sync y bajar fuentes de golpe al principio:
HACER_SYNC='si'

#Hacer emerge-webrsync y bajar fuentes de golpe al principio
HACER_RSYNC='no'

#Hacer purga final de temporales de compilacion:
HACER_PURGA='si'

#Si queremos frenar el MLDonkey antes de sincronizar el portage
#  Posibles valores: si ó no
MLDONKEY_SLOW='no'

#Si queremos que nos envie un email con un reporte de lo realizado
#  Posibles valores: si ó no
EMAIL_REPORT='si'
#Dirección de email a la que enviar el reporte
#NOTA: Debe funcionar el comando 'mail' en tu sistema (emerge mailx te ayudara)
EMAIL_DIR=''

#Hora límite para terminar la compilacion
#Despues de esta hora, el script deja de compilar hasta la próxima ejecución
#Usar formato de 24 horas, por ejemplo, 21:30 para las nueve y media de la noche
#Si no se quiere limite, poner 99:99
HORA_LIMITE='99:99'

#Una vez configurado el script, poner CONFIGURADO='si'
CONFIGURADO='no'
#**************<Fin de la configuracion inicial>******************



#Datos de esta versión del script
PROG="pupdate"
TAG="Compila, si, pero no me molestes..."
DESC="Portage Update. Para compilar Gentoo en diferido. - RadikalQ3 - "
VERSION="3.3-r1 alfa"

#Defición de colores
NO=$'\x1b[0;0m'
NE=$'\x1b[0;01m'
RO=$'\x1b[31;01m'
VE=$'\x1b[00;32m'
AZ=$'\x1b[34;01m'

#**************************************************************
#      Funciones del script:
#******************************

function colorea_ayuda() {
#Colorea el texto de ayuda del script
   sed -r "
   s/^[^[:space:]].*:/$VE\\0$NO/
   s/[[:space:]]-[][[:alpha:]?-]+/${AZ}\\0${NO}/g
   s/\\(default\\)/${BR}\\0${NO}/
   "
}

function muestra_ayuda {
#Muestra la ayuda del script
   cat <<END | colorea_ayuda

${NE}${PROG} ${NO}v. ${RO}${VERSION} ${AZ}"${TAG}"
 ${RO}${DESC}
${NO}
Utilización: ${PROG} [OPCION]

Actualiza el árbol de paquetes de Portage, creando paquetes compilados
de manera desatendida, que después podrán ser instalados mediante:
      ${AZ}portage -k${NO}
El script por defecto efectua todas las operaciones (si estan activadas
dentro de la configuracion del propio script), que son

- emerge sync
- emerge -uDf world
- Compila todo creando paketes binarios pero sin instalarlos
- Crea un reporte y lo envia por email
- Purga los directorios temporales de compilacion de portage

a no ser que usemos algunas de las siguientes opciones:

Opciones disponibles:

  -h, --help         Muestra esta ayuda
  -s, --nosync         No hacer el emerge sync
  -p, --nopurge         No hacer la purga final
  -c, --vercompilados      Ver los paquetes compilados listos para instalar
  -n, --vernocompilados    Ver los paquetes que faltan por compilar

Configuración:

El script ha de configurarse antes de ser utilizado, editando las variables situadas
en su interior.

Una vez configurado, debes poner CONFIGURADO='si' (dentro del script) para comenzar
a utilizarlo sin ver este texto de ayuda.

Ejemplos de uso:

- Saber lo que falta por compilar (sin hacer emerge sync) > pupdate -sn
- Saber lo que ya está compilado  (sin hacer emerge sync) > pupdate -sc
- Operación habitual completa                   > pupdate

END
}

function baja_todo {
#Frena el edonkey, hace emerge sync, baja los paquetes necesarios
#con emerge -uDf world y vuelve a acelerar el mldonkey

   #Si utilizamos MLDonkey, lo ponemos a 'Slow' para que no chupe todo el ancho de banda
   if [ ${MLDONKEY_SLOW} = 'si' ]
   then echo " ${VE}*${NO} Reduciendo el consumo de ancho de banda de MLDonkey"; /etc/init.d/mldonkey slow
   fi

   #Actualizamos arbol del portage:
   echo " ${VE}*${NO} Sinconizando portage (${AZ}emerge --sync${NO})"
   if [ ${HACER_RSYNC} = 'no' ]
   then emerge --sync
   else emerge-webrsync
   fi


   #Hacemos Download de los paquetes necesarios:
   echo " ${VE}*${NO} Descargando los paquetes necesarios (${AZ}emerge -uDf world${NO})"
   emerge -uDf world

   #Aceleramos el MLDonkey
   if [ ${MLDONKEY_SLOW} = 'si' ]
   then echo " ${VE}*${NO} Acelerando MLDonkey"; /etc/init.d/mldonkey fast
   fi
}

function purga_rebuild {
   echo " ${VE}*${NO} Limpiando todos los paquetes que hay que recompilar:"
   touch ${PUPDATE_REBUILD}
   for i in ` cat ${TMP_EMERGE} | grep ' R ' | cut -f 2- -d "]" | cut -f 2 -d " " ` ;
   do
#      TMP_I=` grep $i ${TMP_EMERGE} `
      if [ ` grep ${TMP_EMERGE} ${PUPDATE_REBUILD} | wc -l ` = '0' ]
      then
         if [ -f ${PKGDIR}/$i.tbz2 ]
#            then echo "Limpiando el paquete ${TMP_I}"
         then
            echo "    - Borramos el paquete ${AZ}${PKGDIR}/$i.tbz2${NO}"
            rm -f ${PKGDIR}/$i.tbz2
            rm -f ${PKGDIR}/All/$i.tbz2
         fi
      fi
   done
}

function compila_todo {
#Compila los paquetes que faltan por compilar.
#Deja de compilar si se llega a la hora límite (configurable)

   echo " ${VE}*${NO} Compilando los paquetes que falten por compilar:"
   #Compilamos los que no estén ya compilados:
   for i in ` cat ${TMP_NUEVOS_PAKETES} ` ;
   do
#     if [ ! -f ${PKGDIR}/All/$i.tbz2 ]
      if [ ! -f ${PKGDIR}/$i.tbz2 ]
      then
         if [ $(date +"%H:%M") \< $HORA_LIMITE ]
         then
            echo "   Compilando: $i"
            /usr/bin/nice -n +19 /usr/bin/emerge -B =$i
            TMP_I=` grep $i ${TMP_EMERGE} `
            if [ ` echo ${TMP_I} | grep ' R ' | wc -l ` = 1 ]
            then
               echo $i >> ${TMP_NUEVOS_REBUILD}
               echo ${TMP_I} >> ${PUPDATE_REBUILD}
            fi
         else echo "   NO Compilando, por Hora Límite: $i"
         fi
      fi
   done
}

function crea_reporte {
#Crea un reporte que muestra los paquetes compilados y no instalados
#y los paquetes no compilados
   echo " ${VE}*${NO} Creando reporte"

   rm -f ${TMP_COMPILADOS}

   #Creamos un reporte con lo realizado:
   echo " " > ${TMP_REPORT}
   echo "     _______________________________________________________" >> ${TMP_REPORT}
   echo "          Reporte de actualización del equipo: "$HOSTNAME >> ${TMP_REPORT}
   echo "     _______________________________________________________" >> ${TMP_REPORT}
   if [ ! ${TMP_BLOCKED} = '0' ]
   then
      echo " " >> ${TMP_REPORT}
      echo " * ATENCION: Hay paquetes que se bloquean entre sí" >> ${TMP_REPORT}
      echo "      - ${TMP_BLOCKED_1}" >> ${TMP_REPORT}
      echo "      - ${TMP_BLOCKED_2}" >> ${TMP_REPORT}
   fi

   if [ -f ${TMP_NUEVOS_REBUILD} ]
   then
      echo " " >> ${TMP_REPORT}
      echo " * Paquetes ya instalados pero que han sido recompilados (emerge -Dk) :" >> ${TMP_REPORT}
      echo " " >> ${TMP_REPORT}

      for i in ` cat ${TMP_NUEVOS_REBUILD} ` ;
      do
#        if [ -f ${PKGDIR}/All/$i.tbz2 ]
         if [ -f ${PKGDIR}/$i.tbz2 ]
         then echo "      - $i" >> ${TMP_REPORT}
         fi
      done

      echo " " >> ${TMP_REPORT}
   fi
   echo " " >> ${TMP_REPORT}
   echo " * Nuevos paquetes YA COMPILADOS y listos para instalar con emerge -uDk :" >> ${TMP_REPORT}
   echo " " >> ${TMP_REPORT}

   for i in ` cat ${TMP_NUEVOS_PAKETES} ` ;
   do
#     if [ -f ${PKGDIR}/All/$i.tbz2 ]
      if [ -f ${PKGDIR}/$i.tbz2 ]
      then
         if [ ` grep $i ${TMP_NUEVOS_REBUILD} | wc -l ` = 0 ]
         then
            echo "       - $i" >> ${TMP_COMPILADOS}
         fi
      fi
   done

   if [ -f ${TMP_COMPILADOS} ]
   then cat ${TMP_COMPILADOS} >> ${TMP_REPORT}
   else echo "    - No hay ningún paquete ya compilado pendiente de instalar" >> ${TMP_REPORT}
   fi

   rm -f ${TMP_COMPILADOS}

   echo " " >> ${TMP_REPORT}
   echo " " >> ${TMP_REPORT}
   echo " * Nuevos paquetes que NO HAN SIDO COMPILADOS. (Se recomienda compilación manual) :" >> ${TMP_REPORT}
   echo " " >> ${TMP_REPORT}

   for i in ` cat ${TMP_NUEVOS_PAKETES} ` ;
   do
#     if [ ! -f ${PKGDIR}/All/$i.tbz2 ]
      if [ ! -f ${PKGDIR}/$i.tbz2 ]
      then
         echo "      - $i" >> ${TMP_NO_COMPILADOS}
         PARTE_DCHA=` echo $i | cut -f 2 -d "/" `
         for j in ` emerge -vp =$i | grep ebuild | cut -f 2- -d "]" | cut -f 2 -d " " | grep -v "${PARTE_DCHA}" `
         do
            if [ -f ${PKGDIR}/$j.tbz2 ]
            then echo "         depende de: [*] $j" >> ${TMP_NO_COMPILADOS}
            else echo "         depende de: [ ] $j" >> ${TMP_NO_COMPILADOS}
            fi
         done
      fi
   done

   if [ -f ${TMP_NO_COMPILADOS} ]
   then cat ${TMP_NO_COMPILADOS} >> ${TMP_REPORT}
   else echo "    - No hay ningún paquete nuevo sin compilar" >> ${TMP_REPORT}
   fi

   echo " " >> ${TMP_REPORT}

   cat ${TMP_REPORT}
}

function purga_compilaciones {
#Si el emerge no está siendo ejecutado, borra el directorio temporal
#de compilaciones usado por portage, definido en el fichero /etc/make.conf
#en la variable PORTAGE_TMPDIR
   echo " ${VE}*${NO} Borrando directorio temporal compilación emerge si este no se esta ejecutando"

   ps -a | grep emerge > /dev/null
   if [ $? -eq 1 ]; then
   rm -rf ${PORTAGE_TMPDIR}/*
   fi
}


#**************************************************************
#      Entrada del script:
#******************************

#Hasta que sea configurado el script, mostramos la ayuda y salimos
#Asi, por lo menos te lees las opciones una vez...
if [ $CONFIGURADO != 'si' ]
then
   muestra_ayuda;
   echo "${RO}NOTA:${NO} Debes poner CONFIGURADO='si' en el script para que el script funcione...";
   exit 0
fi

#Actualizamos las variables de directorios del portage:
# En concreto, nos interesa PKGDIR y PORTAGE_TMPDIR
source /etc/make.conf

#Si no está definida la variable PKGDIR, no continuamos
if [ ${PKGDIR}NORL = 'NORL' ]
then
  echo "${RO}ERROR:${NO} Debes setear la variable PKDGIR en el fichero /etc/make.conf"
  echo "       Su valor por defecto es /usr/portage/packages"
  echo "       Es decir, añade en tu /etc/make.conf una linea con: PKDGIR=/usr/portage/packages"
  exit 1
fi

#Si no está definida la variable PORTAGE_TMPDIR, no continuamos
if [ ${PORTAGE_TMPDIR}NORL = 'NORL' ]
then
  echo "${RO}ERROR:${NO} Debes setear la variable PORTAGE_TMPDIR en el fichero /etc/make.conf"
  echo "       Su valor por defecto es /var/tmp/portage"
  echo "       Es decir, añade en tu /etc/make.conf una linea con: PORTAGE_TMPDIR=/var/tmp/portage"
  exit 1
fi


#Por defecto, no queremos ver las listas, queremos compilar...
VER_COMPILADOS="no"
VER_NO_COMPILADOS="no"

#Capturamos las opciones de linea de comandos:
while getopts ":hspcn-" OPT; do
   case $OPT in
      h ) muestra_ayuda; exit 0;;
      s ) HACER_SYNC='no';;
      p ) HACER_PURGA='no';;
      c ) VER_COMPILADOS='si';;
      n ) VER_NO_COMPILADOS='si';;
      - ) break;;
   esac
done

for ((i=$OPTIND; i<=$#; ++i)); do
   case ${!i} in
      --help )       muestra_ayuda; exit 0;;
      --nosync )       HACER_SYNC='no';;
      --nopurge )       HACER_PURGA='no';;
      --vercompilados )    VER_COMPILADOS='si';;
      --vernocompilados )    VER_NO_COMPILADOS='si';;
      * ) OPTIND=$i; break;;
   esac
done


echo "${NE}${PROG} ${NO}v. ${RO}${VERSION}${NO}"
echo "Actualización automática de paquetes del equipo ${NE}$HOSTNAME${NO}"
echo " "

#Emerge sync y bajar los fuentes (frenando el mldonkey)
if [ ${HACER_SYNC} = 'si' ]
then
  baja_todo
fi


#Creamos la lista de los nuevos paquetes a actualizar:
echo " ${VE}*${NO} Creando lista de paquetes a actualizar (${AZ}emerge -uDp world${NO})"
#emerge -uDp world | grep ebuild | cut -f 2- -d "/" | cut -f 1 -d " " > ${TMP_NUEVOS_PAKETES}
emerge -vNuDp world > ${TMP_EMERGE}

#Vemos si hay paquetes que están enmascarados
TMP_MASKED=`cat ${TMP_EMERGE} | grep 'have been masked' | wc -l `
TMP_BLOCKED=`cat ${TMP_EMERGE} | grep '\[blocks B' | wc -l `

if [ ! ${TMP_BLOCKED} = '0' ]
then
   TMP_BLOCKED_1=`cat ${TMP_EMERGE} | grep 'blocking' | cut -f 2- -d "]" | cut -f 2 -d " "`
   TMP_BLOCKED_2=`cat ${TMP_EMERGE} | grep 'blocking' | cut -f 2- -d "]" | cut -f 5 -d " " | cut -f 1 -d ")"`
fi


#Generamos la lista de paquetes
cat ${TMP_EMERGE} | grep ebuild | cut -f 2- -d "]" | cut -f 2 -d " " > ${TMP_NUEVOS_PAKETES}
if [ -f ${TMP_NUEVOS_REBUILD} ]
then
   rm -f ${TMP_NUEVOS_REBUILD}
fi
touch ${TMP_NUEVOS_REBUILD}


#Si queremos ver la lista de programas compilados:
if [ ${VER_COMPILADOS} = 'si' ]; then
   rm -f ${TMP_COMPILADOS}

   for i in ` cat ${TMP_NUEVOS_PAKETES} ` ;
   do
#     if [ -f ${PKGDIR}/All/$i.tbz2 ]
      if [ -f ${PKGDIR}/$i.tbz2 ]
      then echo "   - $i" >> ${TMP_COMPILADOS}
      fi
   done

   echo " "
   echo "   ${AZ}Nuevos paquetes YA COMPILADOS y listos para instalar con ${VE}emerge -uDk ${NO}:"
   echo " "

   if [ -f ${TMP_COMPILADOS} ]
   then cat ${TMP_COMPILADOS}
   else echo "    - No hay ningún paquete ya compilado pendiente de instalar"
   fi
fi

#Si queremos ver la lista de programas NO compilados:
if [ ${VER_NO_COMPILADOS} = 'si' ]
then
   rm -f ${TMP_NO_COMPILADOS}

   for i in ` cat ${TMP_NUEVOS_PAKETES} ` ;
   do
#     if [ ! -f ${PKGDIR}/All/$i.tbz2 ]
      if [ ! -f ${PKGDIR}/$i.tbz2 ]
      then echo "   - $i" >> ${TMP_NO_COMPILADOS}
      fi
   done

   echo " "
   echo "   ${AZ}Nuevos paquetes NO COMPILADOS aún:${NO}"
   echo " "

   if [ -f ${TMP_NO_COMPILADOS} ]
   then cat ${TMP_NO_COMPILADOS}
   else echo "    - No hay ningún paquete nuevo sin compilar"
   fi
fi

#Compilamos los paquetes que faltan por compilar, sólo si
#no hemos pedido alguna de las listas de paquetes
if [ ! ${VER_COMPILADOS} = 'si' ] && [ ! ${VER_NO_COMPILADOS} = 'si' ]; then
   purga_rebuild
   compila_todo
   crea_reporte

   #Enviamos el reporte por email
   if [ ${EMAIL_REPORT} = 'si' ]; then
      echo " ${VE}*${NO} Enviando reporte por email a: ${EMAIL_DIR}";
      cat ${TMP_REPORT} | mail -s "Informe de Actualizacion de portage del equipo: ${HOSTNAME}" ${EMAIL_DIR}
   fi

   #Purgamos temporales de compilacion del portage:
   if [ ${HACER_PURGA} = 'si' ]; then
      purga_compilaciones
   fi

   echo " ${VE}*${NO} Actualizacion completada"
   echo " "
fi

#Borramos ficheros temporales:
rm -f ${TMP_REPORT}
rm -f ${TMP_NUEVOS_PAKETES}
rm -f ${TMP_NUEVOS_REBUILD}
rm -f ${TMP_COMPILADOS}
rm -f ${TMP_NO_COMPILADOS}
rm -f ${TMP_EMERGE}
Espero vuestras sugerencias.
Saludos.
_________________
http://www.nosoftwarepatents.com/
Back to top
View user's profile Send private message
LinuxBlues
l33t
l33t


Joined: 26 Mar 2005
Posts: 892

PostPosted: Thu Dec 07, 2006 7:58 pm    Post subject: Reply with quote

capira wrote:
Me he puesto en contacto con RadikalQ3 y me ha comentado que él ya no esta involucrado en Gentoo ( :cry: ) y que podía cambiar el script a mi criterio.

Tal y como comenta: vive en el planeta tierra. :lol:

Te recomiendo ututo.
Back to top
View user's profile Send private message
pacho2
Developer
Developer


Joined: 04 Mar 2005
Posts: 2599
Location: Oviedo, Spain

PostPosted: Thu Dec 07, 2006 8:09 pm    Post subject: Reply with quote

Ah, otra distribución basada en gentoo 8) , se ve que gentoo es una buena base ;-)
Back to top
View user's profile Send private message
Palmax Maverick
Guru
Guru


Joined: 14 Oct 2004
Posts: 339

PostPosted: Sun Feb 08, 2009 2:50 pm    Post subject: ¿Y en 2009 no existe algo ya hecho en un paquete? Reply with quote

Buenos días

En primer lugar, he regresado jejeje. Ahora en serio, la verdad es que me conecté en el foro porque estaba buscando algo similar a esto. Yo me hice un update.sh y luego puse que el anacron (http://anacron.sourceforge.net/) lo lanzara 5 minutos después de iniciar y/o diariamente.

El problema es que lo perdí y me dije alguien habrá hecho un paquete que haga esto.

La pregunta es ¿existe? Lo más parecido que he encontrado ha sido este script, pero como tiene mucho tiempo siempre da un poco de cosa probarlo, aunque bueno parece que hace lo que debe hacer. La verdad es que mi niveles de bash scriptting no son tan avanzados para entenderlo jejeje.

De todas formas, creo que siempre es mejor utilizar anacron que cualquier otro cron, ya que la ventaja de que se te pudiera caer la máquina o simplemente que la apagues y luego la enciendas es enorme.

Un saludo
Palmax
Back to top
View user's profile Send private message
capira
Tux's lil' helper
Tux's lil' helper


Joined: 02 May 2005
Posts: 147
Location: Spain

PostPosted: Mon Feb 09, 2009 10:32 am    Post subject: Reply with quote

Buenas.

Yo sigo utilizando el script que publiqué en este mismo foro sin problemas.

Saludos
_________________
http://www.nosoftwarepatents.com/
Back to top
View user's profile Send private message
Palmax Maverick
Guru
Guru


Joined: 14 Oct 2004
Posts: 339

PostPosted: Tue Feb 10, 2009 10:12 pm    Post subject: revdep-rebuild Reply with quote

¿No hay que hacer un revdep-rebuild por si acaso?
Back to top
View user's profile Send private message
capira
Tux's lil' helper
Tux's lil' helper


Joined: 02 May 2005
Posts: 147
Location: Spain

PostPosted: Wed Feb 11, 2009 8:07 am    Post subject: Reply with quote

Pues la verdad es que sí, quizás debería, pero como realmente no instala, sino que prepara los paquetes para su instalación puede que no tenga el efecto deseado. Se puede modificar para que haga una instalación desasistida si no hay conflictos y que luego haga revdep-rebuild ... Voy a mirar como sería y te cuento
_________________
http://www.nosoftwarepatents.com/
Back to top
View user's profile Send private message
Palmax Maverick
Guru
Guru


Joined: 14 Oct 2004
Posts: 339

PostPosted: Sun Feb 22, 2009 2:37 pm    Post subject: ¿capira? Reply with quote

¿Ha habido suerte?
Back to top
View user's profile Send private message
cpasoft
Tux's lil' helper
Tux's lil' helper


Joined: 16 May 2004
Posts: 89

PostPosted: Mon Mar 09, 2009 5:38 pm    Post subject: Reply with quote

Hola a todos...

Este script es muy interesante, gracias a los que os lo habéis currado...

Sin embargo hay un pequeño "gazapo"...

En este trozito de código:
Code:

#Si no está definida la variable PKGDIR, no continuamos
if [ ${PKGDIR}NORL = 'NORL' ]
then
  echo "${RO}ERROR:${NO} Debes setear la variable PKDGIR en el fichero /etc/make.conf"
  echo "       Su valor por defecto es /usr/portage/packages"
  echo "       Es decir, añade en tu /etc/make.conf una linea con: PKDGIR=/usr/portage/packages"
  exit 1
fi


... donde pone PKDGIR, debería poner PKGDIR... Es una chorraica, pero ahí está... ;)
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Spanish All times are GMT
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum