다양한 버전에 대한 lsb_release 출력을 쉽게 스푸핑

다양한 버전에 대한 lsb_release 출력을 쉽게 스푸핑

나는 종종 이전 버전(oldoldstable을 포함하여 Debian과 Ubuntu 모두)용 소프트웨어 패키지(주로 Debian)를 다시 빌드합니다. 이러한 패키지 중 일부는 동작 등을 lsb_release변경하기 위해 명령을 사용하여 현재 분포를 파악합니다.Build-Depends

나는 가지고있다다중 배포 및 CPU 아키텍처 cowbuilder 설정, 그러나 소스 패키지를 준비하려면(대상 배포판과 일치하는 깨끗한 환경에서 빌드됨) 여전히 다음과 같은 작업을 수행해야 합니다.

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

단계 dpkg-buildpackage -S원천clean 대상(많은 패키지에서 debian/control을 재생성함)을 실행한 후 패키지( *.dsc및 여러 파일). 하지만 이를 위해서는 출력이 예를 들어 또는 이어야 lsb_release합니다 .squeezelenny

에서Debian/m68k에 대한 내 작업/etc/lsb-release나는 의 출력을 제어하기 위해 마술적이고 문서화되지 않은 행을 포함하는 파일을 생성할 수 있다는 것을 알고 있습니다. lsb_release그렇지 않으면 배포를 결정하기 위해 APT sources.list파일 등을 조사합니다. preferences그러나 출력 미러를 또 다른 기존 배포판으로 만드는 쉬운 방법은 없습니다.

대상 배포판을 반영하기 위해 그러한 파일 모음을 가지고 있는 사람이 있습니까?

답변1

lsb_release를 스푸핑하려면 다음 스크립트를 사용하세요.

#!/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

관련 정보