Algo de Linux: enero 2013

miércoles, 23 de enero de 2013

Script para instalar un paquete en el chroot de los clientes ltsp

Para terminar de rematar, comparto también otro script que uso para instalar un paquete directamente en el chroot de los clientes ltsp, pasando como parámetro el nombre del paquete a instalar: instalachroot.

Pego el código del script a continuación:

#!/bin/bash
# Instala en el chroot el paquete que indiquemos como parámetro
# Una vez instalado, regenera la imagen de los terminales

# Esteban M. Navas Martín
# Administrador Informático del IES Valle del Jerte.
# 23-Enero-2012

if [ $# -lt 1 ]; then
   echo "Modo de uso: $0 paquete-a-instalar"
   exit
fi

mount -t proc proc-chroot /opt/ltsp/i386/proc
mount -t devpts devpts-chroot /opt/ltsp/i386/dev/pts
ltsp-chroot -a i386 apt-get update
ltsp-chroot -a i386 apt-get -y install $1
ltsp-chroot -a i386 apt-get -y autoremove
ltsp-chroot -a i386 apt-get clean
umount proc-chroot
umount devpts-chroot
ltsp-update-image --arch i386

De este modo, si quiero instalar un paquete en un conjunto de máquinas, copio el script a cada una de las máquinas y lo ejecuto mediante dsh. Por ejemplo:

# dsh -av  /root/instalachroot geogebra

Con el comando anterior estoy ejecutando el script instalachroot para que instale el paquete geogebra en todos los equipos que controlo vía dsh y, por supuesto, que se encuentran encendidos. Utilizo la opción -v para ver si se realiza bien o falla en alguno.

Script para desinstalar un kernel del chroot de los clientes ltsp

Al hilo del post anterior, dejo otro script que uso para desinstalar un kernel del chroot de los clientes ltsp, simplemente cambiando las variables: desinstalakernelchroot.sh

El script es muy simple, como se puede ver:

#!/bin/bash
# Desinstala el kernel que le indiquemos en la variables KERNEL en el chroot
# Una vez instalado, regenera la imagen de los terminales y actualiza los kernels en:
#  * /var/lib/tftpboot
#  * /srv/tftp

# Esteban M. Navas Martín
# Administrador Informático del IES Valle del Jerte.
# 22-Enero-2012

KERNEL="linux-image-3.2.0-0.bpo.2-686-pae"
HEADERS="linux-headers-3.2.0-0.bpo.2-686-pae"

mount -t proc proc-chroot /opt/ltsp/i386/proc
mount -t devpts devpts-chroot /opt/ltsp/i386/dev/pts  
ltsp-chroot -a i386 apt-get -y remove --purge $KERNEL $HEADERS
umount proc-chroot
umount devpts-chroot
ltsp-update-image --arch i386
ltsp-update-kernels

Para cambiar el kernel a desinstalar, modificamos la variable KERNEL y la variable HEADERS y listo.

Script para cambiar el kernel del chroot de los clientes ltsp

En ocasiones, me interesa realizar determinadas tareas directamente mediante dsh, en lugar de esperar a que se vayan realizando mediante puppet. Un ejemplo de ello es cuando quiero instalar un nuevo kernel para los clientes ltsp. 

Para instalar un nuevo kernel en el chroot de los clientes ltsp utilizo un script (actualizakernelchroot.sh) que copio de forma remota a las máquinas y posteriormente ejecuto mediante dsh.

El script es muy simple, como se puede ver:

#!/bin/bash
# Instala el kernel y los headers que le indiquemos en las variables KERNEL y HEADERES en el chroot
# Una vez instalado, regenera la imagen de los terminales y actualiza los kernels en:
#  * /var/lib/tftpboot
#  * /srv/tftp

# Esteban M. Navas Martín
# Administrador Informático del IES Valle del Jerte.
# 22-Enero-2012

KERNEL="linux-image-2.6.32-5-686"
HEADERS="linux-headers-2.6.32-5-686"

mount -t proc proc-chroot /opt/ltsp/i386/proc
mount -t devpts devpts-chroot /opt/ltsp/i386/dev/pts  
ltsp-chroot -a i386 apt-get -y install $KERNEL $HEADERS 
umount proc-chroot
umount devpts-chroot
ltsp-update-image --arch i386
ltsp-update-kernels

Para cambiar el kernel a instalar, modificamos la variable KERNEL y la variable HEADERS y listo.

En respuesta al comentario de LOR, así es como quedaría el script, sustituyendo los comandos de montaje por opciones de ltsp-chroot que permiten realizar directamente dichos montajes:

#!/bin/bash
# Instala el kernel y los headers que le indiquemos en las variables KERNEL y HEADERES en el chroot
# Una vez instalado, regenera la imagen de los terminales y actualiza los kernels en:
#  * /var/lib/tftpboot
#  * /srv/tftp

# Esteban M. Navas Martín
# Administrador Informático del IES Valle del Jerte.
# 22-Enero-2012

KERNEL="linux-image-2.6.32-5-686"
HEADERS="linux-headers-2.6.32-5-686"

ltsp-chroot -a i386 -d -p apt-get -y install $KERNEL $HEADERS 
ltsp-update-image --arch i386
ltsp-update-kernels

jueves, 17 de enero de 2013

Repack de paquetes instalados en el sistema

A veces hemos instalado algún software en nuestro sistema y, a pesar de que sigue instalado, ya no disponemos del paquete con el que lo hemos instalado, sea porque ya no se encuentra en los repositorios, no tenemos actualmente configurados los repositorios desde los que lo instalamos, es un paquete que creamos nosotros mismos y lo hemos perdido, etc... En este caso, podemos volver a crear el paquete haciendo uso de una herramienta muy útil para estos casos: dpkg-repack.

Veamos cómo usarla con un ejemplo:

Supongamos que hace tiempo instalamos en nuestro sistema el paquete gpdftk, queremos instalarlo en otra máquina y no sabemos de dónde sacarlo.

Primero instalamos los paquetes fakeroot y dpkg-repack:

# apt-get -y install fakeroot dpkg-repack

Una vez instalados, no tenemos más que usarlos:

$ fakeroot -u dpkg-repack  gpdftk

Y de este modo tan sencillo, obtendremos el paquete gdftk.

martes, 15 de enero de 2013

Una "forma rápida" de crear paquetes de firefox

En ocasiones necesitamos crear un paquete para instalar un determinado software en nuestros centros de una manera sencilla y automática. 

A modo de ejemplo vamos a ver cómo crear paquetes de firefox 32 y 64 bits a partir de los .tar.bz2 descargados del ftp de firefox:

Lo primero que haremos será instalar los paquetes alien y fakeroot:

# apt-get install alien fakeroot

Una vez instalados, descargamos las últimas versiones disponibles a día de hoy:

$ wget http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/latest/linux-i686/es-ES/firefox-18.0.tar.bz2
$ mv firefox-18.0.tar.bz2 firefox-18.0-i386.tar.bz2
$ wget http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/latest/linux-x86_64/es-ES/firefox-18.0.tar.bz2
$ mv firefox-18.0.tar.bz2 firefox-18.0-amd64.tar.bz2

Una vez descargados, convertimos los ficheros .tar.bz2 a tar.gz:

$ bunzip2 -c <  firefox-18.0-i386.tar.bz2 | gzip -c > firefox-18.0-i386.tar.gz
$ bunzip2 -c <  firefox-18.0-amd64.tar.bz2 | gzip -c > firefox-18.0-amd64.tar.gz

Ahora que los tenemos en formato .tar.gz, los convertimos a .deb usando alien y retocamos lo que queramos.

Vamos a crear primero el paquete de 32 bits:

$ fakeroot alien -dv  firefox-18.0-i386.tar.gz 

Cuando termine, tendremos el paquete: firefox_18.0-2_all.deb

Lo extraemos en una carpeta a la que llamamos, por ejemplo: firefox:


$ dpkg-deb -x firefox_18.0-2_all.deb firefox

$ dpkg-deb --control firefox_18.0-2_all.deb firefox/DEBIAN


A continuación retocamos lo que queramos:


$ cd firefox

$ mkdir opt

$ mv firefox opt/

$ cd .. 


Editamos el fichero  firefox/DEBIAN/control y cambiamos:

Architecture: all 

por:

Architecture: i386

Si necesitáramos hacer operaciones después de instalar, como por ejemplo, crear enlaces o establecer alternativas, podríamos crear el archivo DEBIAN/postinst y añadir en él los comandos que queramos ejecutar al terminar de hacer la instalación. 

Así mismo, podríamos ejecutar acciones antes de desinstalar el paquete, creando el archivo DEBIAN/prerm y añadiendo en él los comandos que queramos ejecutar.

Por último, una vez terminadas las modificaciones empaquetamos de nuevo:


$ dpkg-deb -b firefox firefox_18.0-2_i386.deb


Vamos a crear, por último, el paquete de 64 bits:

$ fakeroot alien -dv firefox-18.0-amd64.tar.gz


$ dpkg-deb -x firefox_18.0-2_all.deb firefox

$ dpkg-deb --control firefox_18.0-2_all.deb firefox/DEBIAN



$ cd firefox

$ mkdir opt

$ mv firefox opt/

$ cd .. 


Editamos el fichero  firefox/DEBIAN/control y cambiamos:

Architecture: all 

por:

Architecture: amd64

Y empaquetamos:


$ dpkg-deb -b firefox firefox_18.0-2_amd64.deb

Paquetes de firefox 18.0 para instalar en las máquinas de los IES

Habitualmente instalamos software y realizamos configuraciones en nuestras máquinas mediante puppet. 

Uno de los problemas que podemos observar es que si realizamos tareas que instalan firefox o java vía wifi (en el caso de portátiles) desde los ficheros .tar.gz (que tienen un tamaño más o menos grande), aunque limitemos el ancho de banda de descarga de dichos ficheros, posiblemente se nos sature la red.

Para intentar evitar este problema es mejor usar un repositorio propio en el que coloquemos los paquetes (yo uso reprepro). De este modo, las tareas de instalación de los mismos serán muy sencillas y el proveedor de paquetes se encargará de realizar la instalación por nosotros.

A continuación dejo dos enlaces para descargar dos paquetes de 32 y 64 bits creados "de forma rápida" para instalar firefox en /opt/firefox/ en las máquinas del instituto. 
Importante: Estos paquetes tan sólo colocan firefox en /opt/firefox/. No cambian el enlace de /usr/bin/iceweasel a /opt/firefox/firefox para que se siga pudiendo usar iceweasel como navegador por defecto. Para realizar el cambio, tengo dos tareas puppet:
  • activa-firefox
  • activa-iceweasel
  De este modo, si quiero que los portátiles, los servidores ltsp o los workstation usen firefox, les pongo la tarea activa-firefox y si quiero que usen iceweasel, les pongo la tarea activa-iceweasel.

Actualización de java-package: Crear paquetes debian de Java a partir del .tar.gz

Si utilizáis la versión 0.50 de java-package o inferior para crear paquetes debian de java a partir del .tar.gz,  os recomiendo que actualicéis a la versión 0.51. Tal y como está escrito el código del script de conversión, la versión 0.50 tan sólo sirve para paquetes cuya revisión sólo tiene un dígito en el nombre y os va a dar error si tratáis de crear un paquete con las revisiones a partir de la 10.

Dejo un enlace para descargar la nueva versión del paquete:


Lo he probado en Debian Squeeze y funciona perfectamente.

viernes, 11 de enero de 2013

Utilizar el Nook Simple Touch sin registrar

Por alguna razón, había pensado que podía utilizar el Nook Simple Touch directamente, sin registrar, y me llevé una sorpresa la primera vez que lo encendí porque me obligaba a realizar el proceso de registro durante el inicio. 

Mi sorpresa fue mayor cuando descubrí que te obliga a realizar el registro vía wifi y que, cada vez que intentaba conectar a mi red, me mostraba un mensaje que decía algo así como: "Conectado, pero no a internet". Hice mil cosas, incluso dejar el router abierto y, nada; no hubo manera. 

Se me ocurrió compartir el 3G de mi smartphone y cada vez que intentaba conectar me decía lo mismo: "Conectado, pero no a internet", incluso dejando el acceso sin contraseña. Pero tampoco me sirvió de nada.

Como no podía utilizar el ebook de ningún modo, antes de devolverlo, me puse a buscar por todas partes si existía alguna forma de entrar sin registrar. Y, después de mucho buscar, encontré en xda-developers el modo de evitar el bloqueo en que me mantenía el asistente.

Ésto es lo que hay que hacer:
  • En la primera pantalla que aparece en el Nook Simple Touch, mantenemos pulsado el botón superior derecho y pasamos un dedo por la parte superior de la pantalla de izquierda a derecha.
  • Al hacer lo anterior, aparecerá en la parte inferior de la pantalla un botón que dice algo así como "Factory". Lo pulsamos.
  • Seguimos manteniendo pulsado de nuevo el botón superior derecho y daremos un toque con el dedo en la parte inferior derecha de la pantalla. Aparecerá un botón que dice "Skip oobe".
  • Pulsaremos el botón "Skip oobe" y ya podremos arrancar nuestro Nook Simple Touch sin ningún problema.

Hacer un "Factory Reset" al Nook Simple Touch

Para hacer un reseteo completo al Nook Simple Touch:
  • Primero lo apagamos.
  • Una vez apagado, lo encendemos, y, una vez que comience a arrancar, mantenemos presionados los botones inferiores izquierdo y derecho durante varios segundos hasta que nos salga un mensaje en el que nos preguntará si queremos hacer un borrado del sistema.
  • Pulsamos una vez el botón Home ("n") para decirle que sí queremos hacer un System Wipe.
  • Nos preguntará de nuevo. Volvemos a pulsar otra vez el botón Home ("n") para confirmar que estamos seguros.
Y comenzará el proceso de reseteo. 

lunes, 7 de enero de 2013

Violación de segmento al hacer apt-get upgrade o aptitude upgrade

Hoy fuí a hacer un apt-get upgrade y me dió el siguiente error:


# apt-get upgrade
Violación de segmento


Lo curioso es que sí podía hacer un apt-get update sin problemas.

Por alguna razón, los archivos pkgcache.bin y srcpkgcache.bin estaban corruptos. De hecho, el archivo pkgcache.bin ni tan siquiera aparecía y en su lugar tenía una gran cantidad de temporales de dicho archivo, como por ejemplo:


pkgcache.bin.0CqglV  pkgcache.bin.hqsvET  pkgcache.bin.tr62KL

pkgcache.bin.0mSSBD  pkgcache.bin.hwZhbf  pkgcache.bin.tWCqKY

srcpkgcache.bin  srcpkgcache.bin.4uGwoA


La solución ha sido borrar todos estos archivos para que se regeneren de nuevo:


# cd /var/cache/apt
# rm pkgcache.bin*
# rm srcpkgcache.bin*


Y volver a hacer el apt-get update:


# apt-get update


Después de ésto, ya pude volver a hacer el apt-get upgrade.

viernes, 4 de enero de 2013

AdwCleaner: Eliminar Claro Search y otros "bichos"

Este artículo es para todos aquellos que usáis windows y habéis sufrido la pesadilla de secuestradores de navegador como "Claro Search", "FBDownloader", etc... 

Mi recomendación sería que dejárais de usar este sistema operativo, pero como hay gente que se siente agusto con él, os recomiendo usar la herramienta AdwCleaner

 AdwCleaner es una herramienta gratuita que os permitirá eliminar:
  • Adware (ads softwares) 
  • PUP/LPI (Potentially Undesirable Program) 
  • Toolbars 
  • Hijacker (Hijack of the browser's homepage) 
 Podéis descargarlo desde la web del autor:
http://general-changelog-team.fr/fr/downloads/viewdownload/20-outils-de-xplode/2-adwcleaner