首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用pbuilder强制更新本地包?

如何使用pbuilder强制更新本地包?
EN

Stack Overflow用户
提问于 2014-02-09 15:00:50
回答 1查看 401关注 0票数 0

我使用pbuilder构建了两个包(cainteoir-enginecainteoir-gtk),其中cainteoir-gtk依赖于cainteoir-engine

我让pdebuild收集本地依赖项。但是,如果我对构建脚本进行了更改(例如,通过pdebuild --auto-debsign将未签名的构建更改为签名的构建),它不会在pbuilder --update之后获取更改。

有没有一种方法可以在不更改版本号的情况下更新pbuilder使用的本地debian文件(因为这些是用于测试/开发包的本地测试构建)?

我使用--bindmounts--othermirror选项以及pbuilder --update --override-config来更新基本的色度图像。我使用dpkg-scanpackages生成本地Packages.gz文件。

这是我正在使用的助手函数脚本(来自https://raw.github.com/rhdunn/cainteoir-engine/debian/build.sh):

代码语言:javascript
运行
复制
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
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-12 08:44:59

经过调查,pbuilder似乎总是将-us -uc添加到构建中,因此它不会对debian文件进行签名。

我所采取的办法是:

  1. 使用sbuild代替pbuilder,创建未签名的Debian文件。
  2. 将Debian文件添加到签名的reprepro存储库(托管在/home上,以便sbuild可以访问它们)。
  3. 使用--chroot-setup-commands钩子在构建之前添加存储库和签名密钥。

这应该是可行的,而不必使用sbuild,只需:

  1. --othermirror指向reprepro存储库。
  2. 将签名密钥添加到pbuilder (不确定如何做到这一点)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21660668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档