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_release
comando para determinar la distribución actual, para cambiar el comportamiento, Build-Depends
etc.
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 -S
paso crea unfuentepaquete ( *.dsc
y archivos variados) después de ejecutar el objetivo limpio (que regenera Debian/control en muchos paquetes). Pero para esto, la lsb_release
salida debe ser, por ejemplo, squeeze
o incluso lenny
.
Demi trabajo en Debian/m68kSé que puedo crear un /etc/lsb-release
archivo 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.list
archivo APT, preferences
etc. 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