viernes, 25 de julio de 2025

Instalar VirtualBox en Debian con extension pack

VirtualBox es un software de virtualización muy fácil de instalar y desinstalar que no requiere licencias para su uso, aunque tiene una parte que no es libre llamada extesion pack que se puede usar para fines educativos y es necesaria si se quiere tener acceso a cosas como impresoras, portapapeles compartido, etc... 

Para instalar correctamente VirtualBox con Extension Pack en Debian 12 hay que seguir los siguientes pasos: 

  1. Si tenemos una versión previa de Virtual Box HAY QUE DESINSTALARLA o nos dará un error.
  2. Descargar VirtualBox, para lo cual debemos ir a la página de descargas de las versiones para GNU/Linux y elegir la correspondiente a Debian 12, o bien descargarla directamente desde consola, con un comando similar a este (el nº. de versión puede cambiar):
    wget https://download.virtualbox.org/virtualbox/7.1.12/virtualbox-7.1_7.1.12-169651~Debian~bookworm_amd64.deb
  3. Instalar VirtualBox:
    sudo dpkg -i virtualbox-7.1_7.1.12-169651~Debian~bookworm_amd64.deb
  4. Instalar dependencias si sale un error solicitándolas:
    sudo apt install -f
  5. Nos descargamos la versión correspondiente de VirtualBox extensión pack a esta versión de VB haciendo clic en el botón de "Accept and download", o si lo prefieres descargarlo desde la consola:
    wget https://download.virtualbox.org/virtualbox/7.1.12/Oracle_VirtualBox_Extension_Pack-7.1.12.vbox-extpack
  6. Ejecutamos la instalación del extension pack arrastando el archivo al VirtualBox arrancado, o desde consola:
    virtualbox Oracle_VirtualBox_Extension_Pack-7.1.12.vbox-extpack
  7. Nos pedirá aceptar la licencia educativa para poder instalar al ser esta parte del virtualizador no libre. 

 
Y listo, ya puedes disfrutar de tus máquinas virtuales.


¿Y para Debian 13 que sale la versión estable en un par de semanas? 

Lo mismo, solo que tendrás que bajarte la versión para esa versión en concreto y suele tardar algo más en estar disponible, así que si vas a necesitar VirtualBox mejor espera a que esté disponible para hacer la actualización y ya lo tienes sólido como una roca ;-)

viernes, 18 de julio de 2025

¿Cómo configurar dos VirtualHost en Apache2 con diferentes versiones de PHP?

Hace poco vimos como instalar y usar dos versiones distintas de php, ahora vamos a afinar más y vamos ha hacer que cada virtualHost de Apache2 use una versión distinta de PHP (por ejemplo, PHP 7.4 y PHP 8.3) en Debian 12, la forma más robusta y recomendada es usar PHP-FPM junto con el módulo proxy_fcgi de Apache. Así, cada sitio web puede ejecutar su propia versión de PHP de manera simultánea e independiente.

Pasos para la configuración:

  1. Instala y habilita los módulos necesarios de Apache:
    sudo a2enmod proxy_fcgi setenvif
    sudo systemctl restart apache2
  2. Asegúrate de tener instalados y activos los servicios PHP-FPM para cada versión
    Por ejemplo:
    sudo systemctl enable php7.4-fpm
    sudo systemctl start php7.4-fpm

    sudo systemctl enable php8.3-fpm
    sudo systemctl start php8.3-fpm
    Verifica que los sockets existan en /run/php/ (por ejemplo, php7.4-fpm.sock y php8.3-fpm.sock).

  3. Configura los archivos de VirtualHost
    Ejemplo para PHP 7.4
    Archivo: /etc/apache2/sites-available/site1.tu_dominio.conf
    <VirtualHost *:80>
        ServerAdmin admin@site1.tu_dominio
        ServerName site1.tu_dominio
        DocumentRoot /var/www/site1.tu_dominio

        <Directory /var/www/site1.tu_dominio>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>

        <FilesMatch \.php$>
            SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
        </FilesMatch>

        ErrorLog ${APACHE_LOG_DIR}/site1_error.log
        CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
    </VirtualHost>
    Ejemplo para PHP 8.3
    Archivo: /etc/apache2/sites-available/site2.tu_dominio.conf
    <VirtualHost *:80>
        ServerAdmin admin@site2.tu_dominio
        ServerName site2.tu_dominio
        DocumentRoot /var/www/site2.tu_dominio

        <Directory /var/www/site2.tu_dominio>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>

        <FilesMatch \.php$>
            SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"
        </FilesMatch>

        ErrorLog ${APACHE_LOG_DIR}/site2_error.log
        CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
    </VirtualHost>

  4. Habilita los sitios y recarga de Apache:
    sudo a2ensite site1.tu_dominio.conf
    sudo a2ensite site2.tu_dominio.conf
    sudo systemctl reload apache2

En conclusión:

  • Cada VirtualHost especifica su versión de PHP mediante la directiva SetHandler apuntando al socket de PHP-FPM correspondiente.
  • Puedes tener tantos sitios como necesites, cada uno con su propia versión de PHP, sin conflictos.
  • Esta configuración es válida tanto para entornos de desarrollo como de producción y es la más flexible y mantenible

.

viernes, 11 de julio de 2025

M2000: emulador Phillips P2000

M2000 es un emulador libre de ordenadores Philips P2000, uno de los primeros ordenadores domésticos de 1981 que, heredero de las consolas Videopac, funcionaba con cartuchos y minicassettes. NO ES UN MSX.

El mismo autor incluye en otro repositorio software de ejemplo para el M2000.

Uno de sus cartuchos incluía un Microsoft Basic muy limitado pero con el que se podían hacer algunas cosas y que probarlo es un buen ejercicio para conocer los inicios de la informática de consumo. También traía cartuchos de Pascal y procesador de textos, estando disponibles otros incluso con CP/M.


Para quien simplemente quiera instalarlo y echarle un vistazo sin complicaciones, ya se puede instalar desde el script RetroMultiInstaller y no necesita leer el siguiente apartado del artículo.


Compilar M2000

Para quien prefiera compilarlo por si mismo debe ejecutar los siguientes comandos:

sudo apt install git build-essential liballegro5-dev
git clone https://github.com/p2000t/M2000
cd M2000
make allegro

Dentro de esta carpeta tendremos un archivo ejecutable llamado M2000 que debemos ejecutar con el comando;

./M2000

Para mayor comodidad recomiendo crear un acceso directo en el escritorio o en los menús, por ejemplo.

Por cierto, funciona perfectamente en PC con distros de 64 y 32 bits, pero también en todos los modelos de raspberry pi y similares.


Enlaces de interés

Para quien quiera saber más sobre este ordenador y su funcionamiento hay varios artículos sobre la serie Phillips P2000:

viernes, 4 de julio de 2025

RetroMultiInstaller: los menús solo muestran apps compatibles con el ordenador que lo ejecuta (e instalación desatendida)

RetroMultiInstaller, el script facilitador de instalaciones tenía el defecto de ofrecerte todos los scripts de instalación en sus menús, aunque no fueran compatibles con tu hardware, así por ejemplo, si lo ejecutabas en una Raspberry Pi podrías terminar instalando un programa que no fuera compatible con ARM y que por tanto no iba a funcionar.

También se ha corregido la instalación por lotes desatendida y ya aparecen solo los programas ordenados para la arquitectura actual.
 
Recuerda que, si ya tienes instalado RMI, lo puedes actualizar seleccionando las opciones:
Update ► update own
 

¿Como lo he hecho y como puedes añadir más instaladores?

Para solucionar esto he incluido un nuevo mecanismo que mira las arquitecturas declaradas en los archivos menu/*.txt de tal manera que la definición de cada línea de script quedaría ahora con esta estructura:
arquitecturas etiqueta definición
  • Las arquitecturas se ponen una detrás de otra separadas por el carácter tubería "|" por ejemplo, NUNCA ESPACIOS NORMALES.
  • La etiqueta sigue siendo el identificador del script.
  • La definición tampoco permite ESPACIOS NORMALES pero sí espacios duros.
Algunos ejemplos, que podemos encontrar casi todos en el archivo menus/multisystem.txt:
  • Si ponemos como arquitectura 'all' no filtrará, es decir, mostrará el script del menú independientemente del hardware desde el que ejecutemos RMI:
    all ZEsarUX ZEsarUX multi emulator
  • Podemos poner una sola arquitectura, en la siguiente línea tenemos un script que solo se mostraría en Raspberry pi OS de 32 bits:
    armv7l Retropie Multi Emulationstation Enviroment
  • Un ejemplo de un script que se ejecutaría en varias arquitecturas, en este caso solo para Intel de 32 o 64 bits o Raspberry pi OS de 64 bits.
    x86|x86_64|aarch64 RetroVM Retro Virtual Machine
  • Las opciones para abrir otro menú o salir del actual deben tener la etiqueta menu para no aparecer en las opciones de la instalación desatendida:
    menu Exit Return to Main Menu
  • Si en un momento un script dejara de funcionar ya no teníamos que borrarlo podemos dejarlo para arreglarlo más adelante y en el menú poner como arquitectura algo así como 'none' o 'disabled':
    none oldgame Old Game
 

He encontrado un programa que NO funciona, ¿qué hago?

Ahora queda la ardua tarea de ir comprobando que las arquitecturas definidas en cada script se corresponden con los programas que se pueden ejecutar en cada arquitectura, como seguro se me van a pasar muchos necesitaré vuestra ayuda en los comentarios para que me indiquéis los que no funcionan.
 
Aunque si abrís una incidencia en el propio gitlab me resultará más fácil tener el seguimiento de lo que está pendiente de arreglar. ;-)



Instalación desatendida por lotes (batch)