Inicialize um ambiente de compilação debian e construa pacotes de código-fonte sem privilégios de root

1

No debian squeeze , estou tentando fazer o seguinte:

  • buscar o pacote de fontes do repositório wheezy source
  • bootstrap a squeeze chroot para várias arquiteturas
  • crie os pacotes para várias arquiteturas ( i386 , amd64 , all e any )

Eu quero que a operação de busca, bootstrapping e build seja roteirizada, repetível e executada como um usuário normal. Para a configuração do ambiente, desejo fazer o menor uso possível da conta root (instalar as dependências necessárias e talvez alguns visudo stuff). Se possível, gostaria de evitar o uso de uma VM (pbuilder com user mode linux )

Até agora eu tentei várias coisas com pbuilder (requer root ), debootstrap (requer root ) com pouco sucesso.

    
por Erwan Queffélec 11.11.2012 / 00:46

2 respostas

1

Portanto, a solução de trabalho usa pbuilder e sudo .

  • Após instalar os dois, é necessário editar o arquivo /etc/sudoers (usando visudo ) e permitir que os usuários do grupo pbuilder executem pbuilder sem uma senha.

    %pbuilder ALL=(ALL) NOPASSWD: /usr/sbin/pbuilder
    
  • Adicione o grupo pbuilder e seu nome de usuário de compilação builduser a ele

    root@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 e amd64 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
    
por 11.11.2012 / 08:38
1

Tente usar o programa ' fakeroot '. Uso deste programa - basta usar o sudo.

O Fakeroot existe no repositório debian, tente sudo apt-get install fakeroot

    
por 14.11.2012 / 18:15