如何使用pbuilder强制更新本地包?
我有两个软件包cainteoir engine和cainteoir gtk,我正在使用pbuilder构建它们,cainteoir gtk依赖于cainteoir engine 我让pdebuild提取本地依赖项。但是,如果我对构建脚本进行了更改,例如通过pdebuild-auto-debsign将未签名的构建更改为已签名的构建,则在pbuilder-update之后,它不会拾取更改 有没有一种方法可以在不更改版本号的情况下更新pbuilder chroot使用的本地debian文件,因为这些都是本地测试版本,用于测试/开发包 我在pbuilder-update-override配置中使用-bindmounts和-othermirror选项来更新基本chroot映像。我正在使用dpkg scanpackages生成本地Packages.gz文件 这是我在以下位置使用的帮助器函数脚本:如何使用pbuilder强制更新本地包?,pbuilder,pdebuild,Pbuilder,Pdebuild,我有两个软件包cainteoir engine和cainteoir gtk,我正在使用pbuilder构建它们,cainteoir gtk依赖于cainteoir engine 我让pdebuild提取本地依赖项。但是,如果我对构建脚本进行了更改,例如通过pdebuild-auto-debsign将未签名的构建更改为已签名的构建,则在pbuilder-update之后,它不会拾取更改 有没有一种方法可以在不更改版本号的情况下更新pbuilder chroot使用的本地debian文件,因为这些都
经过调查,pbuilder似乎总是将-us-uc添加到构建中,因此它不会对debian文件进行签名 我采取的方法是: 使用sbuild而不是pbuilder,创建未签名的Debian文件。 将Debian文件添加到托管在/home上的已签名reprepro存储库中,以便sbuild可以访问这些文件。 使用-chroot setup命令钩子在生成之前添加存储库和签名密钥。 这在不使用sbuild的情况下应该是可行的,只是: 将-othermirror指向repreprepro存储库。 将签名密钥添加到pbuilder chroot,但不确定如何执行此操作。
doscanpackages() {
pushd $1
dpkg-scanpackages . /dev/null | gzip -9 > Packages.gz
popd
}
dopbuild() {
COMMAND=$1
ARCH=$3
case "$2" in
stable|wheezy)
DIST=debian
RELEASE=wheezy
;;
testing|jessie)
DIST=debian
RELEASE=jessie
;;
unstable|sid)
DIST=debian
RELEASE=sid
;;
precise|quantal|raring|saucy|trusty)
DIST=ubuntu
RELEASE=$2
;;
*)
echo "Unknown distribution release : $1"
exit 1
;;
esac
case "${DIST}" in
debian)
MIRROR=ftp://mirror.ox.ac.uk/debian/
KEYRING=/usr/share/keyrings/debian-archive-keyring.gpg
;;
ubuntu)
MIRROR=ftp://archive.ubuntu.com/ubuntu/
KEYRING=/usr/share/keyrings/ubuntu-archive-keyring.gpg
;;
esac
REF=${DIST}-${RELEASE}-${ARCH}
BASETGZ=${PBUILD_DIR}/${REF}.tgz
OUTPUT=${PBUILD_DIR}/${REF}
shift
shift
shift
case "${COMMAND}" in
create|update)
if [[ -e ${BASETGZ} ]] ; then
sudo pbuilder --update --override-config --distribution ${RELEASE} --mirror ${MIRROR} --basetgz ${BASETGZ} --debootstrapopts "--keyring=${KEYRING}" --bindmounts "${OUTPUT}" --othermirror "deb file:${OUTPUT} ./"
else
mkdir -pv ${PBUILD_IMGDIR}
sudo pbuilder --create --distribution ${RELEASE} --mirror ${MIRROR} --basetgz ${BASETGZ} --debootstrapopts "--keyring=${KEYRING}" --bindmounts "${OUTPUT}" --othermirror "deb file:${OUTPUT} ./"
fi
;;
build)
mkdir -pv ${OUTPUT}
dopredebbuild ${RELEASE}
if [[ ! -e builddeb.failed ]] ; then
(pdebuild --buildresult ${OUTPUT} $@ -- --basetgz ${BASETGZ} --debootstrapopts "--keyring=${KEYRING}" --bindmounts "${OUTPUT}" || touch builddeb.failed) 2>&1 | tee build.log
fi
if [[ ! -e builddeb.failed ]] ; then
doscanpackages ${OUTPUT}
fi
dopostdebbuild ${RELEASE}
;;
esac
}