sábado, 27 de octubre de 2012

CatFish renovado!

Por fin! ya tenemos aquí una nueva versión de CatFish. Un proyecto de un buscador de archivos que parecía totalmente abandonado.
¿Os habéis puesto alguna vez a buscar en serio los programas que hay para localizar archivos en nuestros dispositivos?  Pues si lo hacéis, os daréis cuenta, que salvo las herramientas que aporta cada distro, no hay prácticamente nada.
Ya hace mucho tiempo (en el 2010) que expuse aquí las bondades de este gestor de búsqueda, incluyéndolo incluso en la lista de mis programas recomendados. Lo podéis ver aquí: Buscar archivos y carpetas en...

Hasta ahora (cómo digo) parecía un proyecto más muerto que vivo. Yo es una de las herramientas que utilizo siempre para localizar algo en mi pc. Por ello soy uno de los que más se alegra de que éste se reanude, renazca de sus cenizas y continué entre nosotros con más fuerza que nunca...o al menos eso espero yo.

CatFish irrumpe ahora con su versión 0.4 con una depuración de código (no exenta de errores) y una interfaz totalmente renovada y minimalista.


Cosa esta última con la que no me identifico mucho por considerarlo más una moda que algo realmente necesario ya que esto nos lleva irremediablemente a quitar opciones que por otra parte pueden sernos aún muy necesarias. Esto es tan así que incluso no se dan  (pudiéndose dar fácilmente) características al alcance del usuario normal de por ejemplo la selección del uso de una interfaz u otra. Cómo veremos más adelante, si queremos modificar ésto, lo podremos hacer nosotros mismo, incluso antes de instalar el programa siguiendo unos sencillos pasos.

Aún así tengo que decir (salvo el minimalismo) que me gusta el nuevo cambio. Aunque he visto que hay ciertos "errores de planteamiento". Por ejemplo, ahora por defecto las búsquedas se realizan con el comando locate y no find. Anteriormente teníamos la posibilidad desde la interfaz o pasando al lanzador el siguiente parámetro  --method=find  de este modo podíamos tener por defecto uno u otro, y luego desde la interfaz seleccionar puntualmente el que queramos en cada momento.
Pues bueno la posibilidad de cambia a uno u otro ya no existe en la interfaz (esto no sé si es un despiste o qué, pero me extraña bastante) y la otra  posibilidad (la del incluir el parámetro en el lanzador) pues como que no funciona y eso que viene por defecto para el uso de find.

Si te preguntas...¿ cual es la diferencia entre el uso de locate o find?...ello estriba en que el primero es mucho más rápido en los resultados, ya que realizan las búsquedas sobre una base de datos de los archivos contenidos en el sistema local. Para ello utiliza un índice actualizable automáticamente, contenido en un archivo existente en nuestro sistema que se ubica en /var/mlocate/mlocate.db.

El problema de locate es que no introduce en este índice a los discos externos o particionados , sino que por defecto, únicamente lo hace con el disco del sistema. Esta forma de proceder tiene su lógica, ya que en el caso de discos externos, como son susceptibles de conectarse y desconectarse constantemente independientemente de que el sistema lo esté o no, al ser actualizado este índice, se borraría todos las referencias a un soporte en el caso de no encontrarse en ese momento conectado. Con lo cual, no ganamos nada ya que cada vez que lo volvamos a conectar, la búsqueda y el indice empezaría de cero.
Cosa distinta sería en el caso de particiones que se montan a la vez que el sistema, en cuyo caso lo más apropiado sería exportar a la variable de entorno  LOCATE_PATH y un indice especifico para éste. De todas formas no voy a entrar en esto ya que aún así, esto no soluciona el problema en el caso de soportes USB del tipo que sea que conectemos a nuestro sistema, que como dije al ser desconectados se elimina todos sus indices y para locate ya no existen esos ficheros que están.

Es decir, y para que se entienda bien, locate no realiza las búsquedas en los discos físicos, sino que lo hace dentro de un único archivo que presumiblemente tiene un registro de los archivos del sistema. Esto quiere decir que aunque tú estés viendo un archivo, si no esta en el indice del archivo referido anteriormente, al hacer una búsqueda con locate el resultado será que no existe.

Por lo tanto, lo más seguro y adecuado para cerciorarse de la existencia o no de un archivo es utilizar find que sí hace una búsqueda exhaustiva real y físicamente en la ubicación dada.

Cómo decía al principio del artículo, esta versión de Catfish no lo utiliza por defecto find y no hay (cómo sí la tenía su versión anterior) ninguna opción al alcance del usuario para solucionar esto , con lo cual las búsquedas en otras particiones o discos externos son totalmente infructuosas, siendo totalmente nulos. Esto desde luego no es una situación nada practica,  ¿de qué nos sirve una herramienta de búsqueda que solo lo hace en el disco local...?
Para solucionar esto, hay que acceder a la fuente y corregirlo manualmente.
Pero no os preocupéis que os explicare de manera fácil como cambiar esto desde su propio código fuente en vez de dároslo ya preparado que sería lo más fácil para todos, pero así de paso más de uno realizará su primera compilación.
Tampoco os asustéis que no hay que trastear mucho. Lo que si es imprescindible es tener los siguientes paquetes instalados

Para la compilación es  necesario:
  • sudo apt-get install build-essential
Para los que quieran general el instalador en paquete DEB serán necesarios instalar estos otros:
  • sudo apt-get install  python-wxgtk2.8 python-wxversion libwxbase2.8-0 libwxgtk2.8-0
Luego nos bajamos el paquete fuente desde su pagina oficial.

↓↓↓↓↓↓↓↓↓↓↓↓ 

Lo descomprimimos y nos situamos dentro de su carpeta principal, con lo que veremos los paquetes que se  ven en la imagen.
Los que vamos a modificar son los que se muestran seleccionados: catfish.py y catfish.glade



Editamos el archivo llamado  catfish.py y nos situamos en su línea 959 y donde pone:

method='locate'
lo cambiamos a:
method='find'

Con esto ya es suficiente para este archivo, pero sobre todo para el caso que nos ocupaba que era el de poner por defecto que las búsquedas se realicen con find
Ahora bien ya que estamos liados podemos modificar algo más como es que se nos muestre por defecto una imagen en miniatura de los resultados encontrados. Para ello no situamos en la línea  458 y donde pone:

thumbnails=0
Ponemos
thumbnails=1

Podemos modificar muchas cosas más, pero por ahora ya está bien, aunque cada uno puede investigar lo que buenamente quiera o pueda.
Guardamos los cambios y cerramos el documento.

El siguiente punto es para los que no quieran una interfaz minimalista, es decir para los que quieran que cuando se ejecute Catfish se muestre más o menos así:



Para ello abrimos catfish.glade, que editaremos también con nuestro editor de texto.
Nos situamos en a línea 952 y cambiamos su valor de True a False


Luego no situamos en la línea 1201 y realizamos el mismo procedimiento, cambiamos su valor de True a False


Lo siguiente es cambiar el tamaño que se muestra por defecto, para ello no movemos hasta la línea 796 y modificamos el valor 400 de la línea ...
<property name="default_width">400</property&gt
...por el que mejor no parezca.



Veréis que no tenéis la linea  <property name="default_height">500</property> , que es la que corresponde al alto de la imagen. Podéis añadirla con el valor que queráis y listo. Luego ya podemos guardar y cerrar también este archivo.

Ahora los que nos resta es compilar el programa. Abrimos un terminal en esa misma ubicación y ejecutamos el siguiente comando.
  • ./configure && make


Si todo va bien con el make tendréis que ver algo como muestra la imagen antes de la segunda opción resaltada. A partir de entonces podemos hacer dos cosas:
- Ejecutar ya directamente el siguiente comando para la instalación del CatFish:
  • sudo make install
Con lo que se instalará el programa mostrando en la línea de comandos algo parecido también a lo que muestra la imagen anterior (después de la segunda  opción resaltada)

- O crear un paquete DEB sin que para ello tener que instalar el programa en nuestro sistema y luego posteriormente instalarlo vía  DEB.
Para ello en este caso ejecutamos el siguiente comando en vez del anterior:
  • make deb
Con lo que nos dejará un paquete en formato DEB en esa misma ubicación...


...el cual podemos instalar y compartir.

Nota: Este proceso de compilación lo podemos hacer tantas veces como queramos, es decir que si no nos gusta la forma en que nos ha quedado, editamos nuevamente los archivos citados, cambiamos los valores por otros y volvemos a compilar e instalar.

11 comentarios:

  1. Hola Fran, como vas ?
    Segui todos los pasos en ambos archivos y tengo instalado build-essential.
    Todo esta tal cual la imagen luego de ejecutar:
    ./configure && make, hasta aca todo bien.
    Ahora al querer crear del deb en lugar del install me tira el siguiente error....
    make deb`which python` ./build.py build catfish
    sed -e s,%prefix%,/usr/local, catfish.in > catfish
    chmod +x catfish
    make install DESTDIR=/home/romi/Descargas/catfish-search-0.4.0.1/deb
    /bin/sh: 1: Syntax error: "(" unexpected
    make: *** [deb] Error 2
    Alguna idea.
    Beso. Romi

    ResponderEliminar
    Respuestas

    1. Comprueba que tengas instalado:
      python
      python.dev
      python-gi
      python-xdg


      Saludos

      Eliminar
    2. Fran, python ya esta, python-gi lo actualize en synaptic y python-dev lo instala por que no lo tenia... pero sigue tirando el mismo error.
      beso

      Eliminar
    3. Tengo las siguientes versiones ...
      Te las paso por las dudas que haya algo mal ..
      python y python-dev (2.7.3~Rc2.1)
      python-xdg (0.19.4)
      python-gi (3.2.2.1)
      Beso

      Eliminar
    4. Perdona ha sido fallo mío Romi, te respondí para el caso del make install y no para el make deb. En el caso de este último instala los siguientes paquetes:
      libwxbase2.8-0
      libwxgtk2.8-0
      python-wxgtk2.8
      python-wxversion


      También en el caso de las locale (para la compilación de los paquetes de idiomas) es necesario instalar este otro paquete: gettext
      Pero tan seguro que ya lo tienes

      Un abrazo...

      Eliminar
    5. Fran, me faltaban algunos de esos paquetes...ahi pude crear el deb.
      gracias !!!
      beso

      Eliminar
    6. Gracias a ti, se me pasó apuntar ésto en el artículo, ahora ya está añadido...

      Eliminar
  2. Buenas tardes Frannoe:
    Acabo de instalar Catfish y todo perfecto, lo que estoy intetando, es cambiar la imagen de éste que sale en el menú por la del gatito, y no lo consigo.
    He intentado buscarlo en los dos archivos que has mencionado anteriormente (catfish.py y catfish.glade)y lo único que he visto es edit-find, al dar al buscador de gedit y poner el nombre de la foto (Catfish File Search), no me la encuentra.
    Tambien he intentado ir al menu principal y cambiar la foto allí, pero tampoco.
    He realizado tambien un lanzador pero tampoco me lo encuentra y cambiado el tamaño a 48x48, y na de na.
    Lo que es la ignorancia, jeje
    Saludos

    ResponderEliminar
    Respuestas
    1. Hola Pedro la imagen de Catfish debería estar en la siguiente ruta:
      /usr/share/icons/hicolor/scalable/apps/catfish.svg
      si no está (cómo parece se así) introdúcela en dicha ubicación.
      Por cierto el que tú citas es un lanzador no una imagen. Puedes utilizarlo como tal donde quieras.

      Saludos

      Eliminar
    2. Hola Frannoe:
      Comentarte que aún siguiendo tu ruta para cambiar la foto no había manera, tanto en accion personalizada de thunar, como en el menu principal.
      Lo he conseguido, pero creo que de esta manera no puede ser "a sido en plan caaateto", pero ha funcionado, seguro que cuando te lo diga, sabras darme una solución lógica.
      He buscado con catfish donde se encontraba catfishsvg, y lo he reemplazdo en todos sus lugares, (imaginate), y al final conseguido. No se que me da que tiene que haber un sitio de ellos, u otro, que reemplazando el exixtente me los cambie todos. Te lo digo, por que he visto sobre el dibujo de el una flecha de enlace.
      Ya me dirás si estoy en lo cierto, y claro está, por favor, la rutita de marras, ¡upfs! que sudores...
      Decirte que he probado dockbarx en xfce y funciona bastante bien y ligerito, (a espensas de configurar y dejarlo uno dias haber que tal).
      Un abrazo

      Eliminar
  3. Hola Frannoe
    Despues de compilar y hacer todo sin errores resultan dos cosas:
    1. En los menus se se muestra catfish
    2. Cuando lo llamo en forma manual desde la consola da este error
    Error: The required module _glib is missing.
    que libreria debo de instalar?

    Gracias!

    ResponderEliminar