que el apreciar y disfrutar el cuerpo desnudo de una mujer...

Instalar una serie de paquetes en pkgsrc

2008-07-19 11:53:34-05

Hacks

Introducción


Este script lo hice debido a que a veces quería instalar todos los paquetes que conforman una serie de ellos y eran demasiados para hacerlos manualmente.

Por ejemplo, si buscamos todos los paquetes del reproductor de audio “XMMS”:

[#] find /usr/pkgsrc -type d -name 'xmms*'
/usr/pkgsrc/audio/xmms
/usr/pkgsrc/audio/xmms-alarm
/usr/pkgsrc/audio/xmms-arts
/usr/pkgsrc/audio/xmms-bezier
/usr/pkgsrc/audio/xmms-blursk
/usr/pkgsrc/audio/xmms-bump-scope
/usr/pkgsrc/audio/xmms-crossfade
/usr/pkgsrc/audio/xmms-dflowers
/usr/pkgsrc/audio/xmms-dscope
/usr/pkgsrc/audio/xmms-dspectogram
/usr/pkgsrc/audio/xmms-dspectral
/usr/pkgsrc/audio/xmms-esound
/usr/pkgsrc/audio/xmms-faad
/usr/pkgsrc/audio/xmms-flac
/usr/pkgsrc/audio/xmms-fmradio
/usr/pkgsrc/audio/xmms-funtimedancer
/usr/pkgsrc/audio/xmms-gdancer
/usr/pkgsrc/audio/xmms-infinity
/usr/pkgsrc/audio/xmms-iris
/usr/pkgsrc/audio/xmms-jakdaw
/usr/pkgsrc/audio/xmms-jess
/usr/pkgsrc/audio/xmms-liveice
/usr/pkgsrc/audio/xmms-mac
/usr/pkgsrc/audio/xmms-mad
/usr/pkgsrc/audio/xmms-madspin
/usr/pkgsrc/audio/xmms-meta-input
/usr/pkgsrc/audio/xmms-meta-timidity
/usr/pkgsrc/audio/xmms-modplug
/usr/pkgsrc/audio/xmms-musepack
/usr/pkgsrc/audio/xmms-neato
/usr/pkgsrc/audio/xmms-nebulus
/usr/pkgsrc/audio/xmms-osx
/usr/pkgsrc/audio/xmms-paranormal
/usr/pkgsrc/audio/xmms-sid
/usr/pkgsrc/audio/xmms-synaesthesia
/usr/pkgsrc/audio/xmms-tv-scope
/usr/pkgsrc/audio/xmms-vismsa
/usr/pkgsrc/audio/xmms-wma
/usr/pkgsrc/audio/xmmsctrl
/usr/pkgsrc/x11/xmms-osd

Veremos que existen 40 paquetes disponibles.

Explicación del script


Para ejecutar el script, es necesario darle una mini expresión regular del nombre del paquete, en el caso de la serie de paquetes que conforman al XMMS la palabra en común de todos ellos es la palabra “xmms”.

[#] ./instalar_serie xmms

Cabe hacer mención que la expresión regular *DEBE DE ESTAR AL INICIO DEL NOMBRE DEL PAQUETE Y NO EN MEDIO O AL FINAL* ya que el script fallará en la búsqueda.

Por ejemplo, los siguientes paquetes tienen algo que ver con el XMMS pero ellos forman parte de otra serie de paquetes, por lo tanto el script no los encontrará ni mucho menos los instalará:

/usr/pkgsrc/audio/gkrellm-xmms
/usr/pkgsrc/audio/libvisual-xmms
/usr/pkgsrc/audio/py-xmms

Debes de tomar esto encuenta a la hora de querer instalar una serie de paquetes.

Lo primero hace el script es crear un archivo de registro log con el resultado de la búsqueda en el directorio “/tmp” del sistema. En este caso “/tmp/xmms-packages.log”. La ventaja de esto es que al apagar o reiniciar la máquina el sistema automáticamente los borra y de esta forma no se acumulan los registros. La desventaja es que se crea una serie de archivos con permisos del root para que alguien pueda hacer de las suyas en el sistema. De cualquier forma, recuerda que la seguridad es sólo un estado mental.

Despues, el script lee una por una de las líneas de este archivo, obtiene la ruta de acceso, aisla el nombre del paquete para poder comprobar si el paquete ya ha sido instalada anteriormente por otro paquete como una depedencia de el.

Si el nombre del paquete no se encuentra en la base de datos de los paquetes instalados, se procede con su instalación.

De lo contrario se omite y continua con la otra línea.

Cada uno de los procesos de descarga, compilación, instalación y limpieza del proceso, quedan registrados en un log en el directorio “/tmp”.

Por ejemplo, si se instalar el paquete “/usr/pkgsrc/audio/xmms-alarm” se crea el log del proceso “/tmp/xmms-alarm.log”, de esta forma podrás estudiar la razón por la cual haya fallado el proceso en el caso remoto de un fallo.

El script no valida si el proceso falló o no. Haya fallado o haya salido todo bien la instalación de un determinado paquete, el script se sigue a la siguiente línea.

Es responsabilidad del administrador del sistema revisar cada uno de los logs por si hubo algún fallo.

Aunque esta tarea se puede resumir si al final de cada uno de los logs encuentras líneas parecidas a las siguientes:

...
===> Cleaning for libXi-1.1.3nb1

===> Cleaning for libXinerama-1.0.3
===> Cleaning for libXrandr-1.2.2
===> Cleaning for gtk2+-2.12.10
===> Cleaning for inputproto-1.4.3
===> Cleaning for kbproto-1.0.3
===> Cleaning for randrproto-1.2.1nb1
===> Cleaning for renderproto-0.9.3nb1
===> Cleaning for xextproto-7.0.3
===> Cleaning for xineramaproto-1.1.2
===> Cleaning for xproto-7.0.13
===> Dist cleaning for rhythmbox-0.10.1
...

O tambien volviendo a ejecutar el script y checas cual de todos ellos no se pudo instalar ya que no aparecerá en la base de datos de los paquetes y el script intentará instalarlo de nuevo.

Script


El script es el siguiente:

#!/bin/ksh

#-------------------------------------------------------------------------------
#
#  instalar_serie.sh: Instala todos los paquetes de su regexp.
#
#  Copyright (c) 2008, asarch.
#
#  All rights reserved.
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions
#  are met:
#
#    1. Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#    2. Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
#    3. Neither the name of copyright holders nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
#  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
#  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS
#  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#  POSSIBILITY OF SUCH DAMAGE.
#
#-------------------------------------------------------------------------------

#-----------------------------------------------------------
#  Validacion del argumento del script
#-----------------------------------------------------------
#
if (( $# == 0 )); then
    echo Forma de uso: $0 expresion_regular
    exit 1
fi

#-----------------------------------------------------------
#  Inicializacion de variables
#-----------------------------------------------------------
#

# La expresion regular del nombre de los paquetes
PKG_REGEXP=$1

# Los nombres y rutas de los archivos de apoyo
LOG_PATH="/tmp"
PKG_FOUNDS=$LOG_PATH"/"$PKG_REGEXP"-packages.log"

#-----------------------------------------------------------
#  Procedimiento de busqueda
#-----------------------------------------------------------
#
echo Realizando busqueda...
echo
find /usr/pkgsrc -type d -name "$PKG_REGEXP*" > $PKG_FOUNDS 2>&1

#-----------------------------------------------------------
#  Verificamos si se pudo guardar la busqueda
#-----------------------------------------------------------
#
if [[ ! -e $PKG_FOUNDS ]]; then
    echo No se puede crear el log de la operacion: $PKG_FOUNDS
    exit 1
fi

#-----------------------------------------------------------
#  Validacion de los resultados
#-----------------------------------------------------------
#
TOTAL=$( wc -l < $PKG_FOUNDS )

if (( $TOTAL == 0 )); then
    echo "No se encontraron paquetes."
    exit 1
fi

#-----------------------------------------------------------
#  Confirmacion de instalacion
#-----------------------------------------------------------
#
TOTAL=$( echo $TOTAL | sed 's/ //g' )
cat $PKG_FOUNDS
echo
echo Hay $TOTAL paquetes para instalar.
echo
echo Si desea cancelar presione Ctrl+C ahora.
echo

COUNTER=10

while (( $COUNTER >= 0 )); do
    printf "\033[1A"
    echo -n "Si desea continuar espere $COUNTER"

    if (( $COUNTER == 1 )); then
        echo " segundo. "
    else
        echo " segundos. "
    fi

    sleep 1
    let "COUNTER--"
done


#-----------------------------------------------------------
#  Procedimiento principal de instalacion
#-----------------------------------------------------------
#
I=1
echo

while (( $I <= $TOTAL)); do
    PACKAGE=$( head -n $I < $PKG_FOUNDS | tail -n 1 )
    PKG_NAME=$( basename $PACKAGE )
    PKG_PATH=$( dirname $PACKAGE )
    PKG_LOG=$LOG_PATH"/"$PKG_NAME".log"

    # Obtenemos el porcentaje del proceso
    let "PORCIENTO=(I*100)/TOTAL"

    # Checamos si el paquete ya ha sido instalado
    INSTALLED=$( pkg_info | grep $PKG_NAME )

    if [[ $INSTALLED == "" ]]; then
        echo "Instalado el paquete #$I ($PORCIENTO%): '$PACKAGE'..."

        cd "$PACKAGE"
        make package clean clean-depends distclean > $PKG_LOG 2>&1
    else
        echo "Omitiendo el paquete #$I ($PORCIENTO%): '$PACKAGE'."
    fi

    let "I++"
done

Cualquier cosa que llegase a fallar, reportalo inmediatamente.

Ejemplo


Despues de haber instalado el meta-paquete “/usr/pkgsrc/meta-pkgs/xfce4”, le indicamos al script que instale el resto de los paquetes de la serie:

[#] ./instalar_serie.sh xfce
Realizando busqueda...

/usr/pkgsrc/audio/xfce4-mixer
/usr/pkgsrc/audio/xfce4-xmms-plugin
/usr/pkgsrc/devel/xfce4-dev-tools
/usr/pkgsrc/editors/xfce4-mousepad
/usr/pkgsrc/graphics/xfce4-icon-theme
/usr/pkgsrc/meta-pkgs/xfce4
/usr/pkgsrc/meta-pkgs/xfce4-extras
/usr/pkgsrc/misc/xfce4-weather-plugin
/usr/pkgsrc/multimedia/xfce4-mpc-plugin
/usr/pkgsrc/net/xfce4-wavelan-plugin
/usr/pkgsrc/print/xfce4-print
/usr/pkgsrc/sysutils/xfce4-appfinder
/usr/pkgsrc/sysutils/xfce4-battery-plugin
/usr/pkgsrc/sysutils/xfce4-cpugraph-plugin
/usr/pkgsrc/sysutils/xfce4-diskperf-plugin
/usr/pkgsrc/sysutils/xfce4-fsguard-plugin
/usr/pkgsrc/sysutils/xfce4-genmon-plugin
/usr/pkgsrc/sysutils/xfce4-netload-plugin
/usr/pkgsrc/sysutils/xfce4-quicklauncher-plugin
/usr/pkgsrc/sysutils/xfce4-systemload-plugin
/usr/pkgsrc/sysutils/xfce4-thunar
/usr/pkgsrc/sysutils/xfce4-xarchiver
/usr/pkgsrc/sysutils/xfce4-xkb-plugin
/usr/pkgsrc/textproc/xfce4-dict-plugin
/usr/pkgsrc/time/xfce4-datetime-plugin
/usr/pkgsrc/time/xfce4-orage
/usr/pkgsrc/time/xfce4-timer-plugin
/usr/pkgsrc/wm/xfce4-wm
/usr/pkgsrc/wm/xfce4-wm-themes
/usr/pkgsrc/x11/xfce3
/usr/pkgsrc/x11/xfce4-clipman-plugin
/usr/pkgsrc/x11/xfce4-desktop
/usr/pkgsrc/x11/xfce4-exo
/usr/pkgsrc/x11/xfce4-eyes-plugin
/usr/pkgsrc/x11/xfce4-gtk2-engine
/usr/pkgsrc/x11/xfce4-mcs-manager
/usr/pkgsrc/x11/xfce4-mcs-plugins
/usr/pkgsrc/x11/xfce4-notes-plugin
/usr/pkgsrc/x11/xfce4-panel
/usr/pkgsrc/x11/xfce4-places-plugin
/usr/pkgsrc/x11/xfce4-screenshooter-plugin
/usr/pkgsrc/x11/xfce4-session
/usr/pkgsrc/x11/xfce4-terminal
/usr/pkgsrc/x11/xfce4-utils

Hay 44 paquetes para instalar.

Si desea cancelar presione Ctrl+C ahora.
Si desea continuar espere 0 segundos.
 

Omitiendo el paquete #1 (2%): '/usr/pkgsrc/audio/xfce4-mixer'.
Instalado el paquete #2 (4%): '/usr/pkgsrc/audio/xfce4-xmms-plugin'...
Omitiendo el paquete #3 (6%): '/usr/pkgsrc/devel/xfce4-dev-tools'.
Omitiendo el paquete #4 (9%): '/usr/pkgsrc/editors/xfce4-mousepad'.
Omitiendo el paquete #5 (11%): '/usr/pkgsrc/graphics/xfce4-icon-theme'.
Omitiendo el paquete #6 (13%): '/usr/pkgsrc/meta-pkgs/xfce4'.
Instalado el paquete #7 (15%): '/usr/pkgsrc/meta-pkgs/xfce4-extras'...
Omitiendo el paquete #8 (18%): '/usr/pkgsrc/misc/xfce4-weather-plugin'.
Omitiendo el paquete #9 (20%): '/usr/pkgsrc/multimedia/xfce4-mpc-plugin'.
Omitiendo el paquete #10 (22%): '/usr/pkgsrc/net/xfce4-wavelan-plugin'.
Omitiendo el paquete #11 (25%): '/usr/pkgsrc/print/xfce4-print'.
Omitiendo el paquete #12 (27%): '/usr/pkgsrc/sysutils/xfce4-appfinder'.
Omitiendo el paquete #13 (29%): '/usr/pkgsrc/sysutils/xfce4-battery-plugin'.
Omitiendo el paquete #14 (31%): '/usr/pkgsrc/sysutils/xfce4-cpugraph-plugin'.
Omitiendo el paquete #15 (34%): '/usr/pkgsrc/sysutils/xfce4-diskperf-plugin'.
Omitiendo el paquete #16 (36%): '/usr/pkgsrc/sysutils/xfce4-fsguard-plugin'.
Omitiendo el paquete #17 (38%): '/usr/pkgsrc/sysutils/xfce4-genmon-plugin'.
Omitiendo el paquete #18 (40%): '/usr/pkgsrc/sysutils/xfce4-netload-plugin'.
Omitiendo el paquete #19 (43%): '/usr/pkgsrc/sysutils/xfce4-quicklauncher-plugin'.
Omitiendo el paquete #20 (45%): '/usr/pkgsrc/sysutils/xfce4-systemload-plugin'.
Omitiendo el paquete #21 (47%): '/usr/pkgsrc/sysutils/xfce4-thunar'.
Omitiendo el paquete #22 (50%): '/usr/pkgsrc/sysutils/xfce4-xarchiver'.
Omitiendo el paquete #23 (52%): '/usr/pkgsrc/sysutils/xfce4-xkb-plugin'.
Omitiendo el paquete #24 (54%): '/usr/pkgsrc/textproc/xfce4-dict-plugin'.
Omitiendo el paquete #25 (56%): '/usr/pkgsrc/time/xfce4-datetime-plugin'.
Omitiendo el paquete #26 (59%): '/usr/pkgsrc/time/xfce4-orage'.
Omitiendo el paquete #27 (61%): '/usr/pkgsrc/time/xfce4-timer-plugin'.
Omitiendo el paquete #28 (63%): '/usr/pkgsrc/wm/xfce4-wm'.
Omitiendo el paquete #29 (65%): '/usr/pkgsrc/wm/xfce4-wm-themes'.
Instalado el paquete #30 (68%): '/usr/pkgsrc/x11/xfce3'...
Omitiendo el paquete #31 (70%): '/usr/pkgsrc/x11/xfce4-clipman-plugin'.
Omitiendo el paquete #32 (72%): '/usr/pkgsrc/x11/xfce4-desktop'.
Omitiendo el paquete #33 (75%): '/usr/pkgsrc/x11/xfce4-exo'.
Omitiendo el paquete #34 (77%): '/usr/pkgsrc/x11/xfce4-eyes-plugin'.
Omitiendo el paquete #35 (79%): '/usr/pkgsrc/x11/xfce4-gtk2-engine'.
Omitiendo el paquete #36 (81%): '/usr/pkgsrc/x11/xfce4-mcs-manager'.
Omitiendo el paquete #37 (84%): '/usr/pkgsrc/x11/xfce4-mcs-plugins'.
Omitiendo el paquete #38 (86%): '/usr/pkgsrc/x11/xfce4-notes-plugin'.
Omitiendo el paquete #39 (88%): '/usr/pkgsrc/x11/xfce4-panel'.
Omitiendo el paquete #40 (90%): '/usr/pkgsrc/x11/xfce4-places-plugin'.
Omitiendo el paquete #41 (93%): '/usr/pkgsrc/x11/xfce4-screenshooter-plugin'.
Omitiendo el paquete #42 (95%): '/usr/pkgsrc/x11/xfce4-session'.
Omitiendo el paquete #43 (97%): '/usr/pkgsrc/x11/xfce4-terminal'.
Omitiendo el paquete #44 (100%): '/usr/pkgsrc/x11/xfce4-utils'.

A pesar de que eran muchos los paquetes, no todos ellos fueron procesados, de esta manera no solamente no sobrecargamos al procesador sino tambien reducimos el trabajo del disco duro.

Recuerda, si encuentras un error por favor repórtalo inmediatamente. Muchas gracias.

Permalink: http://www.mononeurona.org/users/entry/asarch/1442


Comments Comentblogs:
1.- saidjose saidjose wrote:

Buenas asarch buen escrito en bash para la instalacion de paquetes, solamente una pregunta, por que pusiste Copyrihgt en vez de la licencia BSD, GLP o Copyleft

2008-07-20 11:42:45-05
2.- asarch asarch wrote:

De hecho es el Copyright al estilo BSD. Las clausulas de la licencia es lo que lo vuelve BSD.

2008-07-20 12:16:40-05

New Comentblog

Captcha



Login



Remember me:
asarch
...sobre todo en la gimnasia.
BSD Daemon Copyright 1988 by Marshall Kirk McKusick. All Rights Reserved.&#39;
Powered by:
Despabilando la MonoNeurona.org
Livechat

<-Nombre
ana_20 wrote:
y si estudio ing en informatica i sistemas
2 weeks, 3 days ago

ana_20 wrote:
kiero un curso basico d viasual net!!! i soi d peru
2 weeks, 3 days ago

ana_20 wrote:
kiero un curso basico d viasual net!!! i soi d peru
2 weeks, 3 days ago

hola wrote:
alguiene q estudie sistemas
on 23/10/08

hola wrote:
hola aluien de peru
on 23/10/08

hola wrote:
hola aluien de peru
on 23/10/08

hola wrote:
sdfdsf
on 23/10/08

vendaval wrote:
hola, que piensas de mi proyecto comunitario en mi universidad
on 22/10/08

vendaval wrote:
hola, que pienzas de mi proyecto comunitario en mi universidad
on 22/10/08

lokito wrote:
te kiero follarr
on 19/9/08

¿Qué estuve haciendo?
Para usar: qemu -localtime -m 256 -soundhw all -hda c.img
3 days, 21 hours ago
Para instalar: qemu -localtime -m 256 -hda c.img -cdrom linux.iso -boot d
3 days, 21 hours ago
qemu-img create -f qcow2 c.img 10G
3 days, 21 hours ago
A lo mejor fue "brujería" ¡Gulp! :-S
5 days, 18 hours ago
¿"clavo"? ¿Qué clavo si el zapato en esa parte no lleva ningún clavo?
6 days, 7 hours ago
De hecho si. Solamente el dolor que, curiosamente, ya desapareció :-S
6 days, 7 hours ago
Algo me "picó" en mi pie izquierdo. Lo curioso es que tría los zapatos puestos :-(
6 days, 19 hours ago
Ese día yo no estuve ahí :-(
1 week, 2 days ago
¿Alguien sabe la verdadera razón de la rebelión de Lucifer?
1 week, 2 days ago
¡Gloria al nombre del Señor!
1 week, 4 days ago
Galerias
FirefoxjEdit.orgGimpOpenOffice.orgHacker
Top
Colectivo MonoNeurona.org © 2002-2008.