Desaventuras en la tierra de Linux, parte 18

En el pasado he hablado de LibreOffice y cómo se encuentra a años luz de estar siquiera a la altura de, digamos, MS Office XP, la versión de MS Office de hace 20 años. El problema con LibreOffice es que, como todo proyecto promedio para Linux, en lugar de tener unas cuantas características sólidas y bien implementadas, tiene miles de características inútiles a medio implementar.

Read More

Desaventuras en la tierra de Linux, parte 17

En el post anterior de Desaventuras mencioné cómo tuve problemas con mi PC debido a un disco duro problemático y cómo pude solucionar el problema gracias a LVM. Ya que estaba metido en esto, decidí que era hora también de retirar el disco duro en el que instalé Linux originalmente “para probarlo”. He estado usando Linux por los últimos años y parecía un buen momento para quitar ese viejo disco duro IDE de 10 GB y reemplazarlo con algo de mayor capacidad. Antes de quitar el disco debía usar una vez más LVM para mover los datos de /dev/mapper/sdb5_crypt al nuevo disco duro. Antes que nada hay que recordar verificar que el nuevo disco tenga suficiente espacio disponible, siempre de acuerdo  a pvdisplay, para poder mover los datos de la partición que se va a eliminar. Después de verificar el espacio disponible, el proceso para retirar el disco duro del LVM es el mismo descrito en el post anterior así que no lo repetiré. Al final del proceso sólo tendré un disco duro en el ‘volume group’ debian-vg y hay que recordar que se debe actualiza /etc/crypttab para reflejar los cambios:

monstruosoft@debian:~$ sudo pvmove /dev/mapper/sdb5_crypt
monstruosoft@debian:~$ sudo vgreduce debian-vg /dev/mapper/sdb5_crypt
monstruosoft@debian:~$ cat /etc/crypttab 
sdb2_crypt UUID=d181b00e-a351-45f0-9cce-9cfdcfdead1a none luks
monstruosoft@debian:~$ sudo update-initramfs -u -k all

Ahora el ‘volume group’ debian-vg contiene únicamente un volumen físico y, después de remover el volumen y actualizar el archivo /etc/crypttab, puedo actualizar la imagen de arranque con update-initramfs y puedo finalmente quitar el viejo disco IDE de 10 GB de mi PC.

Aún quedaban algunos problemas pendientes que resolver; cuando empezó a fallar el disco duro, el gestor de paquetes quedó inutilizable ya que los problemas ocurrieron precisamente mientras instalaba algunos paquetes. Si bien el gestor de paquetes me indicaba que debía correr manualmente dpkg para corregir el problema, hacerlo mientras el disco dañado estaba conectado siempre resultaba en el mismo error. Ahora que he removido el disco que causaba problemas, debería poder corregir también el problema con el gestor de paquetes, o al menos eso espero:

monstruosoft@debian:~$ sudo dpkg --configure -a
...
Processing triggers for initramfs-tools (0.130) ...
update-initramfs: Generating /boot/initrd.img-4.9.0-4-amd64
update-initramfs: deferring update (trigger activated)
Generating grub configuration file ...
Found background image: .background_cache.png
Found linux image: /boot/vmlinuz-4.9.0-4-amd64
Found initrd image: /boot/initrd.img-4.9.0-4-amd64
done
update-initramfs: Generating /boot/initrd.img-4.9.0-4-amd64

Como era de esperarse esta vez no hubo errores, el gestor de paquetes funciona nuevamente y puedo finalmente continuar usando mi equipo con normalidad.

 

Compilar PhysicFS con MinGW

PhysicsFS es una librería que permite acceder al contenido de archivos .zip transparentemente como si fueran parte de nuestro sistema de archivos. Allegro 5 cuenta con un addon para usar PhysicsFS en tus programas de Allegro. En posts anteriores describí la forma de compilar la versión de Allegro para Windows usando MinGW, en esa ocasión no compilamos PhysicsFS para Windows para poder usarla con Allegro pero ahora tengo un proyecto de Allegro que requiere usar este addon y por lo tanto debemos compilar la librería usando MinGW.

Compilar PhysicsFS para Windows no debería ser difícil ya que usa CMake, por lo que el archivo de toolchain que usamos en posts anteriores debería sernos útil:

monstruosoft@debian:~/build/physfs-3.0.2$ mkdir build-mingw32
monstruosoft@debian:~/build/physfs-3.0.2$ cd build-mingw32/
monstruosoft@debian:~/build/physfs-3.0.2/build-mingw32$ export PKG_CONFIG_LIBDIR=/home/monstruosoft/mingw32-i686/lib/pkgconfig/
monstruosoft@debian:~/build/physfs-3.0.2/build-mingw32$ cmake -DCMAKE_TOOLCHAIN_FILE=~/toolchain-mingw32.cmake -DCMAKE_INSTALL_PREFIX=/home/monstruosoft/mingw32-i686/ ..
-- The C compiler identification is GNU 6.3.0
-- The CXX compiler identification is GNU 6.3.0
-- Check for working C compiler: /usr/bin/i686-w64-mingw32-gcc
-- Check for working C compiler: /usr/bin/i686-w64-mingw32-gcc -- works
-- PhysicsFS will build with the following options:
--   ZIP support: enabled
--   7zip support: enabled
--   GRP support: enabled
--   WAD support: enabled
--   HOG support: enabled
--   MVL support: enabled
--   QPAK support: enabled
--   SLB support: enabled
--   VDF support: enabled
--   ISO9660 support: enabled
--   Build static library: enabled
--   Build shared library: enabled
--   Build stdio test program: enabled
--     Use readline in test program: disabled
-- Configuring done
-- Generating done
-- Build files have been written to: /home/monstruosoft/build/physfs-3.0.2/build-mingw32
monstruosoft@debian:~/build/physfs-3.0.2/build-mingw32$ make -j 4
Scanning dependencies of target physfs-static
Scanning dependencies of target physfs
...
[ 95%] Built target physfs
[100%] Built target test_physfs
monstruosoft@debian:~/build/physfs-3.0.2/build-mingw32$ make install
[ 47%] Built target physfs-static
[ 95%] Built target physfs
[100%] Built target test_physfs
Install the project...

Ahora simplemente debemos recompilar Allegro con el MinGW para generar el addon de PhysicsFS:

monstruosoft@debian:~/build/physfs-3.0.2/build-mingw32$ cd ..
monstruosoft@debian:~/build/physfs-3.0.2$ cd ..
monstruosoft@debian:~/build$ cd allegro-5.2.5.0/
monstruosoft@debian:~/build/allegro-5.2.5.0$ cd build-mingw32/
monstruosoft@debian:~/build/allegro-5.2.5.0/build-mingw32$ cmake -DCMAKE_TOOLCHAIN_FILE=~/toolchain-mingw32.cmake -DCMAKE_INSTALL_PREFIX=/home/monstruosoft/mingw32-i686/ ..
...
-- Found PhysFS: /home/monstruosoft/mingw32-i686/bin/libphysfs.dll  
-- Found PHYSFS: /home/monstruosoft/mingw32-i686/bin/libphysfs.dll  
-- Could NOT find ZLIB (missing:  ZLIB_LIBRARY) (found version "1.2.8")
-- Performing Test PHYSFS_IMPLICIT_ZLIB
-- Performing Test PHYSFS_IMPLICIT_ZLIB - Success
...
monstruosoft@debian:~/build/allegro-5.2.5.0/build-mingw32$ make -j 4
monstruosoft@debian:~/build/allegro-5.2.5.0/build-mingw32$ make install

Ahora podemos usar PhysicsFS en nuestros programas de Allegro 5.

Mozilla lo hizo de nuevo

Una vez más Mozilla ha encontrado la forma de deshabilitar todos los add-ons de miles de usuarios. No es la primera vez que pasa y hacer esto es una terrible estrategia de parte de Mozilla cuando su cuota de mercado es de un solo dígito; es como si quisieran perder aún más usuarios.

bn7y9hn

Cambiar el navegador predeterminado en Debian Stretch

Si tienes problemas para que Picard detecte y se integre con tu navegador, es posible que se deba a que el navegador predeterminado de tu sistema no es el que quieres usar con Picard. Picard usa el navegador definido por xdg-settings; para averiguar cual es el navegador predeterminado puedes ejecutar el siguiente comando:

monstruosoft@debian:~$ xdg-settings get default-web-browser
firefox-esr.desktop

En mi caso, no quiero usar Firefox ESR, por lo que tuve que cambiar el navegador predeterminado por mi propio acceso directo en el archivo firefox-beta.desktop en el escritorio. Para poder asignar una aplicación usando xdg-settings es necesario copiar el archivo .desktop a la carpeta ~/.local/share/applications, de manera que para cambiar el navegador predeterminado1:

monstruosoft@debian:~$ xdg-settings get default-web-browser
firefox-esr.desktop
monstruosoft@debian:~$ cp Desktop/firefox-beta.desktop .local/share/applications/
monstruosoft@debian:~$ xdg-settings set default-web-browser firefox-beta.desktop
monstruosoft@debian:~$ xdg-settings get default-web-browser
firefox-beta.desktop

Ahora Picard debería abrir los links en el navegador de forma correcta. Lo puedes probar con el siguiente comando:

monstruosoft@debian:~$ xdg-open 'http://www.google.com'

La dirección de internet que pasas al comando xdg-open se debería abrir en el navegador. En mi experiencia, esto funciona correctamente mientras que cambiar el navegador predeterminado usando el comando update-alternatives2 no dio resultado.


Referencias:

1 https://stackoverflow.com/questions/41172692/xdg-open-not-open-default-browser

MusicBrainz Picard – Parte 2

Uno de mis primeros posts en este blog, cuando aún usaba Windows, fue sobre MusicBrainz Picard, un software para organizar tu música. Ahora que he vuelto a usar Picard después de mucho tiempo, me sorprende que en aquel entonces haya podido siquiera hacerlo funcionar. No importa qué etiquetas le ponga a mi música o cómo configure las opciones del software, Picard siempre parece encontrar los albumes más raros de artistas que nadie conoce publicados en países que ni sabía que existían pero nunca parece encontrar un album que sea remotamente el correcto 😦 . No importa si literalmente escribo cada una de las etiquetas con el nombre del artista, el album, el año en que se lanzó el album, aún así ¡Picard encuentra albumes que ni siquiera son de ese artista!.

Después de batallar por un rato con resultados inservibles, lo que me ayudó fue ir a las opciones avanzadas de Picard y cambiar el límite/umbral de los resultados de los valores predeterminados de 70% y 80% para la similitud de los resultados para canciones y albumes respectivamente por valores más bajos de 50% para ambos campos. Al hacer esto y configurar los controles deplazables en las opciones de metadatos, al fin obtuve resultados correctos para la música que intentaba organizar así que si tienes problemas similares con Picard es posible que esto te sea de ayuda. También, no olvides leer la guía rápida de Picard.

Compilar programas para Windows desde Linux – Parte 1

¿Eres un usuario de Linux y disfrutas haciendo tus programitas en C o C++ pero quieres compartirlos con el resto del mundo que seguramente usa Windows?. Compartirles el código es una posibilidad pero el usuario promedio no sabría qué hacer con él así que tus opciones se reducen a entregarles un ejecutable listo para usar en Windows. Por suerte, compilar tus programas para Windows es relativamente fácil en Linux, sobre todo si alguna vez usaste MinGW en Windows. MinGW es, por así decirlo, el gcc para Windows. MinGW ofrece compiladores para C y C++ (entre otros) que generan archivos ejecutables .exe para Windows así que, como te imaginarás, solamente tenemos que instalar MinGW para poder usarlo para generar ejecutables para Windows desde nuestra distro de Linux. Para instalar MinGW en Debian Stretch, basta con instalar el paquete mingw-w64 desde el gestor de paquetes.

Read More