[英]How do I force update local packages using pbuilder?
我有兩個使用pbuilder構建的軟件包( cainteoir-engine
和cainteoir-gtk
),其中cainteoir-gtk
取決於cainteoir-engine
。
我有pdebuild
拿起本地依賴項。 但是,如果我對構建腳本進行了更改(例如,通過pdebuild --auto-debsign
簽名的構建更改為已簽名的構建),則在pbuilder --update
之后,它不會進行更改。
有沒有一種方法可以更新pbuilder chroot使用的本地debian文件而不更改版本號(因為這些是用於測試/開發軟件包的本地測試版本)?
我在pbuilder --update --override-config
使用--bindmounts
和--othermirror
選項來更新基本chroot映像。 我正在使用dpkg-scanpackages
生成本地Packages.gz
文件。
這是我正在使用的輔助函數腳本(來自https://raw.github.com/rhdunn/cainteoir-engine/debian/build.sh ):
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
}
經調查,pbuilder似乎總是在構建中添加-us -uc
,因此它不會對debian文件進行簽名。
我采用的方法是:
--chroot-setup-commands
掛鈎在構建之前添加存儲庫和簽名密鑰。 這應該是可行的,而無需使用sbuild,只是:
--othermirror
指向reprepro存儲庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.