Ich erstelle häufig Softwarepakete (meistens Debian) für ältere Versionen (sowohl von Debian als auch von Ubuntu, einschließlich oldoldstable) neu. Einige dieser Pakete verwenden den lsb_release
Befehl, um die aktuelle Verteilung herauszufinden, um das Verhalten zu ändern Build-Depends
usw.
ich habeein Cowbuilder-Setup mit mehreren Distributionen und CPU-Architekturen, aber um die Quellpakete vorzubereiten (die dann in einer sauberen Umgebung erstellt werden, die der Zieldistribution entspricht), muss ich noch etwas tun wie:
dpkg-source -x openjdk-7_7u55-2.4.7-1~deb7u1.dsc
cd openjdk-7-7u55-2.4.7
dch --bpo
dpkg-buildpackage -S
Der dpkg-buildpackage -S
Schritt erzeugt eineQuellePaket ( *.dsc
und verschiedene Dateien) nach dem Ausführen des Ziels clean (das in vielen Paketen debian/control neu generiert). Dafür lsb_release
muss die Ausgabe jedoch beispielsweise squeeze
oder sogar lauten lenny
.
Ausmeine Arbeit an Debian/m68k/etc/lsb-release
Ich weiß, dass ich eine Datei mit magischen, unzureichend dokumentierten Zeilen erstellen kann, um die Ausgabe von zu steuern lsb_release
, die ansonsten beispielsweise in die APT- sources.list
Datei preferences
usw. schaut, um die Verteilung zu bestimmen. Es gibt jedoch keine einfache Möglichkeit, die Ausgabe so zu gestalten, dass sie eine andere vorhandene Verteilung widerspiegelt.
Hat jemand eine Sammlung solcher Dateien, um die Zielverteilung zu spiegeln?
Antwort1
Um lsb_release zu fälschen, verwenden Sie dieses Skript:
#!/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