TrueCrypt: problemas con Nautilus en Slackware

Pues como dice el título, al intentar abrir un directorio montado con TrueCrypt desde el menú contextual del ícono de la bandeja del sistema aparece el siguiente error:

TrueCrypt: No existe el fichero o el directorio

TrueCrypt: No existe el fichero o el directorio

Esto solo en Xfce por que en KDE me funciona a la perfección. La causa del error mostrado es fácil de adivinar: en mi instalación de Slackware no se encuentra Nautilus, así que vamos a solucionarlo.

Las opciones que se me ocurren son:

  1. Instalar Nautilus.
  2. Hacer un enlace simbólico de Thunar – Nautilus.
  3. Hacer un script con el nombre de Nautilus que cargue Thunar.

Como no deseo instalar Nautilus en Slackware (eso me suena muy raro), elijo la opción 2 simple, astuto y elegante… pues no tanto porque TrueCrypt llama a Nautilus con la siguiente instrucción:

/usr/bin/nautilus --no-default-window --no-desktop /media/truecrypt1

Lo cual nos provocará otro error:

Thunar: Unknown option --no-default-window

Así que para solucionarlo vamos por la opción 3. Este sería el script:

#!/bin/bash
exec thunar $3
exit 0

Para que funcione hay que llamarlo «nautilus» y colocarlo en el directorio de ejecutables:

/usr/bin/nautilus

Script que reemplaza a /usr/bin/nautilus

Script que reemplaza a /usr/bin/nautilus

Problema resuelto.

Fuente:

Thread de ArchLinux

xfce4-xkb-plugin: Parche para teclado en español latino

El SlackBuild oficial de xfce4-xkb-plugin para la versión 0.5.4.3 tiene un bug en el cual no es posible poner la distribución de teclado «latam» o español latino. El bug hace que xfce4-xkb-plugin se cierre al tratar de cambiar la distribución del teclado a español latino, por lo cual es imposible usarla.

Estos días he tenido que estar usando el teclado en español de españa. Esto me sacaba del apuro pero me era incómodo estar escribiendo por ejemplo los acentos, que se escriben «asì» con distribución del teclado de españa pulsando la misma tecla en la que se encuentra el acento en la distribución latina para escribirlos «así».

Por lo tanto me di a la tarea de buscar una solución. Lo primero que encontré fue este sitio, en donde se reporta el bug (para la distribución Ubuntu) y además se publica un parche.

Teniendo la solución frente a mí (el parche) puse manos a la obra. ¿Cómo procedí? Bueno pues modificando el SlackBuild para la compilación de xfce4-xkb-plugin.

Editando el archivo xfce4-xkb-plugin.SlackBuild

Editar el archivo es tan sencillo como descargar las fuentes y el tarball del SlackBuild desde http://slackbuilds.org/repository/14.0/desktop/xfce4-xkb-plugin/ y extraer el SlackBuild.

$ tar -xvzf xfce4-xkb-plugin.tar.gz

Y mover el archivo con el código fuente al directorio creado:

$ mv xfce4-xkb-plugin-0.5.4.3.tar.bz2 xfce4-xkb-plugin

Luego hay que descargar el parche y colocarlo en el mismo directorio donde se extrajo el SlackBuild.

$ wget https://bugs.launchpad.net/ubuntu/+source/xfce4-xkb-plugin/+bug/899290/+attachment/2677972/+files/xfce4-xkb-plugin-fix.patch

Preparando el parche de xfce4-xkb-plugin

Preparando el parche de xfce4-xkb-plugin

Ahora editar el SlackBuild:

# gvim xfce4-xkb-plugin.SlackBuild

Y colocar la siguiente línea antes de la instrucción configure:

patch -p1 < $CWD/xfce4-xkb-plugin-fix.patch

Quedando:

Editando el SlackBuild de xfce4-xkb-plugin

Editando el SlackBuild de xfce4-xkb-plugin

Ejecutar el SlackBuild, no llevará más de cinco minutos el proceso de compilación:

# ./xfce4-xkb-plugin.SlackBuild

Una vez creado el paquete, resta actualizarlo.

# upgradepkg /tmp/xfce4-xkb-plugin-0.5.4.3-i486-2_eco.tgz

Actualizando el paquete creado de xfce4-xkb-plugin

Actualizando el paquete creado de xfce4-xkb-plugin

Listo, ya tenemos el paquete actualizado.

Resultado

Ahora se puede cambiar sin ningún problema la distribución del teclado a español latino «latam» en cualquier momento.

xfce4-xkb-plugin funcionando con la distribución latam

xfce4-xkb-plugin funcionando con la distribución latam

Problema resuelto.

Descarga el SlackBuild

Si deseas descargar el SlackBuild esta disponible en mi cuenta de github.com en la siguiente dirección:

https://github.com/ecoslacker/Slackware-Hacks/tree/master/SlackBuilds/xfce4-xkb-plugin

Puedes usar:

git://github.com/ecoslacker/Slackware-Hacks.git

Ten encuenta que solo lo he probado en mi laptop con Slackware 14.0 x86 o de 32 bits y me tomé la libertad de personalizarlo, así que úsalo bajo tu propio riesgo.

Saludos.

SlackBuild para Quantum GIS 1.8.0 en Slackware 14

He estado trabajando mucho con QGIS últimamente, sin embargo en mi trabajo uso QGIS 1.8.0 (en Windows) y en mi casa QGIS 1.7.4 (en Slackware) por lo tanto pierdo compatibilidad en mis proyectos al pasarlo de una máquina a otra.

Dada esta situación, me di un tiempo para actualizar el QGIS de mi laptop. Lo primero con que me topé fue que no encontré un paquete compilado de la versión 1.8.0 para Slackware y tampoco un SlackBuild. La opción fácil hubiese sido convertir un paquete rpm, o usar la compilación «manual» (make && make install), sin embargo decidí otra aún más fácil que me ayudaría a administrar el paquete nativamente con las herramientas de Slackware: modificar el SlackBuild existente.

Gracias al tipo de licencia en la que se encuentra el script es posible tomar el código como base y modificarlo para obtener lo que uno necesita. Aquí es cuando el verdadero valor del software libre y de fuente abierta es apreciado.

Como no he escrito un SlackBuild, no tengo la experiencia necesaria para hacer uno para Quantum GIS, lo único que he hecho con estos scripts ha sido estudiarlos un poco y por lo tanto se mas o menos como modificarlos.

INICIANDO

Modifiqué el script y lo ejecuté, en mi primer intento obtuve errores como los siguientes:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
SPATIALITE_INCLUDE_DIR
used as include directory in directory /tmp/SBo/qgis-1.8.0/src/plugins/offline_editing
SPATIALITE_LIBRARY`
linked by target "offlineeditingplugin" in directory /tmp/SBo/qgis-1.8.0/src/plugins/offline_editing

-- Configuring incomplete, errors occurred!

Para solucionarlos se necesita instalar dos librerías: libspatialindex y libspatialite. Así que instalé la primera.

# sbopkg -ri libspatialindex

Esto disminuyó el número de errores en la segunda ejecución del SlackBuild y confirmé que instalar las librerías tenia éxito, así que fui con la siguiente. libspatialite que requiere proj, geos (ambos ya instalados) y frexl, así que solo ejecuté sbopkg para instanlar lo que necesitaba.

# sbopkg -i "freexl libspatialite"

Como falló la descarga del código fuente, lo descargué de aqui: http://www.gaia-gis.it/gaia-sins/freexl-sources/ , escogí el archivo que tiene la letra «d» ya que es el que está en el sitio de SlackBuilds.

Extraer el código fuente, ejecutar manualmente el SlackBuild…

$ tar -xvzf freexl.tar.gz

$ cd freexl

# ./freexl.Slackbuild

…y finalmente instalar el paquete:

# installpkg /tmp/freexl-1.0.0d-i486-1_SBo.tgz

Ahora si instalar lo que queríamos.

# sbopkg -i libspatialite

FINALMENTE QGIS

Ya que se instalaron los requerimientos de compilación, descargué el SlackBuild de Quantum GIS del sitio de SlackBuilds, primero tuve que cambiar el número de la versión a 1.8.0, luego comentar/eliminar la parte de la aplicación de un parche para la versión 1.7.4 y cambiar la palabra «CHANGELOG» por «ChangeLog» en el SlackBuild (en las últimas líneas de código).

$ tar -xvjf qgis-1.8.0.tar.bz2

$ cd qgis

# ./qgis.SlackBuild

# installpkg /tmp/qgis-1.8.0-i486-1_eco.tgz

Ejecuté el SlackBuild de QGIS y luego instalé el paquete, esta es la prueba de mi éxito:

qgis18

DESCARGA

Se que tal vez haya pocos interesados en lo mismo que yo, sin embargo, si alguno de ustedes desea usar el SlackBuild modificado, he decidido compartirlo y lo pueden encontrar en: https://github.com/ecoslacker/Slackware-Hacks

Claro que esto solo está probado en mi computadora con Slackware 14 x86 o de 32 bits, úsalo bajo tu propio riesgo pues es la primera cosa que hago por el estilo.

PD: Hay un error que hace que Quantum GIS se cierre al dar click en el menú About o Acerca de, aún no se como solucionarlo pero ando investigando.

Saludos

Aplicaciones en Python y Qt en Slackware Linux

Me sentí un poco mal por andar haciendo mis (muy pocas) aplicaciones en GTK siendo que soy un usuario en serio de KDE pero no tan fan como para Chakra, así que me decidí a probar Qt solo por curiosidad. Primero como me gusta programar en Python pues intenté hacerlo usando Qt sin cambiar de lenguaje y para ello necesité instalar el PyQt4 que para Slackware 13.37 encontré en:

PyQt4
Ir a éste enlace o descargar directamente de aquí.

Luego la herramienta necesaria para crear las interfaces gráficas de las aplicaciones en el Qt Creator el cual se puede descargar para Slackware desde aquí e instalar de la manera ya muy conocida para los SlackBuilds, sin embergo decidí hacerlo automáticamente desde el terminal con:

# sbopkg -i qt-creator

Una vez instalado en el sistema se creará un nuevo elemento en la sección de Desarrollo en el menú de KDE que se llama Qt Creator IDE, al dar clic en éste elemento se abre la aplicación que luce algo por el estilo:

Qt Creator

Qt Creator

Bueno ya teniendo instalado ambos paquetes resta ponerse a producir algo de código, y eso se empieza creando un nuevo proyecto en el menú File > New File or Project…. En la ventana que se abre se puede crear un proyecto completo el cual consiste de varios archivos para hacer una aplicación en C++, sin embargo como se desea trabajar con Python no es necesario hacer todo el proceso, simplemente basta con crear un archivo UI para la interfaz gráfica en el que se pondrán todos los Widgets de la aplicación y más tarde agregar el código en Python que hará que dicha aplicación «haga algo» y sea útil.

Para crear un archivo .ui con la interfáz gráfica de la aplicación hay que seleccionar Qt en la parte de la ventana que dice Files and Classes y luego en Qt Designer Form que está en la parte superior, dar clic en Choose…

Crear archivo en Qt

Crear archivo en Qt

Pedirá seleccionar un template, como se hará una nueva aplicación hay que elegir la que dice Main Window y luego poner el nombre al archivo (dejar la terminación .ui) junto con un directorio en el que se guardará. Finalmente hay que agregar un manejador de versiones, sino se sabe lo que es ésto es por que seguramente no se necesita jeje, así que se deja con y clic en Finish. Listo ya se tiene creado un archivo, se abrirá el diseñador en el que se pueden ir agregando los elementos que tendrá nuestra aplicación, como botones, cajas de texto…

Creando la interfaz gráfica con Qt Creator

Creando la interfaz gráfica con Qt Creator

Una vez diseñada la apariencia del programa en el Creator, hay que guardar el archivo .ui y luego convertir el código al lenguaje Python con la herramienta pyuic4 el cual se instala junto con PyQt4 por lo que no hay necesidad de instalar un paquete adicional, simplemente hay que dirigirse al directorio donde se encuentra el archivo .ui desde el terminal y ejecutar:

$ pyuic4 gasto.ui > gastoqt.py

Listo ya que se tiene hecha la interfaz gráfica hay que empezar a codificar los eventos y los algoritmos de cálculo que necesitemos para que la aplicación nos sea útil, pero eso ya es otra história…

Finalmente con un poco de más código se puede ejecutar la aplicación recién creada.

Aplicación GUI creada

Aplicación GUI creada

.

Saludos slackers!

Desbloquear archivo PDF en Linux

Buscando por la red una forma de desbloquear archivos PDF que a veces no dejan que se copie texto o se imprima el documento, encontré esta página en donde encontré la solución a mi problema, la cual es la que describo a continuación.

Existe un programa llamado Freeware PDF Unlocker que como su nombre lo dice, sirve para desbloquear archivos en formato PDF que tengan protección contra copia. El programa originalmente funciona en Windows XP/Vista por lo que recuerdo, funciona mediante un ícono en el escritorio en el que hay que arrastrar y soltar con el ratón el archivo PDF protegido y genera uno sin la protección, lo que hace es ejecutar Ghostscript en un archivo de procesamiento por lotes.

Ghostscript es el programa intérprete por excelencia de documentos en formato PS (y también PDF). Permite presentar datos PS y PDF en la pantalla y además traducirlos de manera que puedan ser impresos en una impresora con capacidad gráfica mediante el uso del controlador de dicha impresora.

Aladdin Enterprises mantiene las nuevas versiones de Ghostscript hasta que alcanzan una cierta «edad», y luego las libera a la Fundación de Software Libre (FSF, Free Software Foundation) para que se distribuya como GNU Ghostscript. Estas versiones son las que se distribuyen «libres de cargo» en las distribuciones de Linux.

Dispone de una serie de dispositivos controladores para diversos tipos de impresora. Si en la línea de comandos del sistema operativo invocamos gs -h, nos aparecerá gran cantidad de información sobre la versión instalada de Ghostscript del ordenador que utilizamos, entre la que encontraremos los dispositivos controladores.

Dado que Ghostscript se encuentra disponible en linux, se puede modificar el script para que funcione en ésta plataforma, primero que nada hay que asegurarse de que se tiene Ghostscript instalado en el sistema, para ArchLinux se hace:

# pacman -Ss ghostscript

Y en mi caso obtengo:

extra/ghostscript 9.04-5 [instalado]
An interpreter for the PostScript language
extra/gsfonts 1.0.7pre44-2 [instalado]
Ghostscript standard Type1 fonts from URW

Como se puede ver ya lo tengo en mi sistema, si no se tiene pues hay que instalarlo:

# pacman -S ghostscript

Bueno ahora si hay que hacer el script, primero hay que crear un archivo para el script, yo lo hago con kwrite puesto que uso KDE:

$ kdesu kwrite /usr/local/bin/unlockpdf

NOTA: Hago esto con una cuenta de usuario normal (se puede ver el símbolo «$» en el comando) y usando el editor de texto kwrite, solo por la comodidad de trabajar en el ambiente X y no usar un editor en la terminal como vi o nano.

Colocar el siguiente código en el archivo:

#!/bin/sh
if [ "$1" = "" ]
then echo Comando: unlockpdf [archivo_pdf] &amp;&amp; exit
fi
echo
echo Desprotegiend­o $1... Espere un momento.
echo
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sPDFPassword= -dPDFSETTINGS=/prepress -dPassThroughJPEGImages=true -sOutputFile="$1_unlocked.pdf" "$1"
echo
echo Terminado. Compruebe que existe un archivo llamado "$1_unlocked.pdf".
echo

NOTA: checar los saltos de línea, sobretodo en la línea que empieza con «gs» es contínua y no hay saltos de línea.

Una vez hecho ésto se guardan los cambios en el archivo y se le dan permisos de ejecución (ahora si como root, véase el símbolo #):

# chmod +x /usr/local/bin/unlockpdf

Si se desea tener el script disponible para todos los usuarios hay que colocar la opción «a» del chmod como sigue (véase la página man para mas información):

# chmod a+x /usr/local/bin/unlockpdf

Ahora para usar el script tipo «comando» hay que escribir en el terminal:

# unlockpdf [archivoPDF]

Donde [archivoPDF] es el nombre del archivo PDF al que se desea quitar la protección, el cual debe de estar en el directorio actual, después de un rato dependiendo del tamaño del archivo se obtendrá un archivo llamado «[archivoPDF]_unlocked», que es el PDF desprotegido. A mí me ha servido mucho, espero les sirva.

¡Saludos!

Fuentes:

http://www.improvisa.com/index.php?name=News&file=article&sid=413
http://es.wikipedia.org/wiki/Ghostscript