Eliminar locales inútiles

septiembre 22, 2011 Deja un comentario

Cuando instalas Ubuntu, tiene la manía de configurar una cantidad de locales absurda. Por ejemplo, cuando haces una instalación para Español de España, además te instala los locales para todas las variantes del Español. Y hay muchas. Esto es bastante molesto cuando usas el corrector ortográfico de Firefox, que cuando quieres elegir el idioma te salen la tira.

Para mejorar esto, hay que hacer dos cosas. Por una parte instalar el paquete localpurge:

$ sudo apt-get install localepurge

Que te dará a elegir qué locales quieres conservar, cepilándose el resto.

Por otra parte, para eliminar variantes que no usas en Firefox, ve a la carpeta /usr/lib/firefox-6.0.2/dictionaries y borra los que no vayas a usar. En el caso del Español por lo menos, la cosa tiene su gracia pq todas las variantes de este idioma apuntan a un mismo fichero de diccionario, con lo cual es totalmente absurdo.

Fuentes:

Categorías:Debian, Ubuntu Etiquetas: , ,

Borrar kernels antiguos

marzo 21, 2011 Deja un comentario

Cada vez que nuestro sistema Linux instala una actualización del kernel (o instalamos nosotros uno compilado por nosotros mismos), la versión anterior no es eliminada. Con el paso del tiempo, se acumulan varias versiones del kernel en el mismo sistema. Esto puede suponer un problema si hemos asignado poco espacio a la partición /boot.

En GRUB aparece una linea por cada kernel instalado, aunque sean versiones viejas. Por una parte esto es una ventaja, ya que da la opción de arrancar con un kernel anterior, por si el nuevo nos da problemas. Muy importante cuando compilamos un kernel optimizado por nosotros, o probamos alguna versión o módulo experimental.

Pero una vez testeado, no tiene mucho sentido mantener los kernel anteriores. Veremos una forma sencilla de borrar los kernels que ya no utilizamos en nuestro sistema Debian/Ubuntu, y liberar ese espacio del disco duro.

Para ver las versiones del kernel que hay en tu sistema usaremos este comando:

$ dpkg -l | grep linux-image

Ahora sólo tenemos que ir borrando el kernel junto con sus headers. Por ejemplo, en el caso en el que quisiéramos borrar un kernel 2.6.34 haríamos:

$ aptitude purge linux-image-2.6.34 linux-headers-2.6.34

Recuerda, es muy importante no borrar el kernel actual. Tampoco borres el paquete linux-image-generic presente en las distribuciones Ubuntu.

Y por último, para ver qué versión de kernel estamos usando ejecuta:

$ uname -r

No rompáis nada :)

Categorías:Debian, Ubuntu

Instalar Hot Copy for Linux en Ubuntu

marzo 9, 2011 Deja un comentario

Una vez instalado el paquete en formato APT perfectamente compilado para tu arquitectura, tienes que instalar el módulo precompilado para tu kernel y compilarlo tu mismo. Para la última versión estable de Ubuntu (10.10 – Maverick Meerkat) no hay módulo precompilado, por lo cual hay que hacerlo. Es muy sencillo, ya que existe la utilidad hcp-setup que nos ayuda en esta labor… pero no todo es tan perfecto. Cuando intentas compilar el módulo para el kernel 2.6.35-27-generic da un feo error:

yomismo@kraken:~$ sudo hcp-setup --get-module
Checking for binary module
Waiting                       |
No binary module found
Gathering kernel information
Gathering kernel information complete.
Creating kernel headers package
Checking '/tmp/r1soft-cki.1299670593' for kernel headers
Unable to find a 'include/linux/autoconf.h'. This file is required to build a kernel module
Unable to find a valid source directory.
Please install the kernel headers for your operating system.
To install kernel headers execute:
apt-get install linux-headers-`uname -r`

Dice que no encuentra las cabeceras necesarias para compilarlo e incluso te dice el comando
que has de ejecutar para instalarlas, pero resulta que ya las tengo instaladas. O sea, que algo
raro pasa. El problema es que en el kernel 2.6.35 el fichero autoconf.h está en otro lado:

$ ls /usr/src/linux-headers-`uname -r`/include/generated/

En lugar de este otro:

$ ls /usr/src/linux-headers-`uname -r`/include/linux/

Y es ahí donde falla la rutina que comprueba que los fuentes del kernel estén instalados. A la hora de compilar no afecta donde esté este fichero ya que encuentra la ruta correcta. Sólo es problema del chequéo que hace el instalador. Por tanto la solución es bien sencilla (y podríamos decir cutre):

$ sudo touch /usr/src/linux-headers-`uname -r`/include/linux/autoconf.h

Y listos, hemos creado el fichero autoconf.h donde lo necesita y todo irá como la seda. Lo curioso del invento es que parece que envía los fuentes del kernel a un servidor remoto donde se genera el módulo y luego se lo baja. Supongo que el si otro usuario intenta hacer lo mismo con la misma versión del kernel se limitará a bajar el módulo ya compilado.

Nota: No he conseguido hacer un snapshot, al menos de una partición formateada con ext4 y viendo el log del kernel hay un mensaje aclaratorio:

hcp: ERROR: aborting snapshot, your kernel is broken please downgrade or upgrade, snapshots on block devices with ext4 will cause a dead lock.

con lo cual habrá que esperar a una actualización del kernel. Supongo que debe estar relacionado con este bug: lvm snapshot causes deadlock in 2.6.35.

Categorías:Ubuntu Etiquetas:

Crear un repositorio de Maven

Desde que uso Maven evito, siempre que puedo, incluir los jar de las dependencias en el proyecto. Un buen sitio donde localizar estas dependencias es http://mvnrepository.com/. A veces un proyecto mantiene su propio repositorio de Maven, como es el caso de JBoss, y tienes que registrarlo en el pom.xml:

<repository>
  <id>jboss.com</id>
  <name>JBoss Maven Repository</name>
  <url>http://repository.jboss.com/maven2</url>
</repository>

Pero no siempre pueden encontrar las librerías que necesitas en un repositorio de Maven. En en ese caso puede optar por incluirlas en el fuente de la aplicación y registrarlas manualmente:

$ mvn install:install-file -DgroupId=entagged.audioformats -DartifactId=audioformats -Dversion=0.15 -Dpackaging=jar -Dfile=entagged-audioformats-0.15.jar

O puedes crear tu propio repositorio. En este caso hay distintas herramientas que te ayudarán en la tarea, como Nexus. Pero si eres amante de las cosas sencillas te gustará saber que con un simple servidor web también puedes hacerlo.

Para empezar creamos un usuario al que llamaremos “maven” y en su $HOME también vamos a crear los directorio “repository” y “repository/maven2″. Le tendremos que dar los permisos de lectura pertienentes a Apache porque se encargará de servir las librerías. Por tanto daremos de alta un VirtualHost para tener acceso al repositorio:

<VirtualHost *>
  DocumentRoot /home/maven/repository
  ServerName repository.monkiki.org
</VirtualHost>

Mientra, en nuestro ordenador local hay que editar el fichero ~/.m2/settings.xml para establecer las credenciales que nos permitirán registrar librerías en el repositorio que acabamos de crear.

<?xml version="1.0" encoding="UTF-8"?>
<settings>
  <localRepository>/home/monkiki/.m2/repository</localRepository>
  <servers>
    <server>
      <id>monkiki.org</id>
      <username>maven</username>
      <password>s3cr3t0</password>
    </server>
  </servers>
</settings>

Podemos ir incluyendo librerías así:

$ mvn deploy:deploy-file -DgroupId=entagged.audioformats -DartifactId=audioformats -Dversion=0.15 -Dpackaging=jar -Dfile=entagged-audioformats-0.15.jar -Durl=scp://repository.monkiki.org/home/maven/repository/maven2 -DrepositoryId=org.monkiki

En caso de que la librería tenga dependencias, es buena praxis indicar en el registro el pom de dicha librería para que Maven gestione correctamente estas dependencias transitivas, en lugar de tener que incluirlas artificialmente en el pom.xml de nuestro proyecto. Para ello se utiliza el parámetro:

-DpomFile=/path/to/pom.xml

En los pom.xml de nuestros proyectos, hemos de registrar repositorio de esta manera:

<repositories>
  <repository>
    <id>monkiki.org</id>
    <name>Mi repositorio de maven particular</name>
    <url>http://repository.monkiki.org/maven2</url>
  </repository>
</repositories>

Y esto es todo, amigo!

Ver también:

Categorías:Java, Ubuntu

Compilar pdf2swf con soporte para PDF protegidos

abril 19, 2010 Deja un comentario

Existe una herramienta maravillosa que hace la magia de convertir un PDF a SWF (Flash, para que nos entendamos). Si has usado la herramienta habrás comprobado que no funciona con documentos PDF protegidos dando este error:

FATAL   PDF disallows copying

Pero gracias a que tenemos acceso al código fuente de la aplicación, podemos lo modificar para que se salta dicha comprobación. En concreto tenemos que editar el fichero lib/pdf/pdf.cc y comentar las líneas 136 y 137:

if(!pi->config_print && pi->nocopy) {msg("<fatal> PDF disallows copying");exit(0);}
if(pi->config_print && pi->noprint) {msg("<fatal> PDF disallows printing");exit(0);}}

La versión de GCC que viene por defecto en Lucid Lynx (GCC-4.4) no se lleva bien con el código fuente de SWFTools 0.9.0 por lo que tenemos que instalar una versión anterior:

$ sudo aptitude install build-essential gcc-4.3 g++-4.3

Adicionalmente hay que instalar unas librerías de desarrollo:

$ sudo aptitude install libungif4-dev libfreetype6-dev

Y ya que estamos lo compilamos estático para que corra sin problemas en cualquier otro Linux.

$ CC=/usr/bin/gcc-4.3 CXX=/usr/bin/g++-4.3 LDFLAGS="-static" ./configure

Más información en:  http://www.foolabs.com/xpdf/cracking.html

Actualización: En la versión 0.9.1 hay que modificar el fichero src/jpeg.c cambiando la línea

int jpeg_load_from_mem(unsigned char*_data, int size, unsigned char*dest, int width, int height)

por esta otra:

int jpeg_load_from_mem(unsigned char*_data, int size, unsigned char**dest, int *width, int *height)

Categorías:Ubuntu

Captura y edición de vídeo con Ubuntu

marzo 30, 2010 2 comentarios

Hago vídeos muy de cuando en cuando y luego resulta que no me acuerdo exactamente cómo los edité en Linux. Además que antes usaba Kino y ahora hay aplicaciones más simples de usar como OpenShotPitivi.

Como mi cámara tiene ya sus añitos, no graba directamente en MPEG por lo que es necesario importar ese vídeo hacia el ordenador usando Firewire (IEEE 1394). Además que el vídeo está entrelazado. Debido a un pequeño lío de permisos con el dispositivo de captura, es necesario hacerlo como root para simplificar:

$ sudo dvgrab -a -f avi

Así irá generando ficheros en formato AVI divididos por escenas, ya que es mejor troceado que un pedazo de fichero enorme.

Nota: Según he podido comprobar empíricamente, da mejores resultados hacer un desentrelazado previo y trabajar con estos vídeos mejorados en Pitivi:

$ ffmpeg -i dvgrab-xxx.avi -threads 0 -deinterlace -vcodec huffyuv -pix_fmt yuv422p -acodec copy di_dvgrab-xxx.avi

Para la edición y montaje he preferido usar Pitivi, que aunque tiene menos funcionalidades que OpenShot, ha demostrado ser más estable. Además el formato de los ficheros proyectos es XML con lo que en un momento dado puedes tocarlo si has cambiado los ficheros de lugar. Parece una tontería, pero me ha pasado algunas veces.

Como Pitivi es más bien limitadito, lo único que haremos será juntar los trozos de vídeo haciendo un fade-in / fade-out manual, o sea, editando la línea roja de nivel añadiendo puntos de inflexión con un doble click. Es más complicado de describir que de hacer. Y si queremos ponerle carátula y créditos al final, con Gimp se puede hacer una imagen que se puede insertar en el vídeo. El tamaño adecuado lo conseguimos en Archivo > Nuevo > Plantilla > PAL – 720×576.

El renderizado del proyecto lo haremos en formato OGG (theoraenc, vorbisenc), que es el formato que viene establecido por defecto. El fichero resultante es gordito, pero con poca pérdida de calidad. Luego lo pondremos a dieta.

Por último vamos a codificar la película resultante con HandBrake, con el que además de conseguir un nivel de compresión chachi sin pérdida notable de calidad también desentrelazará las imágenes quedando listo para regalo. En formato elegimos MP4 y en Presets la opción Regular > High Profile.

Nota: Si hemos hecho el desentrelazado previamente como recomendábamos, basta con seleccionar el perfil Regular > Normal.

Nota 2: Mi cámara tiene la posibilidad de grabar en formato 16:9 y entonces la cosa cambia:

$ sudo dvgrab -a -f avi

$ ffmpeg -i dvgrab-xxx.avi -threads 0 -deinterlace -vcodec huffyuv -pix_fmt yuv422p -acodec copy -aspect 16:9 di_dvgrab-xxx.avi

El amigo Pitivi tiene problemas para trabajar con este formato (los vídeos salen estirados como un churro) y no me queda otra que trabajarlos con OpenShot, el cual he podido comprobar gratamente que funciona mejor con esta última versión.

Nota 3: Vale, pues otro descubrimiento más. Si lo desentrelazo así:

ffmpeg -i dvgrab-xxx.avi -threads 0 -deinterlace -vcodec huffyuv -pix_fmt yuv422p -acodec copy -aspect 16:9 -s 720x406 di_dvgrab-xxx.avi

Sí que funciona correctamente con Pitivi. El detalle es forzar el tamaño final de la imagen, que es como debería ser.

Categorías:Ubuntu Etiquetas: , ,

Personalización de campos en Mantis

marzo 12, 2010 4 comentarios

Mantis es un gestor de bugs (bugtracking system) escrito en PHP que llevo usando desde hace años. Visualmente no es gran cosa pero funciona realmente bien y es lo bastante flexible como para adaptarse a las necesidades que he ido teniendo. Últimamente lo he configurado para añadir un nuevo campo a los bugs que se van reportando en el gestor documental OpenKM.

Vamos a Manage > Manage Custom Fields. En el input escribimos el nombre del nuevo campo que en este caso sería Browser. Saltará a una nueva página en la que podemos describir los parámetros del este campo, como el tipo, posibles valores, etc. Elegimos el tipo Enumeration porque queremos que sea un desplegable desde donde el usuario podrá seleccionar el nombre del navegador. Así agilizamos la entrada de datos y eliminamos posibles errores de escritura. Y dentro de posibles valores escribe:

|Firefox|Explorer|Chrome|Safari|Opera

Como ves, los distintos valores se separan por el carácter pipe. El primero al no haber nada representa el valor vacío. El resto de opciones las podemos dejar tal y como están.

Un poco más abajo hay otro formulario que permite ligar este campo a un proyecto. De esta forma cada proyecto puede tener sus propios campos personalizados. Este campo aparecerá por defecto al final. Si nos va bien así ya hemos acabado, pero si eres un poco quisquilloso y quieres que aparezca esta nueva columna en el listado de bugs tendrás que sequir leyendo.

Vamos a Manage > Manage Configuration. Como quiero que esta personalización esté para todo el mundo, el parámetro Username lo pongo a “All Users”. En Project Name puedo elegir que se aplique a un sólo proyecto o a todos. Esto ya depende de cómo te lo quieras montar.

Por defecto los valores son:

array ( selection, edit, priority, id, sponsorship_total, bugnotes_count, attachment, category_id, severity, status, last_updated, summary )

Y como quiero que haya una nueva columna con el tipo de navegador, en Configuration Option pones “view_issues_page_columns” y en Value esto:

array ( selection, edit, priority, id, sponsorship_total, bugnotes_count, attachment, category_id, custom_Browser, severity, status, last_updated, summary )

Puedes encontrar más información sobre configuración de Mantis en su manual online.

Categorías:Java, Ubuntu

Instalación y uso del DNI electrónico en Ubuntu

febrero 9, 2010 1 Comentario

Supongamos que tenemos un DNI electrónico y un lector compatible. Veamos cómo hacerlo funcionar en Ubuntu Linux Karmic Koala. No te asuste que es más fácil de lo que pueda parecer.

En primer lugar hay que dirigirse al Portal Oficial sobre el DNI electrónico para descargar los paquetes para nuestro Sistema Operativo favorito que, por esta vez, los señores del Gobierno Español han tenido a bien ofrecernos. A día de hoy están disponibles para Ubuntu Jaunty Jackalope, pero funcionarán en Karmic Koala sin problemas.

Hay un archivo TAR donde se encuentran 3 paquetes, los cuales deben instalarse en el siguiente orden:

  • libopensc2_0.11.7-7_i386.deb
  • opensc_0.11.7-7_i386.deb
  • opensc-dnie_1.4.6-2_i386.deb

Como en Karmic vienen versiones más nuevas de estos paquetes, tendremos que bloquearlos para que no se actualicen de formas automática y todo deje de funcionar:

$ echo -e "opensc hold\nlibopensc2 hold" | sudo dpkg --set-selections

Adicionalmente también te aconsejo instalar los siguientes paquetes:

$ sudo aptitude install libccid libpcsclite1 pcscd pinentry-gtk2 mozilla-opensc pcsc-tools

Ahora enchufamos el aparato y comprobamos que lo puede usar:

$ pcsc_scan

Debe salir algo como:

PC/SC device scanner
V 1.4.15 (c) 2001-2009, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.4.102
Scanning present readers...
0: SCM SCR 3310 00 00

Tue Feb  9 18:34:05 2010
 Reader 0: SCM SCR 3310 00 00
 Card state: Card removed,

Y si insertamos el DNIe parpadeará la luz verde del lector y saldrán algunos mensajes más en la consola.

Ahora veamos como configurar Firefox para que podamos acceder a las aplicaciones web que hacen uso de esta tenología. Cuando instalaste el paquete opensc-dnie, se creó una nueva entrada en el menú localizada en Aplicaciones > Oficina > Registrar módulo DNIe PKCS#11. De modo que hacemos click ahí y se abrirá una ventana en el navegador como esta:

en la que deberemos marcar todos los checkbox y darle a Aceptar. Puedes ver cómo se ha añadido el certificado en Editar > Preferencias > Avanzado > Cifrado > Ver certificados > Autoridares > DIRECCION GENERAL DE LA POLICIA. Ahora ya estás listo para probar tu DNIe, de modo que ve a compruebe su DNI (si te da un error de Conexión segura fallida prueba con el Censo Electoral).

Más info en:

Categorías:Ubuntu Etiquetas:

Backup automáticos con rsync

enero 29, 2010 5 comentarios

¿Quién no ha perdido alguna vez documentos o fotos por no tener un backup? Las copias de seguridad no se echan en falta hasta que se necesitan. Y por mucho que te digan, hasta que no pasa una catástrofe no te las tomas en serio.

Cuando te dedicas a la administración de sistemas las copias de seguridad es algo a tener muy presente. No le puedes decir a un cliente que has perdido todo sus datos y seguir durmiendo por las noches. En este caso siempre se suele recurrir al demonio cron a quien no se le pasa una.

En el caso de un ordenador de casa la cosa cambia porque no suele estar encendido siempre. Y tampoco es aconsejable por el bien de la capa de ozono :) De modo que hay que enfocar el problema desde otro punto de vista.

Yo, por ejemplo, tengo dos discos duros así que uso el segundo (más pequeño, por cierto) para copias de seguridad de ciertos directorios que me interesan. Como no quiero perder nada, quiero que se ejecute el script de backup al apagar la máquina.

Para empezar creo un fichero que será el encargado de tan magna tarea:

$ sudo vim /etc/init.d/backup.sh

El cual contendrá algo así como esto:

#! /bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin

case "$1" in
  start)
    # No-op
    ;;
  stop)
    rsync -apzhHR --delete --exclude=*~ --delete-excluded <src> <dst>
    ;;
  *)
    echo "Usage: $0 stop" >&2
    exit 3
    ;;
esac

Nótese que el proceso de backup se ejecuta en la acción stop, o sea, cuando se apaga la máquina. Si quisiéramos ejecutarla al iniciarla tendría que hacerse en la acción start.

Por supuesto hay que hacerlo ejecutable:

$ sudo chmod +x /etc/init.d/backup.sh

Y lo registramos para que se ejecute en los runlevel por defecto:

$ sudo update-rc.d backup.sh defaults

Aquí van algunos enlaces interesantes sobre rsync:

Categorías:Ubuntu

Frontends basadas en web para el Android Market

diciembre 17, 2009 Deja un comentario

Hay varios frontends de Android Market que permiten buscar y ver la descripción, capturas y comentarios de las aplicaciones. Es más cómodo de usar que el market del móvil pro cuestiones obvias :) También muestran junto a cada aplicación su QR Code correspondiente. Este tipo de código se puede leer con la aplicación Barcode Scanner la cual lo interpreta y permite localizar la aplicación asociada en el Market del móvil, simplificando la instalación de la misma.

  • http://www.cyrket.com/ Este fue el pionero en este mundillo. El diseño era más bien cutre pero cumplía a la perfección su cometido. Rápido y funcional. Es una lástima que ya no funcione. Según he visto por distintos foros, parece que un cambio en el API de la última versión del Android Market le impidió seguir ofreciendo este servicio. Por lo menos podrían haber puesto un mensaje en la página, porque no se ve nada.
  • http://www.androlib.com/ Luego entró este web en juego, el cual da mucha información pero a mi personalmente me parece sobrecargado y lento. Quizá sea debido a que tiene más publicidad que una película de estreno de Antena 3. No me gusta, qué le vamos a hacer! El único atractivo que le veo es que tiene una zona donde hay estadísticas sobre descargas de aplicaciones, puntuaciones, distribución de aplicaciones y juegos, y aplicaciones de pago y gratuitas.
  • http://www.androidzoom.com/ Y por obra y gracia del Espíritu del Pingüino Revoloteador, encontré este otro sitio. Su diseño limpio y minimalista hizo que me prendara de él. Tiene lo justo de publicidad para no agobiar al usuario. Es rápido y no se cansa uno de usarlo. Sin duda la mejor opción en estos momentos.

Una funcionalidad que hecho en falta en el Market es una jerarquía de aplicaciones algo más trabajada, vamos más segmentada. Hay grupos como Aplicaciones > Ocio en los que hay más de 3000 aplicaciones. Ya me dirás lo cómodo que es ir de una en una mirando a ver qué hace.

Categorías:Android
Seguir

Get every new post delivered to your Inbox.