引导 Debian 构建环境并构建源包,无需 root 权限

引导 Debian 构建环境并构建源包,无需 root 权限

在 debian 上squeeze,我正在尝试执行以下操作:

  • wheezy从源代码存储库获取源包
  • squeeze为多个架构引导chroot
  • 为多种架构构建软件包(i386、、amd64allany

我希望抓取、引导和构建操作都可编写脚本、可重复,并以普通用户身份运行。对于环境设置,我希望尽可能少地使用该root帐户(安装必要的依赖项,也许还有一些visudo内容)。如果可能的话,我希望避免使用 VM(带有 的 pbuilder user mode linux

到目前为止,我已经尝试了pbuilder(require root)、debootstrap(require root) 等几种方法,但收效甚微。

答案1

因此,工作解决方案使用pbuildersudo

  • 安装两者后,必须编辑/etc/sudoers文件(使用visudo)并允许组中的用户无需密码pbuilder运行。pbuilder

    %pbuilder ALL=(ALL) NOPASSWD: /usr/sbin/pbuilder
    
  • pbuilder将组和您的构建用户名添加builduser到其中

    root@debian# groupadd pbuilder
    root@debian# gpasswd -a builduser pbuilder
    

现在您将能够以非 root身份引导 Debianchroot并构建软件包。pbuilder

以下是一个示例脚本

  • 获取作为第一个参数给出的源包(如builduser,使用答案那个问题

  • 从源代码构建软件包,适用于i386amd64架构

  • 将它们上传dput到脚本第二个参数给出的外部存储库

#/bin/bash

set -e
set -x

THIS=`readlink -f ${0}`
THIS_DIR=`dirname ${THIS}`

PACKAGE=${1}
TARGET_CODENAME=${2}

ARCHS='i386 amd64'
APT_CONF=${THIS_DIR}/tmp/etc/apt.conf

pushd ${THIS_DIR}/src
apt-get update -c ${APT_CONF}
apt-get source ${PACKAGE} -c ${APT_CONF}
popd

for ARCH in ${ARCHS}
do
  BUILD_DIR=${THIS_DIR}/build/${ARCH}
  sudo pbuilder --create --configfile ${BUILD_DIR}/pbuilderrc \ 
                --buildresult ${BUILD_DIR}/
  sudo pbuilder --build --configfile ${BUILD_DIR}/pbuilderrc \
                --buildresult ${BUILD_DIR}/ ${THIS_DIR}/src/${PACKAGE}*.dsc
  dput ${TARGET_CODENAME} ${BUILD_DIR}/*.changes
done

答案2

尝试使用'假根'程序。此程序的用法 - 只需使用 sudo 即可。

Fakeroot 存在于 debian repo 中,请尝试sudo apt-get 安装 fakeroot

相关内容