Hi Planet Gentoo!

Well, I am not exactly new in the developer world of Gentoo, to be honest I’ve been a developer for almost a year now.

For all who doesn’t know, I started working at Gentoo  with maintainer-needed packages, but I started helping treecleaners and get so much interest in LXDE, as I use it in my netbook.

Lately, I’ve been working with Samba, which has been mostly cared by Patrick Lauer, and thanks to him we all have a stable samba 3.4 version. I am looking forward to bring fixes to the 3.5.x series and all your bug reports, comments, and patches are welcomed of course! :).

/etc/fstab y UUID

Regularmente se especifica en el archivo fstab nombres de dispositivo como /dev/sdb1 tal como en el siguiente ejemplo:

/dev/sdb1        /media/storage        ntfs-3g       defaults        0 1

Esto no es nada nuevo para muchos, pero puede suceder la ocasión en la cual queramos que un dispositivo se monte en una ubicación especial siempre, pero el nombre del dispositivo /dev/sdb1 del ejemplo anterior podría cambiar por ejemplo si se tratara de un dispositivo USB, o de si las galaxias están alineadas o si hace luna llena.

Bueno, en este caso podemos utilizar el UUID (Universally Unique Identifier) el cual identifica a cada sistema de archivos de un disco y hace que el nombre del dispositivo sea irrelevante al momento de montarse.

Obteniendo el uuid

Un par de formas de obtenerlo:

# ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May  5 02:38 07D4-0918 -> ../../sda1
lrwxrwxrwx 1 root root 10 May  5 02:38 1501c1df-798c-4359-a100-37c97f426269 -> ../../sdb2
lrwxrwxrwx 1 root root 10 May  5 02:38 1cd538b0-c4da-4280-a485-c0324066832f -> ../../sda5
lrwxrwxrwx 1 root root 10 May  5 02:38 25b9f76e-0d99-4c6d-b441-4a4a879ff049 -> ../../sda3
lrwxrwxrwx 1 root root 10 May  5 02:38 9E88682C886804DD -> ../../sdb1
lrwxrwxrwx 1 root root 10 May  5 02:38 D8701AD2701AB6EA -> ../../sda2

# blkid
/dev/sda1: SEC_TYPE=”msdos” LABEL=”DellUtility” UUID=”07D4-0918″ TYPE=”vfat”
/dev/sda2: UUID=”D8701AD2701AB6EA” LABEL=”winxp” TYPE=”ntfs”
/dev/sda3: UUID=”25b9f76e-0d99-4c6d-b441-4a4a879ff049″ TYPE=”ext3″
/dev/sda5: UUID=”1cd538b0-c4da-4280-a485-c0324066832f” TYPE=”swap”
/dev/sdb1: UUID=”9E88682C886804DD” LABEL=”storage” TYPE=”ntfs”
/dev/sdb2: UUID=”1501c1df-798c-4359-a100-37c97f426269″ TYPE=”ext3

Ahora con el uuid en mano, procedemos a modificar nuestro fstab:

UUID=9E88682C886804DD        /media/storage       ntfs-3g        defaults       0 1

Y listo, no dependemos del nombre del dispositivo para montarlo!

Nota: El uso del UUID NO lo inventó Ubuntu

Problema con touchscreen de Openmoko Freerunner bajo Debian

He tenido la oportunidad de jugar un poco con un Openmoko (prestado), el cual tiene instalado Debian Sid; el caso es que al actualizarlo el touchscreen dejó de funcionar correctamente.

Lo curioso es que el calibrador funcionaba como se debe:

apt-get install libts-bin
TSLIB_CALIBFILE=/etc/pointercal TSLIB_TSDEVICE=/dev/input/event1 TSLIB_CONSOLEDEVICE=none ts_calibrate

Probando un parche propuesto al archivo de configuración /etc/X11/xorg.conf en el bug 517307 de Debian, funcionó correctamente.

-	Option		"Device"		"/dev/input/event1"
+	Option		"TslibDevice"		"/dev/input/event1"

La recomendación es siempre hacer un backup de la memoria antes de actualizar para evitar dolores de cabeza 😀

Origen del término Informático “Bug”

Recientemente me preguntaron cual era el origen que se le llamara “bug” a las fallas en los programas informáticos, lo cual intentaré explicar a continuación:

Cuando las primeras computadoras fueron construidas alrededor de la decada de los 40s, la gente que trabajaba con estas encontraba insectos (bugs en inglés) en el hardware de las máquinas.

Pero no fue hasta en 1947 que los ingenieros que trabajaban en la computadora Mark II en la Universidad de Harvard encontraron una polilla atrapada en dicho equipo. Entonces pegaron el insecto a la bitácora y la etiquetaron “Primer caso de bug encontrado”. Desde entonces los términos “bug” y “debug” se volvieron comunes en el lenguaje informático.

Y de prueba, unas imágenes de la bitácora del Mark II:

Primer caso de bug encontrado

Primer caso de bug encontrado

Cuando terminamos el proyecto?

Una ingeniosa respuesta a esta pregunta frecuente hacia los informáticos:

Convirtiendo fecha Unix a fecha regular

Algunos logs de ciertos servicios solamente proveen fecha Unix, lo cual hace un poco difícil hacerse la idea de que fecha/hora exactamente se trata.

Pero la conversión en la consola es sumamente sencilla:

Convirtiendo fecha Unix a fecha regular:

$ date -d @1265312185

Convirtiendo una fecha específica a fecha Unix:

$ date –date “Thu Feb  4 13:36:25 CST 2010” +%s

Convirtiendo fecha actual a fecha unix:

$ date +%s

Quick linux script to check memory usage per program

A long time ago somebody shared me the following script to check memory usage per program.

$ ps aux  | awk '{print $6" "$11,$12,$13,$14}' | 
egrep -v "0.*\[.*\]" |
awk '{print $1/1024" MB --> "$2,$3,$4,$5}' | sort -g

Output is the similar to the following:
….
6.39062 Mb –> gnome-screensaver
6.85547 Mb –> /usr/libexec/vino-server –sm-disable
7.22656 Mb –> /usr/libexec/multiload-applet-2 –oaf-activate-iid=OAFIID:GNOME_MultiLoadApplet_Factory –oaf-ior-fd=18
7.27344 Mb –> /usr/libexec/gnome-settings-daemon
7.98438 Mb –> C:\windows\system32\explorer.exe /desktop
8.35547 Mb –> /usr/libexec/gnome-volume-manager –sm-disable
10.8438 Mb –> metacity
11.1094 Mb –> c:\Archivos de programa\Alcatel\A4980\Alcatel 4980\a4980.exe
14.7305 Mb –> vinagre
20.1914 Mb –> gnome-terminal
20.6758 Mb –> planner
21.2227 Mb –> c:\Archivos de programa\Alcatel\A4980\Alcatel 4980\a4980.exe
24.2578 Mb –> gnome-panel
25.5977 Mb –> nautilus
31.6602 Mb –> claws-mail
91.875 Mb –> gedit
109.188 Mb –> /usr/bin/X :0 -audit 0
144.84 Mb –> /usr/bin/firefox

 

Activando soporte Oracle Instant Client + PHP5 en Debian Linux

Para conectarse a una base de datos Oracle con PHP 5, se puede hacer a través del “Oracle Instant Client” y el modulo oci8 de pear.

Primero se debe descargar los paquetes “Basic” y “SDK” desde http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html. En mi caso, los archivos fueron

  • instantclient-basic-linux32-10.2.0.3-20061115.zip
  • instantclient-sdk-linux32-10.2.0.3-20061115.zip

Creamos directorios y descomprimimos

# mkdir -p /opt/oracle/instantclient
# cd /opt/oracle/instantclient
# unzip instantclient-basic-linux32-10.2.0.3-20061115.zip
# unzip instantclient-sdk-linux32-10.2.0.3-20061115.zip

Agregamos las librerías de oracle a las librerías del sistema

# echo /opt/oracle/instantclient >> /etc/ld.so.conf
# ldconfig

Creamos los vínculos simbólicos en caso de que el comando anterior no lo haya hecho:

# cd instantclient_10_2
# ln -s libclntsh.so.10.1 libclntsh.so
# ln -s libocci.so.10.1 libocci.so

Instalamos paquetes necesarios para la configuración del módulo oci8, entre ellos Pear

# apt-get install php-pear php5-dev build-essential

En teoría el comando pecl install oci8 debería de funcionar, pero aparentemente no puede trabajar con las librerías de Oracle Instanclient, así que procedemos a ejecutar los pasos manualmente

# mkdir -p /usr/local/src
# cd /usr/local/src
# pecl download oci8
# tar xfz oci8-1.3.5.tgz
# cd oci8-1.3.5
# phpize
# ./configure –with-oci8=shared,instantclient,/opt/oracle/instantclient/instantclient_10_2
# make
# make install

El nombre del archivo oci8-1.3.5.tgz cambiará dependiendo de nuevas versiones

Luego activamos el módulo oci8 en el archivo php.ini (/etc/php5/apache2/php.ini and /etc/php5/cli/php.ini), con la siguiente línea:

extension=oci8.so

Este paso tarde o temprano tendrá que ejecutarse, asi que mejor de una vez configuramos el archivo  tnsnames.ora

#  mkdir -p /opt/oracle/instantclient/instantclient_10_2/network/admin

Editamos el tnsnames.ora de acuerdo a nuestras necesidades.

# vi /opt/oracle/instantclient/instantclient_10_2/network/admin/tnsnames.ora

Ahora se procede a reiniciar Apache y listo :), podemos auxiliarnos de phpinfo() para comprobar que el módulo oci8 está cargado.

Desactivando el “beep” o “pitido” de la consola

Algunas distribuciones Linux traen activado por defecto el “pitido” de la consola el cual despu és de un tiempo se hace un poco molesto.

La solución es sencilla y consiste en agregar o descomentar la siguiente linea del archivo /etc/inputrc

set bell-style none

Detalle de la instalación de snmpd en Debian

La instalación y configuración del servicio de snmp es de lo más sencillo, pero en mi caso personal se complicó más de la cuenta en un servidor Debian.

El caso era que no funcionaba snmpwalk desde ningún otro host que no fuera el propio servidor, para lo cual revisé y modifiqué numerosas veces /etc/snmp/snmpd.conf , además de hacer múltiples pruebas para ver si había problemas con el tráfico UDP.

La solución vino del lugar más inesperado, en específico del archivo /etc/default/snmpd el cual contiene la siguiente línea:

SNMPDOPTS=’-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1′

Ese 127.0.0.1 hace que el servicio solamente funcione en localhost , ignorando cualquier directiva agentaddress que pudiera estar en /etc/snmp/snmpd.conf .

Como se puede sospechar, la solución es un

# sed -i -e ‘s/127.0.0.1//g’ /etc/default/snmpd

Lo que me llama la atención es la posible intención de la persona que mantiene este paquete,  al hacer un cambio de este tipo sin ninguna notificación al momento de instalar snmpd.

Será que no estoy acostumbrado al modo Debian de hacer las cosas?

Powered by WordPress with GimpStyle Theme design by Horacio Bella.
Entries and comments feeds. Valid XHTML and CSS.