viernes, 27 de junio de 2025

Instalar dos versiones distintas de php en Debian

Para instalar varias versiones de PHP, por ejemplo, 7.4 y 8.3 en Debian 12 , podemos usar el repositorio de Ondřej Surý, que es la fuente recomendada y más actualizada para múltiples versiones de PHP en Debian. Aquí tienes la guía paso a paso:

  1. Actualizamos el sistema:
    sudo apt update
    sudo apt upgrade -y
  2. Instalamos las dependencias que vamos a necesitar:
    sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common curl wget
  3. Agremos el repositorio de Ondřej Surý:
    sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
    echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
    sudo apt update
  4. Instalamos php 7.4 y sus módulos necesarios:
    sudo apt install -y php7.4 php7.4-cli php7.4-fpm php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-zip
  5. Instalamos php 8.3 y sus módulos necesarios:
    sudo apt install -y php8.3 php8.3-cli php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip
  6. Comprobamos las instalaciones:
    php7.4 -v
    php8.3 -v
  7. Podemos cambiar la versión activa de php manualmente desde la línea de comandos:
    sudo update-alternatives --set php /usr/bin/php7.4
    O para PHP 8.3:
    sudo update-alternatives --set php /usr/bin/php8.3
  8. O Habilitar y arrancar PHP-FPM para cada versión:
    sudo systemctl enable php7.4-fpm
    sudo systemctl start php7.4-fpm
    O para PHP 8.3:
    sudo systemctl enable php8.3-fpm
    sudo systemctl start php8.3-fpm

Esta metodología es segura y ampliamente usada en entornos de producción y desarrollo.


Configuración extra para Moodle

Para usar con Moodle hay que instalar también los siguientes paquetes:

sudo apt install php7.4-intl php7.4-xmlrpc php7.4-soap

Y

sudo apt install php8.3-intl php8.3-xmlrpc php8.3-soap 

En los archivos  /etc/php/X.Y/fpm/php.ini hay que añadir o cambiar en la sección correspondiente:

max_input_vars = 5000 

Y reiniciamos los servicios php-fpm

sudo systemctl restart php7.4-fpm

sudo systemctl restart php8.3-fpm



¿Qué diferencia, ventajas e inconvenientes, hay entre usar update-alternatives o php-fpm?

update-alternatives y PHP-FPM cumplen funciones distintas en la gestión de PHP en sistemas Debian:

  • update-alternatives: Herramienta del sistema para seleccionar la versión de un ejecutable por defecto en la línea de comandos (CLI), como php, phar, etc.
  • PHP-FPM: Gestor de procesos FastCGI para PHP, diseñado para servir aplicaciones web de alto rendimiento, gestionando pools de procesos PHP que atienden peticiones web a través de sockets o puertos TCP.

Cuadro comparativo:

Característicaupdate-alternativesPHP-FPM
PropósitoSelección de versión de ejecutable CLIProcesamiento eficiente de peticiones web PHP
ÁmbitoLínea de comandos y scripts del sistemaServidores web (Apache, Nginx, etc.)
Cambio de versiónAfecta solo a la CLI (no al servidor web)Cada pool puede usar una versión diferente
ConcurrenciaNo aplicaManeja múltiples peticiones concurrentes
PersonalizaciónLimitada a la selección de ejecutablePools configurables por usuario, dominio, etc.

 

Consideraciones:

  • Cambiar la versión de PHP con update-alternatives solo afecta a la CLI, no a los sitios web servidos por PHP-FPM.
  • Para que un servidor web use una versión específica de PHP-FPM, debes apuntar el socket o puerto correspondiente en la configuración del servidor web.
  • No puedes tener un único socket genérico para alternar versiones de PHP-FPM sin perder la posibilidad de ejecutar varias versiones simultáneamente.
  • PHP-FPM es imprescindible para entornos web modernos y de alto tráfico, mientras que update-alternatives es útil para scripts y tareas del sistema.



viernes, 20 de junio de 2025

Copiar archivos clave de un Batocera a otro

Imagina que un amigo te ha pasado una imagen para raspberry pi, ya preparada con una colección estupenda de roms y bios de libre difusión para raspberry pi 3+ pero tu tienes una raspberry pi 2, una 4 o una 5, por supuesto no te funciona, ¿qué haces?

Pues lo más sencillo es bajarse la versión para tu modelo concreto de la página oficial de Batocera y copiarte los directorios roms y bios de la imagen de tu amigo a tu tarjeta, pero ¿cómo?

Hay varias maneras de conseguir esta "proeza", hoy voy a explicar la más evidente, copiar el contenido de la carpeta /share de una imagen de batocera a otra, al menos los subdirectorios roms y bios completos.

Para complicarnos lo mínimo vamos a "tostar" la imagen que nos ha pasado nuestro amigo a un pendrive que tenga como mínimo el tamaño de la imagen,  con el tamaño suficiente y conectarlo a un puerto USB.

La imagen microSD que hemos tostado de la página oficial de batocera la conectaríamos al PC, si usamos GNU/Linux bastaría con ejecutar mc como administrador (root) y copiar el contenido de cada carpeta del pendrive a la microSD.

Pero... ¿y si usamos Windows?

Hay soluciones para leer particiones de GNU/Linux, como ext4, desde el ventanucos pero son bastante inestables y nos pueden dar algún disgusto, así que la solución correcta es hacerlo de manera nativa.

Simplemente, nos creamos un pendrive de autoarranque con alguna distribución live sencillota, por ejemplo Linux Mint Mate que ya incluye mc (aunque si usamos otra la podíamos instalar en el live temporalmente) y seguir los mismos pasos que si tuvieramos un GNU/Linux nativo. Así ni siquiera tocamos el sistema que trae el ordenador y no lo comprometemos con software experimental y puede que hasta de dudosa procedencia.

viernes, 13 de junio de 2025

Lo mínimo para hacer un video con presentación una sola persona con un móvil y edición básica con GNU/Linux

Este experimento lo hice para crear el vídeo sobre como resetear un Android TV.

En esta ocasión usé dos programas, ffmpeg y vlc, que si no los tienes instalados ya estás tardando. 

sudo apt install ffmpeg vlc

Vamos al lío:
  • introduccion.mp4En la primera parte de vídeo aparezco en mi cuarto de ordenadores con algunos equipos de fondo, este trozo lo grabé yo mismo con el móvil haciendo un "video selfie", pero como en todos los selfies la imagen sale como si te miraras en un espejo, por tanto este trozo requería un efecto de espejo horizontal, para ello usé el siguiente comando de ffmpeg:

fmpeg -i introduccion.mp4 -vf "hflip" introduccion_corregida.mp4

 

  • video_principal.mp4Después grabé en otro archivo todo lo que fue la operación de wipe con la cámara normal del móvil, aquí el problema era hacerlo todo con una sola mano, pero por lo demás fue un vídeo que no requirió modificaciones.

  • video_final.mp4Así que ya solo me quedaba unir los dos trozos, en esta ocasión usé VLC en modo CLI, es decir, un comando de consola:

vlc introduccion_corregida.mp4  video_principal.mp4 --sout "#gather:std{access=file,dst=video_final.mp4}" --sout-keep


Resumiendo: 

introduccion_corregida.mp4 +  video_principal.mp4 = video_final.mp4

Y ya está, terminado y listo para subir :-D

viernes, 6 de junio de 2025

Script bash para comprimir cada directorio de la ruta actual en un archivo zip independiente

Supongamos que tenemos, en una ruta determinada de nuestro disco, varias carpetas cada una con los archivos correspondientes a un determinado programa y queremos que el contenido de cada una se guarde en un archivo zip independiente, lo podíamos hacer con un script como éste:

#!/bin/bash
for dir in */; do
    dirname=$(basename "${dir}")
    cd ${dir}
    zip -r "../${dirname}.zip" .
    cd ..
done

El script hace lo siguiente:

  1. Recorre la lista de nombres de directorios
  2. Nos cambia a la ruta
  3. Comprime el contenido en un archivo zip con el mismo nombre que el directorio y guardándolo en un nivel inferior de la ruta, es decir, donde ejecutamos el script.
  4. Vuelve a la ruta original, bajando un nivel.

Este script lo copiaría con el nombre dir2zip en la ruta /usr/local/bin para que esté disponible desde cualquier lugar de nuestro disco, ya que debe ejecutarse desde el mismo directorio.

Se puede mejorar fácilmente para que haga otras cosas:

  • Pasar la ruta opcionalmente como parámetro.
  • Comprimir solo un nivel e ir ejecutándose recursivamente, si esa es nuestra necesidad.
  • Borrar la carpeta después de una compresión exitosa.

Si se te ocurre maneras de mejorar en el script exponlas en los comentarios y así seguimos aprendiendo entre todos.

Quien sabe lo mismo me animo y explico más adelante como hacer el script contrario: zip2dir.

viernes, 30 de mayo de 2025

Usar impresora Epson WorkForce WF-2835 en Debian GNU/Linux

Estos días un compañero del trabajo me ha regalado esta multifunción Epson WorkForce WF-2835.

 


Se trata de una multifunción, con alimentador de hojas, Wi-Fi y muchas de esas cosas modernas que tienen los aparatos de ahora, ¿podré echarla a andar en mi Debian GNU/Linux?

La podemos conectar con el tradicional cable USB pero ya que tenemos, vamos a...

Configurar la Wi-Fi 

Me ha sorprendido la facilidad para configurar la Wi-Fi:

  1. Eliges el SSID de tu Wi-Fi
  2. Tecleas la contraseña, bien usando el teclado virtual o con el teclado tipo móvil del panel.
  3. Pulsar OK

Compruebo si mi i7 con Debian ha detectado la impresora en red directamente sin hacer nada más, para ello me voy a las opciones del menú:

Sistema ► Administración ► Configuración de Impresión
Y efectivamente, ya aparece entre las impresoras configuradas en mi ordenador:


Pero si no es así toca instalar...

Los drivers

Hay que instalarse tanto el driver para impresora como el driver y utilidad para el escaner,  en el caso de Debian, el de impresora lo tenemos en los repositorios, así que simplemente hay que ejecutar:

sudo apt install epson-inkjet-printer-escpr epson-printer-utility sane-airscan escputil

El driver para el scanner NO lo tenemos ni en los repositorios ni en la página oficial de Epson, así que hay que descargárselos de freeprinterdriverdownload.

Hay que instalarse el driver para impresora como para el escaner, y que vienen como paquetes deb, tanto para 64 bits como para 32 bits, en mi caso instalo los de 64 bits y arreglo dependencias al final:

wget   https://download2.ebz.epson.net/epsonscan2/common/deb/x64/epsonscan2-bundle-6.6.42.0.x86_64.deb.tar.gz

tar -zxvf epsonscan2-bundle-6.6.42.0.x86_64.deb.tar.gz

cd epsonscan2-bundle-6.6.42.0.x86_64.deb

./install.sh


Uso de Epson Scan 2

Para acceder a este programa de escaneo por red nos vamos a las opciones de menú:

Aplicaciones ► Graficos ► Epson scan 2

La primerz vez nos pedirá la dirección IP, pero nosotros mejor le ponemos el nombre cualificado para que no nos lo cambie el router, que puede ser algo así como EPSON161EB9.local (*)

Le damos a aceptar, lo busca y ya tenemos operativo el escáner inalámbrico:


Si los conectamos por cable como siempre tendremos disponible el escaner por el programa estándar de escaneado de GNU/Linux.

 (*) El nombre cualificado del dispositivo lo podemos obtener con aplicaciones como AngryIPScanner o comandos de red de consola para descubrir los dispositivos conectados a nuestra Intranet.


viernes, 23 de mayo de 2025

Pysol Fan Club Edition, el juego definitivo de cartas es software libre

Pysol Fan Club Edition, es una alucinante colección de juegos de cartas que instalamos en un solo paquete:

sudo apt install pysolfc

Incluye la friolera de alrededor de ¡1200 juegos de cartas! organizados por categorías.


Permite cambiar algunas reglas y la baraja que queremos usar, incluso cierta personalización como descargar conjuntos de cartas.

Os animo a que lo instaléis y lo probéis, ya que si os gustan los juegos de cartas no os vais a aburrir.

viernes, 16 de mayo de 2025

¿Cómo quitar peso a una imagen con GIMP?

GIMP, aparte de ser un gran programa de retoque fotográfico también es capaz de hacer operaciones tanto operaciones complejas como algunas tan sencillas como bajar el peso de una imagen, es decir, el tamaño de archivo y lo que ocupa en nuestro disco, evitando problemas de carga en páginas web, libros electrónicos, dispositivos de almacenamiento limitado, etc...

El primer paso es, evidentemente abrir la imagen que abriremos como abrimos cualquier archivo en cualquier programa.


Una vez abierto hay diversas estrategias para bajar el tamaño del archivo:

  • Limpiar la imagen: mediante filtros o incluso aplanado manual se puede bajar muchísimo el peso de la imagen.
  • Reducir el tamaño: ya sea reduciendo el cuadro o reescalando.
    En el menú 'Imagen' puedes explorar las opciones 'Tamaño del lienzo...' y 'Escalar la imagen...'
  • Reducir la cantidad de colores.
    La manera más sencilla es ir a las opciones:
    Colores ► Posterizar
    y vamos aumentando uno a uno el valor de 'Niveles de posterización', es decir, el número de colores, hasta que la imagen se vea razonablemente bien.

Para guardarlo, nos vamos a las opciones Archivo y Exportar, ya que si vamos a guardar lo salvará como un archivo nativo de GIMP, algo muy interesante para editarlo por capas por ejemplo, pero en este caso no nos interesa ya que lo que queremos es que siga con el mismo formato y menos tamaño.

Probamos a grabarla con la extensión .png si se trata de una imagen generada por ordenador o con transparencias.

Si es una fotografía seguramente obtendremos mejores resultados con la extensión .jpg.

¡Ojo! jpg es un formato con pérdidas mientras que png no tiene pérdidas, solo comprime la imagen. 

¿Conoces más trucos para reducir el peso de imágenes con GIMP? Compártelos en los comentarios.