Falsifica fácilmente la salida de lsb_release para diferentes versiones

Falsifica fácilmente la salida de lsb_release para diferentes versiones

A menudo reconstruyo paquetes de software (principalmente Debian) para versiones anteriores (tanto de Debian como de Ubuntu, incluido oldoldstable). Algunos de estos paquetes usan el lsb_releasecomando para determinar la distribución actual, para cambiar el comportamiento, Build-Dependsetc.

Tengouna configuración de constructor de vacas con arquitectura de CPU y distribución múltiple, pero para preparar los paquetes fuente (que luego se crean en un entorno limpio que coincida con la distribución de destino), todavía necesito hacer algo como:

dpkg-source -x openjdk-7_7u55-2.4.7-1~deb7u1.dsc
cd openjdk-7-7u55-2.4.7
dch --bpo
dpkg-buildpackage -S

El dpkg-buildpackage -Spaso crea unfuentepaquete ( *.dscy archivos variados) después de ejecutar el objetivo limpio (que regenera Debian/control en muchos paquetes). Pero para esto, la lsb_releasesalida debe ser, por ejemplo, squeezeo incluso lenny.

Demi trabajo en Debian/m68kSé que puedo crear un /etc/lsb-releasearchivo que contenga líneas mágicas y poco documentadas para controlar la salida de lsb_release, que de otro modo examina, por ejemplo, el sources.listarchivo APT, preferencesetc. para determinar la distribución. Pero no existe una manera fácil de hacer que el resultado refleje otra distribución existente.

¿Alguien tiene una colección de dichos archivos para reflejar la distribución de destino?

Respuesta1

Para falsificar lsb_release, utilice este script:

#!/bin/bash
Help()
{
echo "
Usage: lsb_release [options]

    lsb SPOOFER!!!

put this in your home bin dir, then do:
chmod a+x ~/bin/lsb_spoof
cd /usr/bin
mv lsb_release lsb_releaseBAK
ln -s /home/user/bin/lsb_spoof lsb_release

Options:
  -h, --help         show this help message and exit
  -v, --version      show LSB modules this system supports
  -i, --id           show distributor ID
  -d, --description  show description of this distribution
  -r, --release      show release number of this distribution
  -c, --codename     show code name of this distribution
  -a, --all          show all of the above information
  -s, --short        show requested information in short format"
}

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04 LTS"

SILENT=false
while getopts ":hs" option; do
   case $option in
      s) SILENT=true;;
      h) # display Help
         Help
         exit;;
   esac
done

unset OPTIND
while getopts ":hvidrcas" option; do
   case $option in
      h) # display Help
         Help
         exit;;
      v) echo "No LSB modules are available.";;
      i) FIELD_NAME="Distributor ID:    "
         if [ $SILENT = true ]
         then
            FIELD_NAME=""
         fi
         echo $FIELD_NAME$DISTRIB_ID;;
      d) FIELD_NAME="Description:   "
         if [ $SILENT = true ]
         then
            FIELD_NAME=""
         fi
         echo $FIELD_NAME$DISTRIB_DESCRIPTION
         exit;;
      r) FIELD_NAME="Release:   "
         if [ $SILENT = true ]
         then
            FIELD_NAME=""
         fi
         echo $FIELD_NAME$DISTRIB_RELEASE
         exit;;
      c) FIELD_NAME="Codename:  "
         if [ $SILENT = true ]
         then
            FIELD_NAME=""
         fi
         echo $FIELD_NAME$DISTRIB_CODENAME
         exit;;
      a) echo "No LSB modules are available."
            if [ $SILENT = true ]
            then
                echo $DISTRIB_ID
                echo $DISTRIB_DESCRIPTION
                echo $DISTRIB_RELEASE
                echo $DISTRIB_CODENAME
            else
                echo "Distributor ID:   "$DISTRIB_ID
                echo "Description:  "$DISTRIB_DESCRIPTION
                echo "Release:  "$DISTRIB_RELEASE
                echo "Codename: "$DISTRIB_CODENAME
            fi
            exit;;
     *) # Invalid option
         Help
         exit;;
   esac
done

información relacionada