Texmaker con Qt5 en Slackware Linux

Muchas veces en la vida, cuando descubres algo mejor a lo que tienes ya no quieres dejarlo, me pasó con Linux y me pasó con Latex. Cuando supe lo que era hacer documentos con Latex me olvidé casi por completo de Word o LibreOffice. Simplemente se pueden hacer documentos científicos hermosos. Las fórmulas y ecuaciones matemáticas quedan impecables y eso es algo importante para mis documentos de ingeniería. Eso si, al principio cuesta más trabajo pero al final vale la pena, al menos para mí.

Bien, esta es la historia de como instalé texmaker con Qt5 en mi sistema, Slackware64-current. Antes usaba texmaker con Qt4 pero hay algunas cosas que me molestaban un poco, como tener que instalar ibus-qt, cosa que con Qt5 no ha sido necesario. Todos los paquetes se instalan desde SlackBuilds.org usando la herramienta sbopkg para automatizar un poco.

Instalando requerimientos

NOTA: Compilar Qt5 llevará varias horas (en mi laptop Asus S301L con procesador i7 tarda alrededor de 5-6 horas).

Lo primero que hice fue instalar Qt5 y poppler para ello hay que ejecutar los comandos siguientes:

# sbopkg -i qt5:DOCS=yes
# sbopkg -i poppler-qt5
# sbopkg -i textmaker:QT5GUI=yes

Sin embargo durante la compilación de texmaker se genera el siguiente error de compilación:

Project ERROR: poppler-qt5 development package not found

Este error es debido a que la versión de poppler que se incluye en Slackware es la 0.32.0 y el SlackBuild para poppler-qt5 es para la versión 0.24.3. So …

Instalando la versión correcta

Primero se debe desinstalar la version 0.24.3 poppler-qt5 ya que no servirá.

# removepkg poppler-qt5

Luego hay que descargar el código fuente de poppler-0.32.0 desde http://poppler.freedesktop.org/poppler-0.32.0.tar.xz
Descargar y extraer el SlackBuild http://slackbuilds.org/repository/14.1/libraries/poppler-qt5/.
Colocar el código fuente de poppler-0.32.0.tar.xz en el directorio generado al extraer el SlackBuild.
Editar el archivo poppler-qt5.SlackBuild para colocar la versión correcta del código fuente y comentar la linea con la instrucción para aplicar un pache:

...
VERSION=${VERSION:-0.32.0}
...
#patch -p1 < $CWD/poppler-0.24.2-mocversiongrep.patch

Compilar e instalar poppler-qt5.

# sh poppler-qt5.SlackBuild
# installpkg /tmp/poppler-qt5-0.32.0-x86_64-1_SBo.tgz

Finalmente compilar e instalar texmaker habilitado para Qt5.

# sbopkg -i textmaker:QT5GUI=yes

Para los descuidados

Cuando intenté hacer unas pruebas compilando un documento de Latex me llevé una sorpresa:

Error : could not start the command : pdflatex -synctex=1 -interaction=nonstopmode "test".tex

Aquí fue donde recordé que durante la instalación del sistema omití los paquetes de tetex y tetex-doc, pues mi intención era instalar texlive, mismo que había olvidado instalar hasta ahora. Para Slackware-current no es necesario instalar el paquete libsigsegv (como se indica en los requerimientos del SlackBuild) pues ya se incluye en el sistema. Entonces para instalar texlive, y dejar todo listo para empezar a trabajar con texmaker, solo basta con ejecutar:

# sbopkg -i "texi2html texlive"

Ahora si, a hacer documentos de calidad.

Saludos!

Anuncios

Actualizar paquetes de SlackBuilds instalados usando sbopkg

Para instalar paquetes de terceros en Slackware yo uso sbopkg, como muchos slackers.
sbopkg es una herramienta capaz de actualizar los paquetes instalados mediante la misma. Sin embargo hay que poner mucha atención a la hora de hacerlo. Se debe ser cuidadoso de actualizar primero las dependencias de los paquetes para que no se tengan conflictos.
La aplicación debe ser ejecutada en el terminal y en una sesión de root (o superusuario):

# sbopkg

Una pantalla al estilo ncurses aparecerá, usando la opción Updates se listarán las potenciales actualizaciones de los paquetes instalados:

sbopkg-update-0

sbopkg-update-2

sbopkg-update-3

sbopkg-update-4

Al cerrar la lista de actualizaciones potenciales, se preguntará si se desean agregar los paquetes listados a la cola de procesamiento, indicar que si y posteriormente usar la opción Queue para seleccionar los paquetes a actualizar. Aquí se debe tener cuidado porque la lista se procesa en orden alfabético por lo que se deben eliminar (usando el botón Delete) los paquetes cuyas dependencias se encuentren más abajo de la lista. Se deberá ejecutar sbopkg una segunda vez (o posiblemente más) cuando las primeras dependencias se hayan actualizado.

sbopkg-update-1

Cuando se haya terminado de eliminar de la cola aquellos paquetes que no se van a actualizar en esta primera ejecución, se procede con la actualización usando la opción Process.

sbopkg-update-7

Ahora se pedirá revisar la cola de actualización una vez más, seleccionando solo aquellos paquetes que se van a actualizar. Los paquetes cuya versión instalada sea mayor a la del sitio de SlackBuilds (downgrades) aparecerán desactivados para no ser procesados.

sbopkg-update-8

Luego se pedirá seleccionar la operación que se desea realizar con los paquetes de la cola, se puede hacer solo la descarga, la compilación o la instalación.

sbopkg-update-9

sbopkg-update-10

Finalmente se empezarán a actualizar los paquetes seleccionados de manera normal.

sbopkg-update-11

Si todo sale bien, se informará el éxito al final del proceso.

Con esta herramienta es muy sencillo hacer una actualización de las aplicaciones del sistema que hemos instalado desde los SlackBuilds. Nos ahorra la tarea de buscar los paquetes de uno por uno y checar si existe una actualización.

Es recomendable que se consulte el sitio de SlackBuilds.org para buscar información de los paquetes que se van a actualizar. Algunos, por ejemplo, deben desinstalarse por completo antes de intentar compilar una versión nueva. Otros no se actualizarán de esta manera debido a ciertas restricciones (como programas privativos distribuidos en binario o ejecutables).

Finalmente, la única desventaja del proceso de actualización es el tiempo nos lleva actualizar todo, pues Slackware no utiliza un sistema de resolución de dependencias y tampoco la aplicación de sbopkg, así que aquellos paquetes que requieran de muchas dependencias deben dejarse para el final, probablemente sea necesario ejecutar la opción de actualización varias veces para ir resolviendo dependencias de manera ordenada.

Have fun!

Actualizando glibc

A pesar de que la noticia de la vulnerabilidad GHOST de glibc ya lleva un par de días, quiero publicar el sencillo método de dos pasos que hay que seguir para actualizar.
Primero hay que descargar los paquetes apropiados para la versión de Slackware que tengamos instalada, las versiones afectadas son 13.0, 13.1, 13.37, 14.0 y 14.1.
Los paquetes son:

  • glibc
  • glibc-i18n
  • glibc-profile
  • glibc-solibs
  • glibc-zoneinfo-2014j

Para 32 y 64 bits se descargan desde el sitio ftp.slackware.com, los enlaces de descarga se ponen a disposición en el aviso de seguridad.
Sin embargo si tienes un equipo con Slackware multilib (64 bits con compatibilidad para aplicaciones de 32 bits), ninguno de estos paquetes servirá. Los adecuados se encuentran en el sitio de AlienBob (que por cierto expresó enojo en una publicación de su blog cuando ciertas personas le exigieron que publicara cuanto antes los paquetes) y se pueden descargar desde este enlace, solo hay que escoger la versión correcta.
Una vez descargados solo hay que acceder al directorio donde se encuentran los paquetes, usando el Terminal y ejecutar como usuario root:

# upgradepkg --reinstall glibc-*

¡Saludos!

Grive en Slackware

GriveGrive es la implementación independiente y de código abierto del cliente de Google Drive para Linux, en vista de que Google aún no provee de un cliente oficial para esta plataforma. Grive está escrito en C++ y su código está liberado bajo la licencia GPLv2.

Actualmente Grive en su versión 0.2.0 se encuentra en estado beta, el cliente es capaz hacer una sincronización entre Google Drive y el directorio local al que se encuentre ligado, puede cargar y descargar los cambios en archivos y directorios.

Por otro lado, las principales limitantes son los directorios con múltiples padres: la jerarquía de una cuenta de Google Drive es compleja y no puede visualizarse como un esquema de “árbol”, en vez de eso, hay que pensarla más como una red interconectada a ligada a un punto raíz. Cosa que obviamente un sistema de archivos local no puede ser, por lo que no es posible que haya compatibilidad entre la jerarquía de Drive y el directorio local. La segunda limitante es que Grive no descarga los documentos con el formato de Google, por ejemplo aquellos que vemos en el navegador web.

Instalando Grive en Linux

Hasta ahora, en Linux, solo hay disponible un paquete para Ubuntu, por lo que para instalar Grive en Slackware hay que proceder a compilar desde el código fuente. Por suerte disponemos de un SlackBuild (cuyo autor es willysr) que podemos usar para automatizar el proceso, lo único que tenemos que hacer es descargar el código fuente (tarball 0.2.0).

Como es requerido, colocamos el código fuente en el mismo directorio del SlackBuild y lo ejecutamos como root:

# ./grive.SlackBuild

NOTA: Es necesario tener instalado json-c primero.

Me apareció el siguiente mensaje de error durante la compilación:

Linking CXX executable grive
/usr/bin/ld: ../libgrive/libgrive.a(Json.cc.o): undefined reference to symbol 'json_object_array_get_idx'
/usr/bin/ld: note: 'json_object_array_get_idx' is defined in DSO /lib64/libjson-c.so.2 so try adding it to the linker command line
/lib64/libjson-c.so.2: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
make[2]: *** [grive/grive] Errore 1
make[1]: *** [grive/CMakeFiles/grive_executable.dir/all] Errore 2
make: *** [all] Errore 2

Para solucionar este problema hay que descomprimir el tarball del código fuente, modificar el archivo cmake/Modules/FindJSONC.cmake como se muestra aquí:

-FIND_PATH(JSONC_INCLUDE_DIR json/json.h)
-FIND_LIBRARY(JSONC_LIBRARY NAMES json)
+FIND_PATH(JSONC_INCLUDE_DIR json-c/json.h)
+FIND_LIBRARY(JSONC_LIBRARY NAMES json-c)

Guardar el archivo y crear de nuevo el tarball (es necesario borrar o renombrar el original primero):

$ tar pczf grive-0.2.0.tar.gz grive-0.2.0

Limpiar el cache para usar el nuevo tarball:

# rm -rf CMakeCache.txt cmake_install.cmake CMakeFiles Makefile

Y volver a ejecutar el SlackBuild, una vez creado el paquete de Slackware solo hay que instalarlo con installpkg.

Usando grive

Para la primera ejecución debemos entrar al directorio en el que deseamos que se sincronice grive, yo recomiendo crear uno nuevo y ejecutar:

$ grive -a

-----------------------
Please go to this URL and get an authentication code:

https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fdocs.google.com%2Ffeeds%2F+https%3A%2F%2Fdocs.googleusercontent.com%2F+https%3A%2F%2Fspreadsheets.google.com%2Ffeeds%2F&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&client_id=22314510474.apps.googleusercontent.com

-----------------------
Please input the authentication code here:

Nos pide ir a la dirección mostrada, misma que nos dará un código que hay que introducir. Una vez que se introduzca el código empezará la sincronización en el directorio en el que estemos ejecutando el comando:

Reading local directories
Synchronizing folders
Reading remote server file list

Ahora cada que hagamos un cambio en nuestro directorio local o en Google Drive solo debemos ejecutar:

$ grive

Saludos.

ffmpeg: una herramienta siempre útil

ffmpeg-logo

Una herramienta que siempre instalo cuando acabo de hacer una instalación nueva de Slackware Linux (como ahora) es ffmpeg (aquí la forma en que la instalé en Slackware 14.0 que es prácticamente igual), esta herramienta es una dependencia de una buena cantidad de programas que suelo utilizar en Linux por lo que siempre es de las primeras. Y como quiero tenerla mas o menos completa, primero hago una instalación de algunas de sus dependencias opcionales, como se explica a continuación.

Como siempre yo utilizo sbopkg, para no complicarme mucho la existencia y agilizar el proceso de descarga y compilación. La instalación de las dependencias opcionales la hago con el siguiente comando:

# sbopkg -i "libass libbluray celt libdc1394 libmp4v2 faac frei0r gsm libiec61883 libavc1394 libilbc openjpeg ladspa_sdk lame libmodplug OpenAL opencore-amr opus rtmpdump orc schroedinger speex twolame libvpx x264 xvidcore"

ffmpeg_01

Lo siguiente es instalar el paquete de ffmpeg, para ello hay que asegurarse de que estemos en una shell de root verdadera, esto lo hacemos con el comando “su -“.

Las dependencias opcionales instaladas anteriormente, proporcionan características extras a ffmpeg, pero estas no se detectan automáticamente por lo que se deben pasar algunos parámetros al comando de instalación.

El comando de instalación detallado es el siguiente:

# sbopkg -ri ffmpeg:ASS=yes:BLURAY=yes:CELT=yes:DC1394=yes:FAAC=yes:FREI0R=yes:GSM=yes:IEC61883=yes:ILBC=yes:JP2=yes:LADSPA=yes:MODPLUG=yes:OPENAL=yes:OPENCORE=yes:OPENSSL=yes:OPUS=yes:RTMP=yes:SCHROEDINGER=yes:SPEEX=yes:TWOLAME=yes:VPX=yes:X264=yes:XVID=yes

ffmpeg_02ffmpeg_03

Cuando pregunte por las opciones de linea de comandos contestamos con una letra “c”, para que se acepten.

Listo ahora tenemos instalada la herramienta en Linux.

Saludos.

Instalar LibreOffice 4.1 en Slackware

Hasta ahora no hay disponible un paquete de LibreOffice 4.1 para Slackware, y esto seguro es debido a que la comunidad de usuarios no ve necesidad hasta el momento de tener la última versión de la suite de ofimática en esta distribución, por eso se está esperando hasta que la aplicación tenga cierta estabilidad. Sin embargo para aquellos que como yo quieran probar las últimas novedades de LibreOffice les dejo la manera en que logré instalarlo en mi Slackware 14.0.

Instalando el programa principal

Primero hay que descargar el SlackBuild desde aquí:

$ wget http://slackbuilds.org/slackbuilds/14.0/office/libreoffice.tar.gz

Y una vez que lo hemos descomprimido…

$ tar xvzf libreoffice.tar.gz
$ cd libreoffice

LibreOffice_41_en_Slackware

Hay que modificar el SlackBuild, pues debemos recordar que el script está hecho para la versión 4.0.4, entonces se modifica la línea de la versión de la siguiente manera:

$ vim libreoffice.SlackBuild

De esto:

VERSION=${VERSION:-"4.0.4"}

A esto:

VERSION=${VERSION:-"4.1.1"}

Y de esto:

mv desktop-integration/libreoffice$SRCSHORT-freedesktop-menus-$SRCSHORT*.noarch.rpm .

Agregando un # al inicio para comentar la línea, como se muestra:

#mv desktop-integration/libreoffice$SRCSHORT-freedesktop-menus-$SRCSHORT*.noarch.rpm .

Quedando como se muestra en las imágenes:

libreoffice41-slackware-04

libreoffice41-slackware-07

Luego hay que descargar el paquete de LibreOffice desde aquí:

$ wget http://download.documentfoundation.org/libreoffice/stable/4.1.1/rpm/x86_64/LibreOffice_4.1.1_Linux_x86-64_rpm.tar.gz

Esperamos unos minutos que termine de descargar y cuando haya finalizado ejecutamos el SlackBuild como root:

# sh libreoffice.SlackBuild

libreoffice41-slackware-06

Cuando se haya generado el paquete, instalar como de costumbre, antes hay que desinstalar cualquier versión existente:

# removepkg libreoffice
# removepkg libreoffice-l10n-es
# removepkg libreoffice-mozplugin

En mi caso tenía instalado LibreOffice 4.0.3 con sus respectivo paquete de español. Ahora si instalar…

# installpkg /tmp/libreoffice-4.1.1-x86_64-1_SBo.tgz

libreoffice41-slackware-12

Y ahí lo tenemos… tan feo como siempre.

libreoffice41-slackware-13

Instalando la ayuda en español

Descargar el SlackBuild para la ayuda desde aquí:

$ wget http://slackbuilds.org/slackbuilds/14.0/office/libreoffice-helppack.tar.gz

Descomprimir y descargar el código fuente:

$ tar xvzf libreoffice-helppack.tar.gz
$ cd libreoffice-helppack
$ wget http://download.documentfoundation.org/libreoffice/stable/4.1.1/rpm/x86_64/LibreOffice_4.1.1_Linux_x86-64_rpm_helppack_es.tar.gz

Editar y ejecutar el SlackBuild:

$ vim libreoffice-helppack.SlackBuild

Cambiar la versión de 4.0.4 a 4.1.1 y el idioma de en-US a es:

libreoffice41-slackware-16

# sh libreoffice-helppack.SlackBuild

Instalar:

# installpkg /tmp/libreoffice-helppack-4.1.1_es-x86_64-1_SBo.tgz

libreoffice41-slackware-18

Instalando el paquete de traducción a español

Descargar el SlackBuild y descomprimirlo:

$ wget http://slackbuilds.org/slackbuilds/14.0/office/libreoffice-langpack.tar.gz
$ tar xvzf libreoffice-langpack.tar.gz
$ cd libreoffice-langpack

Descargar el código fuente:

$ wget http://download.documentfoundation.org/libreoffice/stable/4.1.1/rpm/x86_64/LibreOffice_4.1.1_Linux_x86-64_rpm_langpack_es.tar.gz

Editar y ejecutar el script:

$ vim libreoffice-langpack.SlackBuild
# sh libreoffice-langpack.SlackBuild

libreoffice41-slackware-20

Igual el cambio es la versión de 4.0.4 a 4.1.1 y el idioma de en-US a es.

Instalar y listo:

# installpkg /tmp/libreoffice-langpack-4.1.1_es-x86_64-1_SBo.tgz

libreoffice41-slackware-22

Obviamente se puede hacer todo esto sin uso del terminal o usando un editor de texto diferente a vim, pero yo lo encuentro más divertido.

Saludos…

ffmpeg: Instalación en Slackware 14.0

ffmpeg-logo

Ya antes he escrito una entrada sobre la instalación de ffmpeg, algunas de las formas de usarlo y resolver algunos problemas aquí. Ahora voy a colocar la forma en la que lo acabo de instalar en mi nuevo sistema: Slackware 14.0 de 64 bits.

FFmpeg es una colección de software libre que puede grabar, convertir (transcodificar) y hacer streaming de audio y vídeo. Incluye libavcodec, una biblioteca de códecs. FFmpeg está desarrollado en GNU/Linux, pero puede ser compilado en la mayoría de los sistemas operativos, incluyendo Windows.

Primero les muestro un pequeño esquema de los requerimientos de esta aplicación:

+ffmpeg
 |
 +-Requirements
 | |
 | +-lame
 | +-x264
 |
 +-Optional
   |
   +-libass
   +-libbluray
   +-celt
   +-libdc1394
   +-faac
   | |
   | +-libmp4v2
   |
   +-frei0r
   +-gsm
   +-openjpeg
   +-lame *
   +-OpenAL
   +-opencore-amr
   +-rtmpdump
   +-schroedinger
   | |
   | +-orc
   |
   +-speex
   +-libvpx
   +-x264 *
   +-xvidcore

Se incluyen algunas dependencias opcionales, sin embargo no consideré las dependencias opcionales de estas para no hacer más largo el asunto. Algunas dependencias (*) están repetidas.

Primero para instalar las dependencias hay que ejecutar como root:

# sbopkg -i "libass libbluray celt libdc1394 libmp4v2 faac frei0r gsm openjpeg lame OpenAL opencore-amr rtmpdump orc schroedinger speex libvpx x264 xvidcore"

Entrar en una root shell “real” (el guión al final es necesario):

$ su -

Una vez entrada la contraseña de superusuario proceder a instalar ffmpeg:

# sbopkg -i ffmpeg:ASS="yes":BLURAY="yes":CELT="yes":DC1394="yes":FAAC="yes":FREI0R="yes":GSM="yes":JP2="yes":LAME="yes":OPENAL="yes":OPENCORE="yes":OPENSSL="yes":RTMP="yes":SCHROEDINGER="yes":SPEEX="yes":VPX="yes":X264="yes":XVID="yes"

Con esto tendremos el paquete de ffmpeg instalado y listo para correr ;).

Fuentes:

SlackBuilds
Wikipedia