Delirando sobre informática, fotografía, programación, móviles y mucho más desde 2003
Ya he hablado de GNU Screen y de su potencia. Las posibilidades que brinda son enormes, sobre todo para los que tenemos que monitorizar servidores. Gran parte de la potencia de GNU Screen reside en el enorme número de opciones de personalizacion, desde los títulos hasta los accesos directos, funcionalidad que he usado para crear macros de comandos.
En GNU Screen podemos ejecutar comandos al estilo vim, pulsando C^a :. Tecleando help saldrá la ayuda para los comandos más usados, comandos que he usado para realizar personalizar una pantalla dividida en 4 (ejemplos) que me permitan monitorizar 4 servidores simultáneamente (con una pantalla grande, lógicamente).
En el archivo .screenrc he definido un bind con el comando eval, que permite evaluar una serie de comandos para ejecutarlos al pulsar una tecla:
bind 4 eval "split" "split -v" "focus" "screen" "exec htop" "focus" "split -v"
"screen" "exec htop" "focus" "screen" "exec htop" "focus" "screen" "exec htop"
Con este macro, al pulsar C^a 4 la pantalla se dividirá automáticamente en 4, abriendo en cada una un terminal con un htop. El comando focus permite cambiar entre las diferentes pantallas y el comando screen.
Como se ve, es fácil personalizarlo añadiendo tras exec el comando que se quiera…
PD: gracias a r0sk por la ayudita
Desde hace unos días las aplicaciones Java fallaban al conectarse a internet, mostrando un Network is unreachable al intentar obtener cualquier dato de internet. Tras pelearme con Java y sus preferencias una y otra vez, acabé encontrando este comentario que indica que se trata de la configuración del sistema. Si un cat /proc/sys/net/ipv6/bindv6only devuelve 1 ahí está el problema: las conexiones Java con IPV4 no funcionarán. Para solucionarlo, basta ejecutar este comando:
sudo sysctl net.ipv6.bindv6only=0
Con este ajuste, Java podrá volver a conectarse a internet.
Uno de los motivos para instalar Lighttpd en OpenWRT era poder utilizar aplicaciones con base de datos, como gestores de tareas o documentación y tener siempre disponible esos datos independientemente de desde donde uno se conecte (equipo de trabajo, portátil via wifi, móvil via 3G…). Pero la Ley de Murphy siempre tiene que aparecer para que no funcione justo lo que necesitas. Por lo visto, existe un bug que provoca que SQLite no funcione correctamente con varias versiones de Kamikaze (en mi caso la 8.09.1) que provoca el siguiente error con bases de datos SQLite 2.x:
sqliteBtreeOpen: Assertion `sizeof(ptr)==sizeof(char*)' failed.
En el caso de SQLite 3.x el error es un desagradable Segmentation fault y tras mucho curiosear por foros e intentar compilar sin éxito con estas instrucciones me puse a probar con todos los paquetes que encontré hasta dar con este backport de los propios servidores de OpenWRT y que curiosamente funciona aunque no lo haga ninguno de los otros paquetes de otras RC.
Más de una vez he necesitado modificar un paquete .deb debido a que las dependencias no son las correctas o la versión se detecta mal y se fuerza su actualización. Es el caso de mail-notification-evolution, paquete al que hay que modificarle la dependencia con libcamel para poder hacerlo funcionar con Evolution 2.28. Como los paquetes son simplemente archivos con una cierta informacion y comprimidos, es posible modificarlos utilizando File Roller o similares, pero es una tarea más incómoda.
El script simplemente descomprime el paquete y permite editar el archivo de texto que define la versión y las dependencias. Tras salir del editor actualiza el archivo guardado y borra los archivos temporales:
#!/bin/bash dpkg -e "$1" cd DEBIAN/ vim control tar czvf control.tar.gz * mv control.tar.gz ../ cd .. ar r "$1" control.tar.gz rm -rf DEBIAN rm control.tar.gz
Mientras se edita el archivo, es posible acceder a la carpeta DEBIAN creada en el directorio de trabajo y modificar los archivos del paquete data.tar.gz, que es donde está todos los archivos que se instalarán con el paquete.
Los chicos de Adobe no acostumbran a hacer versiones decentes de sus productos para Linux y menos aún para plataformas de 64bits, por lo que a veces es engorroso hacerlas funcionar.
Tras hartarme de Iceweasel para 64bits y los permanentes errores que daba al funcionar con Adobe Flash Player para 64bits, decidí instalarme Mozilla Firefox para 32bits (ya que Mozilla no proporciona versiones para Linux 64bits) en un directorio aparte y hacer lo mismo con el resto de aplicaciones de Adobe.
Lo primero es instalar las librerías que dan soporte para aplicaciones de 32bits:
sudo apt-get install ia32-libs ia32-libs-gtk
Con esto podremos ejecutar Mozilla Firefox, Adobe Acrobat Reader y Adobe Air sin mayores problemas, exceptuando los estilos de GTK que no se cargarán dando este error:
libclearlooks.so: wrong ELF class: ELFCLASS64
Para solucionar ese detalle es necesario indicar la ruta de los motores de GTK 32bits del siguiente modo:
export GTK_PATH=/usr/lib32/gtk-2.0
Como eso afectará al resto de aplicaciones que se abran, habrá que crear un lanzador para estas aplicaciones con un script bash:
#!/bin/bash export GTK_PATH=/usr/lib32/gtk-2.0 /home/david/Applications/acroread/Adobe/Reader8/bin/acroread "$@"
Deberá usarse el mismo script cambiando la ruta para lanzar Mozilla Firefox o las aplicaciones instaladas para Adobe Air. Para hacer funcionar los plugins Acrobat Reader y Flash Player con Firefox 32bits, bastará con copiar las librerías correspondientes al directorio plugins de Firefox (nppdf.so y libflashplayer.so). El problema está en que al usar esta configuración el plugin Flash Player 10 no detecta correctamente la librería cURL dando este error:
Adobe Flash Player error: could not load cURL library
Será necesario recurrir a la versión 9.0 de Adobe Flash Player para que funcione correctamente, ya que es más que suficiente para el 99% de los caso. Por último, para que el plugin Acrobat Reader se cargue adecuadamente, será necesario enlazar el script creado anteriormente a /usr/bin/acroread.
Por último, para pulir los ciertos detalles con Mozilla Firefox, será necesario enlazar o copiar a /usr/lib32 los archivos que los paquetes libcroco3, libgsf-1-114, librsvg2-2 y librsvg2-common instalan en /usr/lib. Basta con abrir el paquete con File Roller para extraer los archivos. Además, si se utilizan los drivers propietarios de NVIDIA o ATI será necesario instalar las librerías que dan compatibilidad con 32bits(nvidia-glx-ia32 y fglrx-glx-ia32 respectivamente).
En Gnome Evolution el atajo de teclado Control+J sirve para enviar el mensaje o mensajes seleccionados a la carpeta de spam (Junk) , pero está peligrosamente cerca de Control+K que permite marcar como leído un mensaje. Por el momento no es posible modificar estos atajos mediante ninguna pantalla, por lo que hay que recurrir a toquetear los archivos de configuración que por suerte son simples XML.
Hay que editar el archivo /usr/share/evolution/2.26/ui/evolution-mail-message.xml y buscar MessageMarkAsJunk para dejarlo como sigue para cambiar el atajo a Control+G, que molesta menos:
<cmd name="MessageMarkAsJunk"
_tip="Mark the selected messages as junk"
accel="*Control*g"
pixtype="pixbuf"/>
<cmd name="MessageMarkAsNotJunk"
_tip="Mark the selected messages as not being junk"
accel="*Control**Shift*g"
pixtype="pixbuf"/>
Sólo queda reiniciar el programa y listo
Hace tiempo que conocía Gnome Colors pero ha sido hoy cuando me he dado cuenta de que en los repositorios oficiales de Debian están disponibles paquetes independientes para cada color, además de los estilos visuales Shiki Colors y los temas GDM (pantalla de validación de Gnome) Arc Colors, que combinados dejan el escritori de lo más bonito. Para instalar todo, basta con ejecutar:
sudo apt-get install gnome-colors shiki-colors arc-colors
Por cierto, las fuentes Ebrima y Segoe UI que vienen con la Release Candidate de Windows 7 le dan el toque perfecto
Gnome Rhythmbox tiene algún pequeño problema al pausar y reanudar reproducciones de Last.fm, y teniendo en cuenta que a veces es necesario pararlo o silenciarlo para que no interfiera en otras cosas, me he hecho (porque no he encontrado el modo de silenciarlo de ninguna otra manera) este pequeño script en Python (requiere python-dbus) que permite silenciar Rhythmbox sin parar la reproducción:
#!/usr/bin/env python
import os
import dbus
session_bus = dbus.SessionBus()
proxy_obj = session_bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Player')
player = dbus.Interface(proxy_obj, 'org.gnome.Rhythmbox.Player')
if player.getMute() < 1:
player.setMute(True)
else:
player.setMute(False)
Si se combina con xbindkeys para asignarse a una combinación de teclas como Control + Silencio la comodidad ya es total
Nunca había trasteado con distribuciones de Linux para 64bits y tras hacerme con el procesador Intel Core i7 instalé Debian para 64 bits (amd64). Todo funcionó a la perfección hasta que intenté hacer funcionar algún software sin versón compilada para 64 bits, momento en el que tuve que actualizarme y ver cómo hacerlo funcionar.
El problema es el software propietario (y alguna excepción en el software libre como Wine), porque raramente se encuentran paquetes para 64bits (sorprendentemente un buen ejemplo es Adobe Flash Player) y hay que recurrir a chanchullos para poder ejecutarlo. Es el caso de Adobe Acrobat Reader, Adobe Air o Google Earth.
En Debian existía hasta ayer (sí, ayer mismo, día 4 de agosto de 2009) el paquete ia32-apt-get que permitía instalar paquetes de 32bits mezclados con los de 64bits. Pero desde hoy es posible instalar los paquetes ia32-libs y ia32-libs-gtk que incluye la mayoría de librerías necesarias para 32bits y las ubica en /usr/lib32, de modo que estén separadas de las principales. Existen otras librerías en los repositorios que se identifican por lib32... y pueden ser necesarias puntualmente, y cuando nos encontremos con alguna librería que no está en ningún paquete, basta con descargarse el paquete de instalación para 32bits, extraerlo y copiar las librerías a /usr/lib32.
Por ejemplo, para instalar Skype con el paquete oficial para Debian, los pasos serían:
sudo apt-get install ia32-libs ia32-libs-gtk lib32asound2 sudo dpkg -i --force-architecture skype-debian_2.0.0.72-1_i386
Al arrancarlo, aparecerá el siguiente error:
skype: error while loading shared libraries: libuuid.so.1:cannot open shared object file
Como en los repositorios no hay ningún paquete que se parezca a lib32uuid, no queda más remedio que obtener la librería del repositorio i386 buscándolo en packages.debian.org y extraer los archivos:
wget http://ftp.es.debian.org/debian/pool/main/e/e2fsprogs/libuuid1_1.41.8-2_i386.deb ar x libuuid1_1.41.8-2_i386.deb tar xzvf data.tar.gz sudo cp ./lib/* /usr/lib32
Con estas librerías, Skype arrancará sin problemas. Y de este mismo modo es posible instalar Adobe Acrobat Reader y otras aplicaciones, aunque no lo he conseguido con Google Earth debido a un error con la librería swrast_dri.so.
Moraleja: si no quieres complicaciones, no uses software propietario
Hace años que disponemos de procesadores con más de un núcleo que en la práctica el sistema operativo ve como varios procesadores, pero todavía hay mucho software que no aprovecha todo el potencial disponible. La compresión de archivos es una tarea bastante frecuente y el software generalmente hace uso sólo de 1 núcleo del procesador, desaprovechando el resto. La siguiente imagen lo ilustra perfectamente:

El primer tramo es una compresión con el comando bzip2 sin más, y se ve que sólo utiliza 1 núcleo dejando los otros 7 sin uso. El segundo tramo (sobre el segundo 20) es una compresión del mismo archivo pero aprovechando todos los núcleos, y evidentemente se hace en mucho menos tiempo.
En Linux los compresores más utilizados (gzip y bzip2) no implementan multithreading, pero existen modificaciones que sí lo hacen: SMP mgzip y Parallel BZIP2. Estas dos utilidades sirven sólo para comprimir, generando archivos perfectamente compatibles con sus versiones estándar. También existe 7-Zip, que permite comprimir en múltiples formatos, incluyendo gzip y bzip2. Un ejemplo práctico:
7z a -m0=bzip2 -mmt=8 test.pdf.bzip2 test.pdf
Con ese comando se realiza una compresión en formato bzip2 utilizando 8 núcleos del procesador.
Delirios de un Informático :: Gestionado con WordPress :: Alojado en Bitacoras.com :: Licenciado bajo Creative Commons