miércoles, 6 de febrero de 2013

Chrome (Linux) - No se ha podido cargar el complemento

Aunque podría ocurrir con cualquier complemento, solemos ver este mensaje al intentar reproducir contenido basado en Flash Player.

En internet encontramos múltiples soluciones para este problema, como reiniciar Flash sin cerrar el navegador, o deshabilitar Flash basado en Pepper y dejar que Chrome use Gnash (esta última sin duda la peor de todas, al final de esta entrada explico por qué). Si has llegado aquí seguramente sea porque no te contentaron esas soluciones.

Síntomas

1: Visitamos una página con un reproductor basado en Flash, no necesariamente Youtube, y nos aparece el mensaje "No se ha podido cargar el complemento".

2: En nuestro directorio personal, en .config/google-chrome/PepperFlash/ existe un directorio con el número de versión de la librería libpepflashplayer.so y dentro del mismo se encuentra dicha librería. Ejemplo, si nuestro nombre de usuario fuera "usuario":

/home/usuario/.config/google-chrome/PepperFlash/11.5.31.138/libpepflashplayer.so

No todos los usuarios del equipo tienen su propia versión de la librería pero los que experimentan el problema suelen tenerla.

3: Si ejecutamos el comando google-chrome en una terminal, y navegamos al sitio que presenta el problema, al intentar cargar el reproductor veremos un mensaje como este aparecer en la terminal donde Google Chrome se está ejecutando:

[15:15:0202/131200:ERROR:ppapi_thread.cc(244)] Failed to load Pepper module from /home/usuario/.config/google-chrome/PepperFlash/11.5.31.138/libpepflashplayer.so (error: /home/usuario/.config/google-chrome/PepperFlash/11.5.31.138/libpepflashplayer.so: cannot open shared object file: Permission denied)

Solución

Renombrar el directorio con números. Mi método favorito es agregarle al nombre que ya tiene un ".renamed" (punto más renamed) para indicarme a mí mismo que ese directorio fue renombrado. Quedaría así:

/home/usuario/.config/google-chrome/PepperFlash/11.5.31.138.renamed

Cerrar todas las ventanas de Chrome. Abrir una y probar a visitar el sitio que antes daba problemas. Ahora debería funcionar.

Nota: no crean que porque renombramos el directorio de PepperFlash que ya no tendremos soporte de Flash, o que ahora el soporte quedará en manos de Gnash. Nada de eso, Google Chrome, que en Linux suele instalarse en /opt/google/chrome, cargará la librería PepperFlash desde /opt/google/chrome/PepperFlash/libpepflashplayer.so que acompaña a una instalación típica de Chrome.

Si aún no funciona o hay razones para creer que Google Chrome sigue usando Gnash

Si antes de intentar con la solución que propongo yo, ya intentaste con otras propuestas que hay en la internet. Es muy probable que hayas ido a chrome://plugins en algún momento y hayas deshabilitado PepperFlash siguiendo algunas instrucciones. Simplemente ve de nuevo ahí y vuelve a habilitar PepperFlash haciendo lo inverso a lo que hiciste para deshabilitarlo la primera vez.

Téngase en cuenta que esas soluciones probablemente están pensadas para usuarios de Windows. Cuando deshabilitamos el soporte de flash que provee Chrome en Windows, todavía tenemos el complemento de Flash Player instalado en el sistema, que probablemente hayamos descargado de la página de Adobe y que mientras lo tengamos actualizado funciona perfectamente con cualquier sitio, al menos que el error sea del mismo sitio. En Linux, en cambio, la probabilidad de que deshabilitar Pepper de resultado es menor. Aunque nada nos obliga a usar Gnash, podríamos por ejemplo usar una versión desactualizada de Adobe instalada a mano por nosotros mismos y ver hasta dónde llegamos con ella, pero lo más probable es que la mayoría de las personas estén usando Gnash en Ubuntu, al deshabilitar pepper quedamos o sin soporte de Flash o con Gnash que no funcionará correctamente en algunos sitios.

Más información

Una de las razones por la que uno opta por tener Google Chrome instalado en su sistema, aunque no lo use como navegador principal, es precisamente por el excelente soporte de Flash incluso en Linux.

Desde hace algún tiempo, el soporte de Flash en Linux depende de Gnash. Aunque es útil y saca de apuros, muchos reproductores no trabajan bien con él. El reproductor de Youtube es utilizable al menos, con algunos artefactos como por ejemplo algo que me sucede a mí, que la primera vez que cargo un video este no ocupa toda el área que debería ocupar sino que el cuadro del video está más pequeño, debo pasar a pantalla completa y luego salir de pantalla completa para que se arregle. Ahora bien, cuando tratas de ver un video que no sea de Youtube, sino de algún otro sitio que también tenga un reproductor basado en Flash y que probablemente requiera la última versión de Flash Player, es muy probable que con Gnash obtengas un cuadro negro y la reproducción no comience nunca, también puede ocurrir que al tratar de hacer scroll por la página el navegador se detenga y deje de responder por un rato.

Google Chrome provee su propio reproductor de Flash, el cual depende de la librería Pepper. Un punto a favor de esta estrategia que sigue Google, es que el comportamiento obtenido durante la reproducción de contenido flash será igual al que vemos en sistemas Windows. En otras palabras la presencia del navegador Chrome en otras plataformas además de Windows permiten que usuarios de esos sistemas tengan acceso a contenido flash de forma "indolora".

Por último, si prestamos atención al final del texto que sale por la terminal cuando se presenta el problema, esta parte en particular:

cannot open shared object file: Permission denied

Sugiere que el problema viene por el lado de los permisos. Yo probé varias cosas, a cambiar permisos para el grupo (darle lectura y escritura) tanto al archivo "so" como a los directorios en los niveles superiores y la verdad nada lo solucionó, al final la cosa no venía por permisos, renombrar el directorio que contiene a la librería fue lo único que resultó, así forzamos a Chrome a cargar la que está contenida en su propio directorio de instalación. Si están pensando en darle permisos de ejecución al archivo so para después probar, déjenme ahorrarles tiempo, que eso tampoco resultará, además hasta donde entiendo, un archivo "so" no tiene por qué estar marcado como ejecutable.

Sea lo que sea que impide a Chrome cargar la librería, hacer lo que sugiero seguramente les solucionará el problema.

2 comentarios:

Unknown dijo...

Muchas gracias JH, después de darle mil vueltas el renombrar ha sido lo que me ha funcionado.

Anónimo dijo...

Resuelto renombrando. También intenté previamente lo de deshabilitar los plugins y los permisos.

Publicar un comentario