在 debian 上squeeze
,我正在尝试执行以下操作:
wheezy
从源代码存储库获取源包squeeze
为多个架构引导chroot- 为多种架构构建软件包(
i386
、、amd64
和all
)any
我希望抓取、引导和构建操作都可编写脚本、可重复,并以普通用户身份运行。对于环境设置,我希望尽可能少地使用该root
帐户(安装必要的依赖项,也许还有一些visudo
内容)。如果可能的话,我希望避免使用 VM(带有 的 pbuilder user mode linux
)
到目前为止,我已经尝试了pbuilder
(require root
)、debootstrap
(require root
) 等几种方法,但收效甚微。
答案1
因此,工作解决方案使用pbuilder
和sudo
。
安装两者后,必须编辑
/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
,使用答案那个问题)从源代码构建软件包,适用于
i386
和amd64
架构将它们上传
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