sábado, 16 de abril de 2016

Solucionando "Unknown SSL error -12218" del cliente de escritorio de Upwork para Debian

Upwork, una red para contratar y ofrecer servicios para trabajadores independientes, proporciona una aplicación de escritorio llamada "Time Tracker" que permite llevar la contabilidad de horas trabajadas en los contratos. Esta aplicación, en las últimas versiones de Debian no se conecta a sus servidores, arrojando en la consola el error "Unknown SSL error -12218 ". Este falla es causada por algún conflictos con libnss3 en versiones superiores a 3.19.x. A continuación un pequeño (y algo sucio) procedimiento para solucionar este problema.


Lo primero que tenemos que hacer es determinar el error, para esto basta con ejecutar "upwork" desde la consola y deberíamos ver dos cosas, la primera de ellas es que en la terminal se podrá leer "Unknown SSL error -12218" y adicionalmente la interfaz de la aplicación mostrará el mensaje "There was a problem loading Upwork", tal como se muestra en la siguiente imagen:

Si este es el caso, se debe proporcionar a la aplicación de Upwork una versión de libnss3 no mayor a 3.19.x.

  1.  Se crea un directorio temporal para poder manipular los archivos y desde el cual se realizarán todos los pasos posteriores:
  2. mkdir /tmp/upwork
    cd /tmp/upwork
    
  3. Lo siguiente es conseguir la versión de libnss necesaria (no superior a 3.19.x) y compatible con la arquitectura de nuestro sistema, la misma se puede encontrar del servicio Snapshot Debian: http://snapshot.debian.org/binary/libnss3/, en el caso de una arquitectura 64 bits sería:
  4. wget http://snapshot.debian.org/archive/debian/20150621T032043Z/pool/main/n/nss/libnss3_3.19.2-1_amd64.deb
    
  5. Se podría instalar el paquete .deb y con ello solucionar el problema, pero al haber versiones más recientes, se tendría que configurar el sistema para que mantenga libnss3 en "hold" y esto podría anclar la actualización de otros paquetes, es por esto que es preferible extraer los archivos necesarios del paquete .deb y trabajar directamente con ellos, esto se hace con la herramienta "ar", que debe ser instalada previamente
  6. sudo apt install -y ar
    ar x libnss3*.deb
    
  7. Después de extraer el contenido del paquete .deb, se tendrán nuevos archivos, entre ellos uno llamado "data.tar.xz" que contiene los archivos que son copiados al árbol de directorios del sistema durante la instalación normal del paquete .deb, es allí donde están las librerías necesarias, se descomprime de la siguiente manera:
  8. tar xf data.tar.xz
    
  9. El siguiente paso consiste en colocar las librerías que proporciona el paquete que se acaba de descomprimir en un lugar en que la aplicación de Upwork pueda encontrarlas. Al contrario del workaround que recomienda Upwork para Ubuntu, yo he decido colocar directamente en la carpeta /usr/share/upwork, de esa manera se evita tener que estar modificando variables de entorno o lanzadores (aunque seguramente esto no es una buena practica y por tanto constituye una violación a algún punto del Debian Policy)
  10. sudo find usr/lib -type f -exec mv {} /usr/share/upwork \;
    
  11. Con los procedimientos anteriormente descritos ya se puede iniciar la aplicación de manera acostumbrada y no debería de arrojar problemas de conexión
A pesar de haber resuelto el problema, se tiene que considerar que este debe ser un procedimiento temporal. Cuando el equipo de Upwork proporcione una nueva versión de su aplicación que solucione el conflicto con libnss3 se deben revertir los cambios. Antes de realizar dicha actualización yo recomendaría desinstalar la versión del paquete actual (sudo apt purge upwork) y borrar la carpeta de la aplicación con las librerías ya que seguramente dpkg se negará a hacerlo porque hay archivos adicionales en la misma (sudo rm /usr/share/upwork -rf), luego de eso se podrá instalar la nueva versión normalmente.

No hay comentarios.:

Publicar un comentario