jueves, 31 de mayo de 2012

Si la consola no autocompleta

Acostumbrado a la alta disponibilidad de aplicaciones y repositorios asociados a Debian y sus derivados, además de la gran cantidad de tutoriales disponibles para Ubuntu, se hizo insostenible mantener SUSE como distribución de uso principal.
Instalé Ubuntu en una nueva partición, indicándole cuál partición usar como /home. Sin embargo, pulsar el tabulador en la consola no funcionaba como es lo usual: no se autocompletaban comandos invocados con sudo, no se autocompletaban las opciones de apt-get y aptitude, además de otras molestias menores.
Luego de mucho indagar me di cuenta que el problema yacía en el archivo de configuración de la consola ~/.bashrc que había sido heredado de SUSE.
Bastó ejecutar
cp /etc/bash.bashrc ~/.bashrc
Y luego descomentar el tramo  de autocompletación en consolas interactivas en ~/.bashrc

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi
Ahora sólo hace falta cerrar la consola y abrirla de nuevo. Ya está cargado el nuevo ~/.bashrc

miércoles, 4 de abril de 2012

Ruby on Rails en SUSE

Hace tiempo publiqué un artículo sobre la instalación de Ruby sobre Ubuntu, con RVM. Ahora que estoy siguiendo unos tutoriales sobre Ruby on Rails, ha surgido la necesidad de instalarlo en mi computadora con SLED 11 SP2.
Como precondición para estos pasos, hay que agregar el paquete SDK apropiado a la instalación de SUSE y es posible que también algunos repositorios de la comunidad. Esto está cubierto en más detalle en un artículo anterior.
Los paquetes a instalar son ruby, ruby-devel, rubygems, rubygem-rails y nodejs.
nodejs : http://download.opensuse.org/repositories/devel:/languages:/nodejs/SLE_11_SP1/
ruby: http://download.opensuse.org/repositories/devel:/languages:/ruby/SLE_11_SP2/
ruby-devel: http://download.opensuse.org/repositories/devel:/languages:/ruby/SLE_11_SP2/
rubygems: SLE 11 SDK SP2
rubygem-rails: SLE 11 SDK SP2
Luego de esto, el tutorial funcionó. Para el desarrollo con Rails, deberemos ir instalando los paquetes *-devel correspondientes a las "gemas" que vayamos instalando.
Queda pendiente configurar un buen entorno de desarrollo de aplicaciones.

martes, 3 de abril de 2012

Respaldos con Squashfs

Tengo un montón de archivos en la computadora del trabajo que deseo guardar como referencia, sin que ocupen mucho espacio en disco.
Inicialmente había creado archivos tar.xz, sin embargo abrirlos extraer un pequeño archivo de un contenedor de varios gigas se demora demasiado para mi gusto.
Fue entonces cuando me encontré con un artículo que explica como utilizar SquashFS para este propósito. SquashFS crea un sistema de archivos comprimido de sólo lectura utilizando la librería XZ.
Para saber si nuestro sistema Linux es compatible con SquashFs basta con ejecutar
$ modinfo squashfs
Instalar en Ubuntu
Sólo hace falta instalar el paquete squashfs-tools utilizando el Centro de Software Ubuntu, Synaptic o ejecutando
$ sudo apt-get install squashfs-tools
Instalar en SUSE
Se instala el paquete squashfs utilizando Yast o ejecutando
# zypper in squashfs
Utilizar la herramienta
Luego basta con invocar el programa mksquashfs sobre los directorios a comprimir
$ mksquashfs carpeta1/ carpeta2/ archivo.sfs
Y tendremos el archivo comprimido archivo.sfs cuyo contenido es el de las dos carpetas indicadas en el paso anterior. Para poder acceder la información que allí se encuentra, basta con ejecutar:
$ sudo mount -t squashfs -o loop archivo.sfs /mnt #en Ubuntu
# mount -t squashfs -o loop archivo.sfs /mnt #en SUSE
Ahora para acceder a los archivos solo tenemos que buscarlos en la ruta /mnt
$ cd /mnt
$ ls
Para desmontar el archivo sólo basta ejecutar
$ sudo umount /mnt #en Ubuntu
# umount /mnt #en SUSE
Listo!

lunes, 2 de abril de 2012

Aprendiendo SUSE

Este artículo habla de los primeros pasos a tomar para hacer un sistema SUSE usable para un computista.
Desde hace poco tengo una portátil Compaq, de las que traen Linux preinstalado. Para ser más específico trae SUSE Linux Enterprise Desktop (SLED) 11.
Al principio, quise dejar el SLED 11 para evitar instalar y configurar otra distro. Luego, me di cuenta de que el repertorio de paquetes disponibles en SUSE es ínfimo comparado con los que traen Debian y sus derviados (como Ubuntu).
Sin embargo, el nuevo núcleo 3.x no es del todo compatible con la tarjeta inalámbrica, según mis pruebas con diversos LiveCDs y mis búsquedas en diversos foros de soporte. Por lo tanto, decidí darle otra oportunidad a SLED.
Actualizar
El primer paso es actualizar todos los paquetes del sistema y luego, ir de SLE 11 SP 1 a SLE 11 SP 2. Las instrucciones para llevar a cabo este procedimiento están aquí.
Ampliar
Lo primero que un desarrollador necesita son paquetes de desarrollo como gcc, make, ant, git, bzr,etc. Éstos no están por defecto en los repositorios de SUSE, sino que se encuentran en un producto adicional denominado SLE 11 SP2 Software Development Kit (SDK). Las imágenes ISO deben ser descargadas desde acá, luego de crear una cuenta Novell.
En Yast -> Productos Adicionales se agregan las imágenes ISO ya descargadas, y ya estarán disponibles los paquetes de desarrollo.
Comunidad
SLE no es una distribución orientada a la comunidad, sino a las grandes organizaciones. Esto hace que sea atractivo tener limitadas las aplicaciones que pueden ser instaladas.
Pero, para un usuario avanzado, esto es una molestia terrible. Para aliviarla están los repositorios adicionales de OpenSUSE (la versión comunitaria de SUSE) y su servicio de compilación de programas OpenSUSE Build Service. Debemos seleccionar los paquetes y repositorios destinados a SLE 11, bien sea a secas, SP 1 o SP 2.
Algunos de los repositorios que agregué son: games, security, LibreOffice y Wine.
Otro repositorio disponible es "Packman", el cual ofrece una amplia variedad de aplicaciones para OpenSUSE y una oferta más restringida para SUSE. Se debe seleccionar una de las réplicas a nivel mundial y luego agregar el repositorio adecuado.
Desgraciadamente, no he logrado instalar exitosamente Chromium - mi navegador predilecto - ni Google Chrome.

miércoles, 2 de noviembre de 2011

Crear libros DjVu a partir de imágenes

En el trabajo nos repartieron el material para un curso interno como un archivo comprimido RAR lleno de las imágenes JPEG. El archivo RAR pesaba poco más de 170 MiB.
Mi primera reacción fue cambiarle la extensión y convertir el archivo en un CBR, sin embargo, leer el archivo con Evince se hacía tedioso debido al alto tiempo de carga entre imágenes.
Luego, recordé que el formato DjVu es particularmente bueno para almacenar libros digitalizados. Una vez que me topé con un manual de WikiCommons adapté el procedimiento. A continuación los pasos que seguí:
  1. Organizar en carpetas: Así se facilita procesar masivamente los archivos y se evita reescribirlos o traspapelarlos accidentalmente. Los comandos utilizados fueron:
    mkdir jpeg
    mv *.jpeg jpeg/
    mkdir pbm
    mkdir limpio
    mkdir djvu
  2. Convertir los JPEG a PBM de tamaño uniforme: Como algunas páginas estaban digitalizadas con una resolución de 5100x7033 y otras en 2550x3517, decidí estandarizarlas a 2550x3517, que resultaba suficientemente legible. El formato PBM es ideal para páginas digitalizadas sin color ya que es binario: blanco o negro (sin escala de grises). El comando utilizado, desde la carpeta que contiene todas las imágenes JPEG fue:
    cd jpeg/
    find -type f -exec convert {} --resize 2550x3517 ../pbm/{}.pbm \;
    cd ..
  3. Limpiar los archivos PBM: Los archivos que me hicieron llegar contenían páginas torcidas, se veía la junta entre páginas, páginas manchadas, etc. Para limpiarlas se ejecuta:
    cd pbm/
    find -type f -exec unpaper --layout single {} ../limpio/{} \;
    cd ..
  4. Convertir a formato DjVu: Ahora cada página se convierte en un archivu DjVu individual, utilizando los comandos:
    cd limpio/
    find -type f -exec cjb2 -clean {} ../djvu/{}.djvu \;
    cd ..
  5. Juntar el libro en un archivo DjVU: Finalmente, se unen todas las páginas DjVu individuales en un sólo archivo de múltiples páginas, utilizando el comando:
    djvm -c libro.djvu djvu/*
  6. Agregar capa de texto: Opcionalmente se le puede agregar al libro digital una capa de texto que facilite su accesibilidad y el copiado de texto, utilizando el comando (nótese que "eng" se debe a que el libro está en inglés):
    ocrodjvu -o libro-ocr.djvu libro.djvu --language=eng
El libro completo sin capa de texto pesaba apenas 2 MiB y con capa de texto 2,2 MiB, lo cual representa menos de 1.30% de los 170 MiB originales.
Las dependencias de este manual se pueden instalar en Ubuntu, Debian o sus derivados ejecutando, como administrador (o con sudo), la siguiente instrucción:
apt-get install imagemagick unpaper djvulibre-bin ocrodjvu --install-recommends
En caso de que el texto del libro no se encuentre en inglés, se debería instalar también el paquete tesseract-ocr-??? apropiado.

domingo, 25 de septiembre de 2011

Sincronizar teléfonos Blackberry en Linux

Una de las debilidades de Linux es la sincronización de los teléfonos móviles con el sistema. Existen algunas aplicaciones como Gammu/Wammu para los teléfonos Nokia, y seguro hay algo por allí para los teléfonos con Android. Yo pensé que mi BB y mi PC estaban condenadas a sólo conectarse como unidad de almacenamiento externa, pero encontré un proyecto que está muy bien encaminado para saldar esta brecha.
Se trata de Linberry, una aplicación en español desarrollada para Ubuntu y compatible con otras plataformas Linux. La puedes descargar acá. Permite sincornizar diversos datos de usuario e incluso utilizar el teléfono como modem.
Otra opción, de la cual he leído algo pero todavía no he probado es barry. Sería interesante ver una comparación de funcionalidades de ambas opciones.

sábado, 4 de junio de 2011

Metaesploit con Ubuntu y RVM

He decidido practicar pruebas de penetración de sistemas informáticos, y para ello una de las herramientas en boga es el marco Metaesploit. Hasta ahora lo había utilizado con la distribución de seguridad Backtrack, pero prefiero instalarlo en mi sistema Ubuntu (10.04 LTS) de uso diario. Como esta herramienta fue programada en Ruby, hace falta instalarlo en nuestro sistema. Hace no tanto que publiqué un artículo documentando este proceso.
Ruby

Si no se tiene instalado Ruby
Es necesario modificar ligeramente los pasos indicados en el artículo. Después de 6 se ejecuta:
sudo aptitude install libssl-dev
Y el paso 7 se sustituye por:
rvm install 1.9.2 --with-openssl-dir=/usr/lib
Después se puede continuar con los siguientes pasos.

Si ya se siguió esta guía con anterioridad
Va a ser necesario agregarle soporte SSL a la instalación de Ruby. Para ello se instala el paquete con las cabeceras de SSL:
sudo aptitude install libssl-dev
Luego, se compila la extensión de Ruby para SSL
cd ~/.rvm/src/ruby-1.9.2/ext/openssl
ruby extconf.rb make && make install
Si ya se tiene un ambiente Ruby con SSL activado
Se puede saltar al siguiente paso.
Metaesploit
Se descarga el paquete de Metaesploit para UNIX desde el sitio web.
Se descomprime el paquete bien sea utilizando la interfaz gráfica, o el comando:
tar -xvjf framework-XXXX.tar.bz2
Se accede a la carpeta
cd msf3
./msfconsole
¡Listo! Metaesploit con RVM en Ubuntu
Referencias
http://cjohansen.no/en/ruby/ruby_version_manager_ubuntu_and_openssl
http://beginrescueend.com/packages/openssl/