Portanto, a solução de trabalho usa pbuilder
e sudo
.
-
Após instalar os dois, é necessário editar o arquivo
/etc/sudoers
(usandovisudo
) e permitir que os usuários do grupopbuilder
executempbuilder
sem uma senha.%pbuilder ALL=(ALL) NOPASSWD: /usr/sbin/pbuilder
-
Adicione o grupo
pbuilder
e seu nome de usuário de compilaçãobuilduser
a eleroot@debian# groupadd pbuilder root@debian# gpasswd -a builduser pbuilder
Você agora será capaz de fazer o bootstrap de um Debian chroot
e construir pacotes usando pbuilder
como não-root.
Aqui está um script de exemplo que
-
obtém o pacote fonte fornecido como o primeiro parâmetro (como
builduser
, usando a resposta para essa pergunta ) -
construa pacotes a partir de fontes, para
i386
eamd64
architectures -
faça o upload deles com
dput
para um repositório externo fornecido pelo segundo parâmetro do script
#/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