[TESTEO] Script de instalación de códecs Packman (Universal y Robusto) v4.7

¡Hola a todos!

Gracias por el excelente feedback, especialmente a @victorhck y @karlggest por sus sugerencias de seguridad.

He desarrollado un script en Bash diseñado para automatizar la instalación de códecs multimedia desde el repositorio Packman (vía HTTPS). El objetivo es crear una herramienta “inteligente” que simplifique la vida a los usuarios y evite los problemas comunes de repositorios duplicados o instalaciones excesivas.

:penguin: ¿Qué hace este script?

  • Detección inteligente: Identifica automáticamente la versión de openSUSE.
  • Seguridad: Verifica la conexión a internet y utiliza conexiones cifradas HTTPS.
  • Respetuoso: Si ya tienes Packman (Full o Essentials), lo detecta por la URL y no lo duplica. Si el repositorio está presente pero deshabilitado, lo activa automáticamente.
  • Instalación Quirúrgica: Instala solo lo necesario. Evita descargar cientos de megabytes en paquetes de 32 bits o de depuración (debuginfo) que no son necesarios para la reproducción multimedia.

Para los curiosos: Podéis ver el código fuente y el nuevo README con instrucciones detalladas aquí:

:new: Novedades de la v4.9:

  1. Soporte optimizado para Leap 16.0: Se ha añadido una gestión inteligente de paquetes (--ignore-missing). Esto evita avisos de “paquete no encontrado” en versiones donde ciertos componentes se han fusionado o cambiado de nombre, haciendo la instalación mucho más limpia.
  2. Nuevo PASO 3 (Opcional): He incluido una nueva fase interactiva que permite instalar los “Paquetes Recomendados” (equivalente a zypper inr). Esto asegura que componentes de audio como Pipewire/PulseAudio queden perfectamente configurados, pero solo si el usuario lo desea.
  3. Robustez: Se ha mejorado la lógica de salida para que los avisos menores de Zypper (como la necesidad de reiniciar programas en uso) no interrumpan el flujo del script.

:hammer_and_wrench: Versiones soportadas

El script está programado para dar soporte a:

  • openSUSE Leap 15.6 (Probado con éxito :white_check_mark:)
  • openSUSE Leap 16.0 (Necesita testers :test_tube:)
  • openSUSE Tumbleweed (Necesita testers :test_tube:)
  • openSUSE Slowroll (Necesita testers :test_tube:)

:rocket: Instrucciones de uso

Para aquellos que quieran probarla, solo tienen que copiar y pegar este bloque en su terminal:

curl -L https://gitlab.com/DiabloRojo/opensuse-tools/-/raw/main/install-codecs.sh -o install-codecs.sh
sed -i 's/\r$//' install-codecs.sh
chmod +x install-codecs.sh
./install-codecs.sh

(Nota: He incluido el comando sed por si acaso se descargara con finales de línea incorrectos en algunos sistemas).
(El script detectará automáticamente si usas Tumbleweed, Leap 15.6, 16.0 o Slowroll).

Espero vuestros comentarios, ¡especialmente de los valientes en Leap 16.0!"

:loudspeaker: ¡Necesito tu feedback!

Aunque el script funciona perfectamente en Leap 15.6, necesito confirmar que la detección y el mapeo de repositorios funcionan correctamente en las demás versiones.

Si el script te falla o detecta algo incorrecto:

  1. Copia toda la salida de la terminal.
  2. Copia la salida del comando cat /etc/os-release
  3. Pégales en una respuesta a este hilo para que pueda analizar el error.

Cualquier sugerencia para mejorar el código es bienvenida.

¡Gracias por vuestra ayuda!

1 Like

Leap 16.0

(aunque ya tiene los códecs, pruebo el script)

karl@localhost:~> ./install-codecs.sh 
bash: ./install-codecs.sh: no se puede ejecutar: no se ha encontrado el fichero requerido
karl@localhost:~> sh ./install-codecs.sh 
./install-codecs.sh: línea 10: $'\r': orden no encontrada
: nombre de opción inválido11: set: pipefail

No veo el paquete ffmpeg (siempre es ffmpeg-{número}).
Por otra parte, al instalar gstreamer-plugins-ugly se instala automáticamente gstreamer-plugins-ugly-codecs?

Se puede ejecutar sin el punto delante si está en la carpeta bin del usuario, así lo he estado haciendo.

Que version de Opensuse tienes?

El paquete ffmpeg se instala el más moderno.

no entiendo eso… git es un control de versiones. Tenerlo en un repositorio de git permite tener un histórico de lo que ha cambiado, cuando y quien lo hizo… Pero como mejor te parezca. :ok_hand:

Probado en Tumbleweed. Algunos comentarios:
Primero me dice que va a instalar 12 paquetes:

Instalando códecs esenciales desde: ftp.gwdg.de-Essentials
(Evitando paquetes de 32 bits y debuginfo)
Cargando datos del repositorio...
Leyendo los paquetes instalados...
'ffmpeg' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
El paquete 'ffmpeg-7' que proporciona 'ffmpeg' ya está instalado.
'gstreamer-plugins-bad' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-bad' ya está instalado.
'gstreamer-plugins-base' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-base' ya está instalado.
'gstreamer-plugins-good' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-good' ya está instalado.
'gstreamer-plugins-ugly' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-libav' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-vaapi' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
Resolviendo dependencias de paquete...

Los siguientes 12 paquetes NUEVOS van a ser instalados:
  gstreamer-plugins-libav gstreamer-plugins-ugly gstreamer-plugins-ugly-lang gstreamer-plugins-vaapi libiso9660-12 libmodplug1 libmpcdec5 libvcdinfo0 libxine2
  libxine2-codecs libXvMC1 vlc-codecs

12 nuevos paquetes a instalar.

Y responde por mí que sí (eso no me gusta, me gusta decidir yo qué hacer)

Después me dice:

→ Sincronizando proveedores (Vendor Change)...
Cargando datos del repositorio...
Leyendo los paquetes instalados...
Calculando actualización de distribución...

Los siguientes 17 paquetes van a ser actualizados:
  gdk-pixbuf-loader-libheif libavcodec62 libavdevice62 libavfilter11 libavformat62 libavutil60 libheif1 libheif-aom libheif-dav1d libheif-ffmpeg libheif-jpeg
  libheif-openjpeg libheif-rav1e libheif-svtenc libswresample6 libswscale9 vlc-lang

17 paquetes a actualizar.

Y también decide qué hacer por mí respondiendo s

Y al finalizar comenta:

→ Limpiando caché de paquetes...
Todos los repositorios se han borrado.

Con eso de todos los repositorios se han borrado, me he asustado un poco! :slight_smile:

Por lo demás parece que ha funcionado, no sé si bien o mal… jejejeje

Voy a hacer como que no he leído esto :rofl:

A subir o descargar el script , se ha introducido caracteres de retorno de carro ocultos (\r).
Hay que limpiar el script con algunos de estos comandos:
sed -i 's/\r$//' install-codecs.sh
Si tienes instalado el paquete dos2unix
dos2unix install-codecs.sh

Además, el interprete de comando sh es muy elemental y no aceptaría bastantes opciones de los comandos de mi script. Usa el intérprete bash que es muy potente, fíjate que el encabezado del script empieza por #!/bin/bash, esta diciendo que ese es el interprete a ejecutar.

1. #!/bin/bash
2. # =================================================================
3. # SCRIPT: Instalador de Códecs Packman para openSUSE 
....

Vuelve a probarlo. Y te agradecería que me copiaras toda la salida y el contenido de cat /etc/os-release más tus comentarios.

Las versiones las he puesto yo según se iba añadiendo y corrigiendo el script con ayuda de la IA. Quería subirlo rápidamente para que lo probaseis.

Voy a crear un proyecto en GitLab para subirlo.

Sobre la ejecución del comando. ¡Ha funcionado muy bien!

¡Muchas gracias por el feedback! Es exactamente lo que buscaba.

  1. Tienes razón con el zypper -y; en la próxima versión (v4.8) he eliminado la auto-confirmación para que el usuario tenga el control total de lo que se instala y actualiza (especialmente en Tumbleweed donde los cambios de proveedor son frecuentes).
  2. El mensaje de ‘repositorios borrados’ es un mensaje estándar de Zypper al limpiar la caché de paquetes descargados, pero entiendo que asusta. He suavizado esa parte para evitar confusiones.
  3. Los 17 paquetes que viste en el ‘Vendor Change’ son precisamente el corazón del script: son las librerías que openSUSE trae ‘capadas’ y que el script mueve a Packman para que funcionen los códecs.

¡Actualizo el script con estos cambios!

Ejem!! (se oyen fuertes sonidos de toses pero es porque realmene tengo algo de catarro :rofl: )

karl@localhost~:> ls -l /usr/bin/sh
lrwxrwxrwx 1 root root 4 Feb 11 11:41 /usr/bin/sh -> bash

No había leyes contra eso? O al menos UTF.

Es una curiosidad como otra cualquiera:

karl@localhost~:> which dos2unix 
/usr/bin/dos2unix
karl@localhost:~> cat /etc/os-release 
NAME="openSUSE Leap"
VERSION="16.0"
ID="opensuse-leap"
ID_LIKE="suse opensuse"
VERSION_ID="16.0"
PRETTY_NAME="openSUSE Leap 16.0"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:16.0"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
DOCUMENTATION_URL="https://en.opensuse.org/Portal:Leap"
LOGO="distributor-logo-Leap"

Una vez aplicado dos2unix se ejecuta y parece ir bien. Da “error inesperado” nos sé si porque tiene los paquetes instalados… No, hay más cosas, te pongo la salida de tu comando:

Instalando códecs esenciales desde: packman-repo
(Evitando paquetes de 32 bits y debuginfo)
Actualizando el servicio 'openSUSE'.
Cargando datos del repositorio...
Leyendo los paquetes instalados...
No se encuentra el paquete 'gstreamer-plugins-vaapi' en los repositorios especificados.
'gstreamer-plugins-bad' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-bad' ya está instalado.
'gstreamer-plugins-base' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-base' ya está instalado.
'gstreamer-plugins-good' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-good' ya está instalado.
'gstreamer-plugins-ugly' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-ugly' ya está instalado.
'ffmpeg' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-libav' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'vlc-codecs' ya está instalado.
No hay ninguna actualización posible para 'vlc-codecs-3.0.23-160000.2.1.x86_64'. La última versión disponible ya está i
nstalada.
Error inesperado. Saliendo...
karl@localhost:~> zypper se gstreamer-plugins-ugly
Cargando datos del repositorio...
Leyendo los paquetes instalados...

S  | Name                                      | Summary                                                  | Type
---+-------------------------------------------+----------------------------------------------------------+------------
i  | gstreamer-plugins-ugly                    | Plug-ins para GStreamer, el marco para secuencias de d-> | paquete
i+ | gstreamer-plugins-ugly-codecs             | Codecs/plugins for gstreamer-plugins-ugly                | paquete
   | gstreamer-plugins-ugly-codecs             | Codecs/plugins for gstreamer-plugins-ugly                | paquete src
   | gstreamer-plugins-ugly-codecs-debuginfo   | Debug information for package gstreamer-plugins-ugly-c-> | paquete
   | gstreamer-plugins-ugly-codecs-debugsource | Debug sources for package gstreamer-plugins-ugly-codecs  | paquete
i  | gstreamer-plugins-ugly-lang               | Translations for package gstreamer-plugins-ugly          | paquete

Sin embargo, gstreamer-plugins-vaapi no existe para Leap 16.0.

Más cosas.

Esto:

es contradictorio con esto:

Te recomiendo no hacer eso, no es necesario ni útil. Son reglas que usábamos en openSUSE 10.x y openSUSE 11.x. Lo suyo es que de Packman solo se instale lo estrictamente necesario. Fíjate que hoy en día necesitas el códec x265 y poco más realmente. Los problemas vienen precisamente de duplicar cosas: no es zypper quien las mezcla.

En mi opinión también, lo que hay tiene que mejorar esto:
https://en.opensuse.org/SDB:Installing_codecs_from_Packman_repositories#Option_1:_Packman_Essentials

Solo se necesita eso de ahí: ffmpeg gstreamer-plugins-{good,bad,ugly,libav} libavcodec vlc-codecs (bueno, bad-codecs, ugly-codecs). Y si quieres libxine2-codecs

Actualización importante v4.8 - Repositorio oficial en GitLab

¡Hola a todos! Gracias por el excelente feedback, especialmente a @victorhck de Tumbleweed por sus sugerencias de seguridad.

He actualizado el script a la v4.8 y he creado un hogar oficial para el proyecto en GitLab.

Estos son los cambios principales:

  1. Modo Interactivo: Se ha eliminado la opción -y. Ahora el usuario tiene el control total para aceptar o rechazar los cambios de Zypper.
  2. Aviso de Vendor Change: Se ha añadido un bloque de advertencia visual y una pausa obligatoria antes de realizar el cambio de proveedor, para que el usuario sepa exactamente qué va a ocurrir.
  3. Limpieza de código: Se eliminó la limpieza de caché al final para evitar mensajes confusos del sistema.

Para probar la nueva versión v4.8:

curl -L https://gitlab.com/DiabloRojo/opensuse-tools/-/raw/main/install-codecs.sh -o install-codecs.sh
sed -i 's/\r$//' install-codecs.sh
chmod +x install-codecs.sh
./install-codecs.sh

(Nota: He incluido el comando sed por si acaso se descargara con finales de línea incorrectos en algunos sistemas).

Espero vuestros comentarios, ¡especialmente de los valientes en Leap 16.0!

Os dejo la salida de la ejecución del comando para que veais como funciona (se ha reducido el listado de "El repositorio ‘xxxxxx-Leap’ está actualizado. ")

./install-codecs.sh
=====================================================
  Instalador codecs Packman (HTTPS) - v4.8
  Detección automática + respeta repo Packman existente
=====================================================

→ Detectado: leap 15.6
  (Sistema: openSUSE Leap 15.6)
¿Correcto? (s/N): s
→ Versión confirmada: leap 15.6
→ Buscando repos con: /openSUSE_Leap_15.6/ en la URL
→ Verificando conexión a internet...
✅ Conexión detectada.

→ Buscando repositorios de Packman para: openSUSE_Leap_15.6
[sudo] contraseña para root: 
✓ Encontrado repositorio Packman existente: packman
→ El script utilizará el alias: 'packman'

Refrescando repositorios...
El repositorio 'OSS-Leap' está actualizado.                                                                                                                                    
......
.........                                                                                                                                               
Todos los repositorios han sido actualizados.

Paso 1. Instalando códecs esenciales desde: packman
(Evitando paquetes de 32 bits y debuginfo)
-----------------------------------------------------
Se instalarán los paquetes base de Packman.
Cargando datos del repositorio...
Leyendo los paquetes instalados...
'ffmpeg' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
El paquete 'ffmpeg-7' que proporciona 'ffmpeg' ya está instalado.
'gstreamer-plugins-base' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-base' ya está instalado.
'gstreamer-plugins-good' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-good' ya está instalado.
'vlc-codecs' ya está instalado.
No hay ninguna actualización posible para 'vlc-codecs-3.0.21-150600.2.5.pm.8.x86_64'. La última versión disponible ya está instalada.
'gstreamer-plugins-bad' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-bad' ya está instalado.
'gstreamer-plugins-ugly' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-ugly' ya está instalado.
'gstreamer-plugins-libav' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-libav' ya está instalado.
'gstreamer-plugins-vaapi' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-vaapi' ya está instalado.
'libxine2-codecs' ya está instalado.
No hay ninguna actualización posible para 'libxine2-codecs-1.2.13-150600.208.pm.1.x86_64'. La última versión disponible ya está instalada.
Resolviendo dependencias de paquete...
No hay nada que hacer.

=====================================================
⚠  ADVERTENCIA: CAMBIO DE PROVEEDOR (VENDOR CHANGE)
=====================================================
Para que los códecs funcionen, es NECESARIO que openSUSE
sustituya algunas librerías internas que están capadas
por derechos de patentes por las de Packman.

Esto sincronizará su sistema con el repositorio: packman
Si no desea realizar cambios globales, pulse 'n' en el
próximo paso de Zypper.
=====================================================
Presiona cualquier tecla para continuar o Ctrl+C para abortar...

Paso 2: Sincronizando proveedores (Vendor Change)...
Cargando datos del repositorio...
Leyendo los paquetes instalados...
Calculando actualización de distribución...
No hay nada que hacer.

→ Finalizando...

¡Proceso completado!
Si aceptaste los cambios de Zypper, tus códecs están listos.
=====================================================

Yo en vez de usar curl sugeriría decargar el zip (o git). Lo he hecho así y no he necesitado cambiar nada en el scritp. Descargar, descomprimir y ejecutar.

https://gitlab.com/DiabloRojo/opensuse-tools/-/archive/main/opensuse-tools-main.zip?ref_type=heads

karl@localhost:~/Descargas/opensuse-tools-main> ./install-codecs.sh 
=====================================================
  Instalador codecs Packman (HTTPS) - v4.8
  Detección automática + respeta repo Packman existente
=====================================================

→ Detectado: leap 16.0
  (Sistema: openSUSE Leap 16.0)
¿Correcto? (s/N): s
→ Versión confirmada: leap 16.0
→ Buscando repos con: /openSUSE_Leap_16.0/ en la URL
→ Verificando conexión a internet...
✅ Conexión detectada.

→ Buscando repositorios de Packman para: openSUSE_Leap_16.0
[sudo] contraseña para karl: 
No se encontró ningún repositorio oficial de Packman con '/openSUSE_Leap_16.0/'
→ Añadiendo nuevo: packman-essentials (Essentials)
Añadiendo el repositorio packman-essentials .................................................[terminado]
El repositorio 'packman-essentials' se ha añadido correctamente

URI                      : https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_16.0/Essentials/
Habilitado               : Sí
Comprobación GPG         : Sí
Actualización automática : Sí
Prioridad                : 90 (prioridad aumentada)

Prioridades del repositorio en vigor:             (Consulte 'zypper lr -P' para obtener más información)
      90 (prioridad aumentada)   :  1 repositorio
      99 (prioridad por defecto) :  4 repositorios
→ El script utilizará el alias: 'packman-essentials'

Refrescando repositorios...
El repositorio 'Cockpit' está actualizado.                                                              
El repositorio 'https://download.opensuse.org/distribution/leap/16.0/repo/oss/x86_64' está actualizado. 
El repositorio 'repo-openh264 (16.0)' está actualizado.                                                 
El repositorio 'repo-oss (16.0)' está actualizado.                                                      

Se ha recibido una nueva clave de firma para el repositorio o paquete:

  Repositorio:                 packman-essentials
  Huella digital de la clave:  F887 5B88 0D51 8B6B 8C53 0D13 45A1 D067 1ABD 1AFB
  Nombre de la clave:          PackMan Project (signing key) <packman@links2linux.de>
  Algoritmo de cifrado:        RSA 4096
  Clave creada:                mar 03 sep 2024 22:21:04
  La clave caduca:             jue 03 sep 2026 22:20:39
  Nombre de rpm:               gpg-pubkey-1abd1afb-66d76fb0



    Nota: Firmar los datos permite al destinatario verificar que no se han producido modificaciones
    después de la firma. Aceptar datos sin sumas de verificación o con sumas incorrectas o
    desconocidas puede provocar daños en el sistema y, en casos extremos, incluso que el sistema se
    vea comprometido.

    Nota: Una clave GPG se identifica claramente por su huella. No confíe en los nombres de las
    claves. Si no está seguro si la clave presentada es auténtica, consulte al proveedor del
    repositorio o verifique su sitio web. Muchos proveedores mantienen una página web que muestra
    las huellas de las claves GPG que están utilizando.

¿Desea rechazar la clave, confiar en ella temporalmente o confiar en ella siempre? [r/t/a/?] (r): s
: La respuesta 's' no es válida.
[r/t/a/?] (r): a
Obteniendo los metadatos del repositorio 'packman-essentials' ...............................[terminado]
Construyendo el caché del repositorio packman-essentials ....................................[terminado]
Todos los repositorios han sido actualizados.

Paso 1. Instalando códecs esenciales desde: packman-essentials
(Evitando paquetes de 32 bits y debuginfo)
-----------------------------------------------------
Se instalarán los paquetes base de Packman.
Actualizando el servicio 'openSUSE'.
Cargando datos del repositorio...
Leyendo los paquetes instalados...
No se encuentra el paquete 'gstreamer-plugins-vaapi' en los repositorios especificados.
'gstreamer-plugins-bad' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-base' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-base' ya está instalado.
'gstreamer-plugins-good' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-good' ya está instalado.
'gstreamer-plugins-ugly' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'ffmpeg' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
'gstreamer-plugins-libav' no se ha encontrado entre los nombres de paquetes. Se realizará la búsqueda en las características.
Resolviendo dependencias de paquete...

Los siguientes 7 paquetes van a ser actualizados:
  libavcodec61 libavfilter10 libavformat61 libavutil59 libpostproc58 libswresample5 libswscale8

Los siguientes 7 paquetes van a cambiar de proveedor:
  libavcodec61    SUSE LLC <https://www.suse.com/> -> http://packman.links2linux.de
  libavfilter10   SUSE LLC <https://www.suse.com/> -> http://packman.links2linux.de
  libavformat61   SUSE LLC <https://www.suse.com/> -> http://packman.links2linux.de
  libavutil59     SUSE LLC <https://www.suse.com/> -> http://packman.links2linux.de
  libpostproc58   SUSE LLC <https://www.suse.com/> -> http://packman.links2linux.de
  libswresample5  SUSE LLC <https://www.suse.com/> -> http://packman.links2linux.de
  libswscale8     SUSE LLC <https://www.suse.com/> -> http://packman.links2linux.de

Los siguientes 47 paquetes NUEVOS van a ser instalados:
  ffmpeg-7 gstreamer-plugins-bad gstreamer-plugins-bad-lang gstreamer-plugins-libav
  gstreamer-plugins-ugly gstreamer-plugins-ugly-lang libavdevice61 libavtp0 libgssdp-1_6-0
  libgstadaptivedemux-1_0-0 libgstanalytics-1_0-0 libgstbadaudio-1_0-0 libgstbasecamerabinsrc-1_0-0
  libgstcodecparsers-1_0-0 libgstcodecs-1_0-0 libgstcuda-1_0-0 libgstinsertbin-1_0-0 libgstisoff-1_0-0
  libgstmpegts-1_0-0 libgstmse-1_0-0 libgstsctp-1_0-0 libgsturidownloader-1_0-0 libgstva-1_0-0
  libgstvulkan-1_0-0 libgstwayland-1_0-0 libgstwebrtc-1_0-0 libgstwebrtcnice-1_0-0 libgupnp-1_6-0
  libgupnp-igd-1_6-0 libiso9660-11 libmicrodns1 libmodplug1 libmpcdec5 libmpcdec6 libnice10
  libSoundTouch1 libspandsp3 libsrtp2-1 libvcdinfo0 libx264-165 libx265-215 libxine2 libxine2-codecs
  libxvidcore4 libXvMC1 libzbar0 vlc-codecs

7 paquetes a actualizar, 47 nuevos, 7 a cambiar de proveedor.

Tamaño de la descarga del paquete:    24,8 MiB

Cambio de tamaño de la instalación del paquete:
              |      67,2 MiB  requerido por los paquetes que se instalarán
    48,8 MiB  |  -   18,4 MiB  liberados por los paquetes que van a ser eliminados

Backend:  classic_rpmtrans
¿Desea continuar? [s/n/v/...? mostrar todas las opciones] (s): 

btw, “confiar Siempre” se responde con “a” porque en más de 20 años lo de que hay más idiomas que el inglés aun va regular por días.

Ejecutando guiones postransacción ...........................................................[terminado]
La instalación se ha completado con errores.
Hay programas en ejecución que aún usan archivos y bibliotecas suprimidos o actualizados en actualizaciones recientes. Se deben reiniciar para que se les apliquen las últimas actualizaciones. Ejecute zypper ps -s para mostrar estos programas.
 
Error inesperado. Saliendo...

Por las dudas, zypper ref y después:

karl@localhost:~/Descargas/opensuse-tools-main> sudo zypper inr
Actualizando el servicio 'openSUSE'.
Cargando datos del repositorio...
Leyendo los paquetes instalados...
Resolviendo dependencias de paquete...

Los siguientes 2 paquetes NUEVOS van a ser instalados:
  gstreamer-libnice libxine2-pulse

2 nuevos paquetes a instalar.

Tamaño de la descarga del paquete:    66,6 KiB

Cambio de tamaño de la instalación del paquete:
              |      60,2 KiB  requerido por los paquetes que se instalarán
    60,2 KiB  |  -      0 B    liberados por los paquetes que van a ser eliminados

Backend:  classic_rpmtrans
¿Desea continuar? [s/n/v/...? mostrar todas las opciones] (s): 
Precargando: libxine2-pulse-1.2.13-bp160.1.1.x86_64.rpm [terminado]
Precargando: gstreamer-libnice-0.1.22-160000.3.2.x86_64.rpm [terminado]
Precarga finalizada. [correcto (8,0 KiB/s) ] ................................................[terminado]
Obteniendo: gstreamer-libnice-0.1.22-160000.3.2.x86_64
(https://download.opensuse.org/distribution/leap/16.0/repo/oss/x86_64)
                                                                                    (1/2),  33,4 KiB    
Obteniendo: libxine2-pulse-1.2.13-bp160.1.1.x86_64
(https://download.opensuse.org/distribution/leap/16.0/repo/oss/x86_64)
                                                                                    (2/2),  33,2 KiB    

Buscando conflictos de archivos: ............................................................[terminado]
(1/2) Instalando: gstreamer-libnice-0.1.22-160000.3.2.x86_64 ................................[terminado]
(2/2) Instalando: libxine2-pulse-1.2.13-bp160.1.1.x86_64 ....................................[terminado]
Ejecutando guiones postransacción ...........................................................[terminado]

Por lo demás parece estar bien. No sé qué contiene cada paquete, pero ¿no es buena idea añadir gstreamer-plugins-bad-codecs?

Pequeña corrección:

echo "Si aceptaste

En todo caso, “si has aceptado…” :wink:

Más cosas:

  • gstreamer-plugins-bad y gstreamer-plugins-ugly están en los oficiales, no en Packman

La IA dice esto:
Ese aviso de que no encuentra gstreamer-plugins-vaapi es normal en la nueva Leap 16.0. En esta versión, el soporte de aceleración por vídeo se ha integrado dentro de gstreamer-plugins-bad, por lo que ya no hace falta el paquete por separado. El script intenta instalarlo para dar soporte a versiones anteriores (como la 15.6), pero Zypper simplemente lo omite en la 16.0 sin mayor problema."

VA-API es lo que permite la aceleración por hardware. Sin esto, el procesador (CPU) tiene que hacer todo el trabajo de vídeo, lo que calienta el portátil y gasta más batería.

Tú y la IA… :grinning:

Sin su ayuda hubiera tardado semanas en adaptar la Guia de victorhck a los móviles.
Y en hacer este script otras tantas semanas.


¡Hola a todos!

Gracias al excelente feedback de los compañeros (especialmente por las pruebas en la nueva base de Leap 16.0 de nuestro compañero @karlggest ), he actualizado el script a la v4.9. Esta versión ya está disponible en el repositorio oficial de GitLab.

:new: Novedades de la v4.9:

  1. Soporte optimizado para Leap 16.0: Se ha añadido una gestión inteligente de paquetes (--ignore-missing). Esto evita avisos de “paquete no encontrado” en versiones donde ciertos componentes se han fusionado o cambiado de nombre, haciendo la instalación mucho más limpia.
  2. Nuevo PASO 3 (Opcional): He incluido una nueva fase interactiva que permite instalar los “Paquetes Recomendados” (equivalente a zypper inr). Esto asegura que componentes de audio como Pipewire/PulseAudio queden perfectamente configurados, pero solo si el usuario lo desea.
  3. Robustez: Se ha mejorado la lógica de salida para que los avisos menores de Zypper (como la necesidad de reiniciar programas en uso) no interrumpan el flujo del script.

:rocket: Cómo ejecutar la v4.9:

Para aquellos que quieran probarla, solo tienen que copiar y pegar este bloque en su terminal:

curl -L https://gitlab.com/DiabloRojo/opensuse-tools/-/raw/main/install-codecs.sh -o install-codecs.sh
sed -i 's/\r$//' install-codecs.sh && chmod +x install-codecs.sh
./install-codecs.sh

(El script detectará automáticamente si usas Tumbleweed, Leap 15.6, 16.0 o Slowroll).


Para los curiosos: Podéis ver el código fuente y el nuevo README con instrucciones detalladas aquí: https://gitlab.com/DiabloRojo/opensuse-tools

¡Espero vuestros comentarios!

Fíjate que la instalación de códecs requiere tres comandos:

  1. Añadir el repo.
  2. Refrescar zypper.
  3. Instalar ffmpeg gstreamer-plugins-{good,bad,ugly,libav} libavcodec vlc-codecs (y libxine2-codecs si se quiere). Probablemente ffmpeg, libavcodec, vlc-codecs (y libxine2-codecs) tenga el mismo efecto.

Mientras que para el script planteas cuatro comandos:

  1. Descargar el script.
  2. Corregir el script!!
  3. Darle permiso de ejecución.
  4. Ejecutar el script.

Lo mejor que hace el script es seleccionar el repositorio en un terminal de comandos. YaST Repositorios hace eso mucho mejor. En Myrlyn la pena es que hay que cerrar y volver a abrir el programa.

Una solución mejor sería saber de dónde saca YaST Repositorios (o Myrlyn) la lista de “repos comunitarios” y añadirlo desde ahí :wink:

Pero bien, era una broma :grinning: como he dicho alguna vez tanto en Tumbleweed como en Leap 16.0 hay muchas cosas que antes tenían que estar en Packman pero ahora están en los repos oficiales.

[edito]

Nota:
En la wiki inglesa sospecho que usan el mismo comando de instalación para Leap 16 que para el resto de versiones y funciona porque al final las cosas van como dependencias. Sin embargo, hace algunas versiones sí que había que pasar un buen montón de paquetes de los repos oficiales a Packamn).

Yo diría que el comando sudo zypper install --allow-vendor-change --from packman-essentials ffmpeg gstreamer-plugins-{good,bad,ugly,libav} libavcodec vlc-codecses de esa época, quizá de Leap 15.x. Hoy tiene que ser suficiente instalar ffmpeg, libavcodec, vlc-codecs y libxine2-codecs como alternativa. Todo lo demás ya se debería instalar como recomendado (zypper inr) y dependencias.

Se puede ejecutar con un solo comando, no lo he puesto porque no me aconseja ponerlo, es hacerlo de esta forma:

bash <(curl -sL https://gitlab.com/DiabloRojo/opensuse-tools/-/raw/main/install-codecs.sh)

¿Quieres que lo ponga en README y en el primer mensaje de este hilo?

Si quieres saber que paquetes son dependientes de un paquete a instalar. Usa este comando que simula una instalación.

sudo zypper install --dry-run ffmpeg

Y te diría que más paquetes se instalan a instalar el paquete ffmpeg, estoy seguro que los paquetes esenciales de los codecs arrastran (instalan) más paquetes en Leap 16 que en Leap 15.6.

Cuando esté en el ordenador, te copio lo que me sale.

Yo diría que eso no chequea los retornos de carro :wink:

Es cierto que puedes encadenar los comandos, y también los zypper con simples &&. Hacer más sencillo un proceso no consiste en hacer cosas más complejas, eso es trampa :grinning:

Lo que digo es que si algunos paquetes ya van a instalarse por dependencias, el comando de instalación con zypper (o la selección de paquetes en YAST o Myrlyn) es más simple, lo cual es una obviedad.

El problema de los retornos de carro es de pastebin que esta pensado para Windows. En GitLab no tiene ese problema.

sudo zypper install --dry-run ffmpeg

Como simulador dice lo que va a instalar, pero si una dependencia ya estaba instalado no lo va a mostrar.

Mejor es usar la opción info y la subopcion --requires para ver las dependencias y lo que va a instalar si el sistema estuviera limpio. Como este ejemplo.
Me gustaría saber lo que muestra dicho comando en Leap 16.0 y TW.

~> zypper info  --requires ffmpeg
Cargando datos del repositorio...
Leyendo los paquetes instalados...


Información para paquete ffmpeg:
--------------------------------
Repositorio           : SLE-Update-Leap
Nombre                : ffmpeg
Versión               : 3.4.2-150200.11.67.1
Arquitectura          : x86_64
Proveedor             : SUSE LLC <https://www.suse.com/>
Tamaño de instalación : 2,3 MiB
Instalado             : No
Estado                : no se ha instalado
Paquete de fuentes    : ffmpeg-3.4.2-150200.11.67.1.src
URL ascendente        : https://ffmpeg.org/
Resumen               : Library for working with various multimedia formats
Descripción           : 
    FFmpeg is a multimedia framework, able to decode, encode,
    transcode, mux, demux, stream, filter and play several formats
    that humans and machines have created.


    This build of ffmpeg is limited in the number of codecs supported.
Requiere              : [34]
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    libz.so.1()(64bit)
    libm.so.6(GLIBC_2.2.5)(64bit)
    libc.so.6(GLIBC_2.14)(64bit)
    libpthread.so.0(GLIBC_2.2.5)(64bit)
    libavutil.so.55()(64bit)
    libavutil.so.55(LIBAVUTIL_55)(64bit)
    libSDL2-2.0.so.0()(64bit)
    libavcodec.so.57()(64bit)
    libavcodec.so.57(LIBAVCODEC_57)(64bit)
    libavformat.so.57()(64bit)
    libavformat.so.57(LIBAVFORMAT_57)(64bit)
    libswresample.so.2()(64bit)
    libswresample.so.2(LIBSWRESAMPLE_2)(64bit)
    libavfilter.so.6()(64bit)
    libavfilter.so.6(LIBAVFILTER_6)(64bit)
    libavresample.so.3()(64bit)
    libavresample.so.3(LIBAVRESAMPLE_3)(64bit)
    libpostproc.so.54()(64bit)
    libpostproc.so.54(LIBPOSTPROC_54)(64bit)
    libswscale.so.4()(64bit)
    libswscale.so.4(LIBSWSCALE_4)(64bit)
    libavdevice.so.57()(64bit)
    libavdevice.so.57(LIBAVDEVICE_57)(64bit)
    libavutil55 = 3.4.2-150200.11.67.1
    libavcodec57 = 3.4.2-150200.11.67.1
    libavformat57 = 3.4.2-150200.11.67.1
    libswresample2 = 3.4.2-150200.11.67.1
    libavfilter6 = 3.4.2-150200.11.67.1
    libavresample3 = 3.4.2-150200.11.67.1
    libpostproc54 = 3.4.2-150200.11.67.1
    libswscale4 = 3.4.2-150200.11.67.1
    libavdevice57 = 3.4.2-150200.11.67.1

En TW:

 D     ~/Descargas  zypper info --requires ffmpeg                                 ✔  11:22:21 
Cargando datos del repositorio...
Leyendo los paquetes instalados...


No se encuentra paquete 'ffmpeg'.
No se encuentran elementos que coincidan.

Hay que hacer esto otro para que salga lo que pides (en tu caso es ffmpeg 3.4.2, en el mio 8.0.1):

 D     ~/Descargas  zypper info --requires ffmpeg-8                               ✔  11:26:00 
Cargando datos del repositorio...
Leyendo los paquetes instalados...


Información para paquete ffmpeg-8:
----------------------------------
Repositorio           : Packman
Nombre                : ffmpeg-8
Versión               : 8.0.1-1699.4.pm.99
Arquitectura          : x86_64
Proveedor             : http://packman.links2linux.de
Tamaño de instalación : 2,8 MiB
Instalado             : Sí (automáticamente)
Estado                : obsoleto (instalada la versión 8.0.1-1699.4.pm.90)
Paquete de fuentes    : ffmpeg-8-8.0.1-1699.4.pm.99.src
URL ascendente        : https://ffmpeg.org/
Resumen               : Set of libraries for working with various multimedia formats
Descripción           : 
    FFmpeg is a multimedia framework, able to decode, encode,
    transcode, mux, demux, stream, filter and play several formats
    that humans and machines have created.
Requiere              : [41]
    libc.so.6()(64bit)
    libc.so.6(GLIBC_2.34)(64bit)
    libm.so.6()(64bit)
    libc.so.6(GLIBC_2.2.5)(64bit)
    libc.so.6(GLIBC_2.38)(64bit)
    libc.so.6(GLIBC_2.4)(64bit)
    libc.so.6(GLIBC_2.14)(64bit)
    libc.so.6(GLIBC_2.3.4)(64bit)
    libm.so.6(GLIBC_2.29)(64bit)
    libc.so.6(GLIBC_2.33)(64bit)
    libm.so.6(GLIBC_2.2.5)(64bit)
    libz.so.1()(64bit)
    libc.so.6(GLIBC_2.7)(64bit)
    libc.so.6(GLIBC_2.3.2)(64bit)
    libm.so.6(GLIBC_2.35)(64bit)
    libavutil.so.60()(64bit)
    libavutil.so.60(LIBAVUTIL_60.8_SUSE)(64bit)
    libavcodec.so.62()(64bit)
    libavcodec.so.62(LIBAVCODEC_62.11_SUSE)(64bit)
    libavformat.so.62()(64bit)
    libavformat.so.62(LIBAVFORMAT_62.3_SUSE)(64bit)
    libSDL2-2.0.so.0()(64bit)
    libswscale.so.9()(64bit)
    libswscale.so.9(LIBSWSCALE_9.1_SUSE)(64bit)
    libswresample.so.6()(64bit)
    libswresample.so.6(LIBSWRESAMPLE_6.1_SUSE)(64bit)
    libc.so.6(GLIBC_2.10)(64bit)
    libplacebo.so.360()(64bit)
    libSDL2-2.0.so.0(SUSE_2.0.8)(64bit)
    libSDL2-2.0.so.0(SUSE_2.0.6)(64bit)
    libavdevice.so.62()(64bit)
    libavdevice.so.62(LIBAVDEVICE_62.1_SUSE)(64bit)
    libavfilter.so.11()(64bit)
    libavfilter.so.11(LIBAVFILTER_11.4_SUSE)(64bit)
    (libavfilter11 = 8.0.1-1699.4.pm.99 or ffmpeg-8-mini-libs = 8.0.1-1699.4.pm.99)
    (libswscale9 = 8.0.1-1699.4.pm.99 or ffmpeg-8-mini-libs = 8.0.1-1699.4.pm.99)
    (libavutil60 = 8.0.1-1699.4.pm.99 or ffmpeg-8-mini-libs = 8.0.1-1699.4.pm.99)
    (libavcodec62 = 8.0.1-1699.4.pm.99 or ffmpeg-8-mini-libs = 8.0.1-1699.4.pm.99)
    (libswresample6 = 8.0.1-1699.4.pm.99 or ffmpeg-8-mini-libs = 8.0.1-1699.4.pm.99)
    (libavdevice62 = 8.0.1-1699.4.pm.99 or ffmpeg-8-mini-libs = 8.0.1-1699.4.pm.99)
    (libavformat62 = 8.0.1-1699.4.pm.99 or ffmpeg-8-mini-libs = 8.0.1-1699.4.pm.99)

Saludos

1 Like