Einfaches Vortäuschen der lsb_release-Ausgabe für verschiedene Versionen

Einfaches Vortäuschen der lsb_release-Ausgabe für verschiedene Versionen

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_releaseBefehl, um die aktuelle Verteilung herauszufinden, um das Verhalten zu ändern Build-Dependsusw.

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 -SSchritt erzeugt eineQuellePaket ( *.dscund verschiedene Dateien) nach dem Ausführen des Ziels clean (das in vielen Paketen debian/control neu generiert). Dafür lsb_releasemuss die Ausgabe jedoch beispielsweise squeezeoder sogar lauten lenny.

Ausmeine Arbeit an Debian/m68k/etc/lsb-releaseIch 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.listDatei preferencesusw. 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

verwandte Informationen