나는 종종 이전 버전(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
합니다 .squeeze
lenny
에서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