Entries for Debian
Synaptic: No se pudieron analizar o abrir las listas de paquetes o el archivo de estado
1 April 2012
Al abrir Synaptic me he encontrado con el siguiete error:
E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_precise-security_main_binary-i386_Packages
E: No se pudieron analizar o abrir las listas de paquetes o el archivo de estado.
E: _cache->open() failed, please report.
La solución:
$ sudo rm /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_precise-security_main_binary-i386_Packages
Bindings Python para bibliotecas C: Argumentos (Parte 4)
28 March 2012
Continuando con el ejemplo de ayer, hoy voy a explicar cómo podemos parsear los parámetros de entrada. El estado actual es que hemos definido unos prototipos y los hemos añadido al módulo. Ahora vamos a darle contenido a las funciones add y hello.
Ejemplo en GitHub: mema_methods.
Bindings Python para bibliotecas C: Métodos (Parte 3)
27 March 2012
Ayer explicaba cómo se monta una estructura básica para crear un módulo. Pero para que el módulo sirva para algo, tendremos que añadir funciones.
Ahora vamos a ver cómo podemos crear nuevas funciones y cómo integrarlas al módulo mema. El objetivo para hoy será crear dos funciones: hello y add.
El resultado debería ser algo similar a lo siguiente:
>>> import mema
>>> mema.hello()
Hello mema!
>>> mema.hello('Vicente')
Hello Vicente!
>>>
>>> from mema import add
>>> add(1, 2)
3
>>> add(400, 4)
404
>>>
Ejemplo en GitHub: mema_methods.
Preparar un Alix para exposiciones: Gráficos y gestión de energía (Parte 3)
26 March 2012
Una vez que tenemos listo todo el tema de gráficos . y automatizado el proceso de arranque, toca empezar con detalles estéticos. Para ello, debemos evitar situaciones cómo un salvapantallas o que el monitor se apague.
Recordad que estamos en un entorno en el que no tenemos teclado ni ratón, por lo que en seguida, el sistema operativo pensará que no hay actividad en el equipo.
Bindings Python para bibliotecas C: Módulos y compilación (Parte 2)
26 March 2012
La semana pasada empecé ha hablar sobre los Bindings en Python. Hoy vamos a ver cómo es una estructura muy básica, cómo compilar y probar que todo funciona.
Un problema que me estoy encontrando, es que el API C de Python ha ido cambiando con las versiones. Entonces, muchos ejemplos que he encontrado no compilan y hay código muy diferente por ahí.
Inicialmente voy a centrarme en Python 2.7 (última versión de la rama 2.x) y si encuentro tiempo, haré lo mismo para Python 3.
Ejemplo en GitHub: mema_bare.
Bindings Python para bibliotecas C: ¿Qué son? (Parte 1)
23 March 2012
Hoy voy a hablar acerca de bindings para Python. Un binding es un módulo Python, escrito en lenguaje C, que permite realizar llamadas a funciones en C desde un script hecho en Python. Se puede ver como un "puente" desde C a Python.
Pueden existir distintos motivos para desear hacer un binding. En principio, puede parecer un poco contraproducente, ya que se pierde portablidad
Entonces, ¿por qué crear un binding? Bien es sabido por todos que C es más eficiente que Python, por tanto, si se trata de una parte crítica de una aplicación, perfectametne se puede hacer el procesamiento en C y dejar Python para la lógica.
Otra razón es aprovechar código existente en C. Como comenté, estoy trabajando en libemqtt, la cuál está escrita en C. Podría hacer una nueva implementación completa en Python, pero teniendo el código disponible, lo lógico es hacer un binding.
Los próximos días intentaré escribir una pequeña guía sobre cómo hacer un binding para esta bibliotecta.
Actualización (27/03/2012): He creado un repositorio en GitHub con los ejemplos que estoy implementando:
https://github.com/menudoproblema/menudoproblema-examples/tree/master/python/bindings
Preparar un Alix para exposiciones: Automatizando (Parte 2)
29 February 2012
Vamos a seguir preparando nuestra Alix. En la última entrega explicamos cómo instalar un servidor gráfico y un escritorio.
Ahora, lo siguiente es ver cómo automatizar ciertas tareas. Recordad que el objetivo es tener este dispositivo de cara al público, por lo que es muy importante que todo esté automatizado. La mayor restricción es que no habrá teclado ni ratón disponible, sólo una pantalla.
Autoarranque de aplicaciones en LXDE
29 February 2012
Hace unos días escribía sobre cómo instalar LXDE sobre Debian e iniciar sesión de forma automática. Ahora voy a tratar de explicar cómo podemos automatizar el arranque de aplicaciones a la hora de cargar el escritorio.
Montando particiones de una imagen de disco duro
26 February 2012
Hace un rato escribía cómo realizar copias de seguridad en una CompactFlash en un fichero de imagen. En alguna ocasión puede ser interesante montar esta imagen para extraer o copiar información. Al no tratarse de una imagen de una partición (es decir, no contiene directamente un sistema de ficheros), es necesario hacer alguna filigrana para poder montar la partición.
Copias de seguridad de CompactFlash
26 February 2012
Estos días he estado trabajando bastante con Alix y conté cómo hacer una instalación de Debian en una CompactFlash. Evidentemente, una vez que la imagen esté lista, el paso lógico es hacer una copia por si es necesario restaurarla en otra tarjeta de memoria.
Para ello, he utilizado dd. Esta herramienta viene en todas las distribuciones de Linux y nos permite hacer lecturas raw sobre dispositivos de bloques. Para ello, sólo hay que decirle de dónde tiene que leer (if - input file) y dónde tiene que escribir (of - output file).
Si no se especifica el número de bloques que se quieren copiar (count), por defecto se copia el fichero completo (tened en cuenta que el Linux, los dispositivos se tratan como ficheros). Además, se puede indicar el tamaño del bloque (bs - block size), para optimizar la velocidad de copia.
Volviendo al tema, para realizar una copia bastará con ejecutar lo siguiente:
$ sudo dd if=/dev/sdc of=Alix.1D.Debian-20120226.img bs=4096
Esto realiza la copia de todo el contenido del dispositivo sdc (en mi caso es el de la CompactFlash) en el fichero Alix.1D.Debian-20120226.img, usando un tamaño de bloque de 4KB.
Para restaurar la copia de la imagen en la tarjeta, es tan sencillo como intercambiar if y of:
$ sudo dd of=/dev/sdc if=Alix.1D.Debian-20120226.img bs=4096
Activar autologin sin necesidad de XDM, GDM, KDM, etc.
16 February 2012
Usualmente, las distribuciones de Linux utilizan un Display Manager, como pueden ser XDM, GDM ó KDM.
Vamos a editar el fichero /etc/rc.local y añadiremos al final la siguiente línea:
su - user -c startx
donde user es el usuario que arrancará la sesión gráfica.
Para desactivar el arranque automático, bastará con comentar o borrar la línea anterior.
Nota importante
Vamos a entender lo que está pasando aquí. Básicamente, con el método anterior antes de que se llegue a llamar a la consola tty1, "startx" es llamado por rc.local. Así que, básicamente mientras estés en el escritorio no estará disponible la consola de inicio de sesión tty1 (la que se obtiene al pulsar Ctrl-Alt-F1).
Para poder acceder a la consola, habrá que cerrar sesión en el escritorio en cuestión y tendremos acceso a tty1. Podremos volver a acceder al entorno gráfico ejecutando "startx" una vez logueados.
Preparar un Alix para exposiciones: Servidor X (Parte 1)
16 February 2012
Estos días he posteado acerca de cómo instalar y configurar Debian en cualquier Alix. Hoy me voy a centrar en un modelo particular Alix.1D, el cuál trae salida VGA, lo cuál lo hace especialmente atractivo para realizar pequeñas exposiciones, pases de diapositivas, museos, etc.
Para ello, partiendo de una instalación básica como la que ya se ha comentado, en esta serie de artículos trataré de describir muchos de los aspectos que se pueden tener en cuenta.
Invalid MIT-MAGIC-COOKIE-1 key
14 February 2012
Haciendo unas pruebas con el servidor X he me encontrado con un mensaje misterioso error: Invalid MIT-MAGIC-COOKIE-1 key. Para solucionarlo he borrado los archivos .Xauthority de mi directorio personal.
rm ~/.Xauthority*
Instalación de Debian sobre Alix: kernel y gestor de arranque (Parte 2)
14 February 2012
Ayer contaba como podemos hacer una instalación básica de Debian sobre Alix. En concreto, faltó la instalación de un kernel y un gestor de arranque para tener un sistema operativo funcional. Cada uno puede elegir el software y las versiones que quiera. Yo en mi caso particular voy a utilizar la versión estable de linux para 486 y Grub2.
Instalación de Debian sobre Alix: Sistema base (Parte 1)
13 February 2012
Alix es un pequeño PC empotrado que utiliza procesadores AMD Geode LX. Estos equipos son muy pequeños y no se calientan, por lo que no es necesaria refrigeración externa (ni siquiera un ventilador). La limitación de la mayoría de los dispositivos Alix es la falta de salida VGA y el dispositivo de almacenamiento: CompactFlash. Por tanto, la instalación típica se hace desde un PC en la tarjeta de memoria y luego Debian arrancará desde la tarjeta de memoria una vez colocada en Alix.
La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.
