Debian

引導一個 debian 建構環境並在沒有 root 權限的情況下建構源包

  • November 14, 2012

在 debian 上squeeze,我正在嘗試執行以下操作:

  • wheezy從源儲存庫中獲取源包
  • 為多種架構引導squeezechroot
  • 為多種架構(i386、、amd64和)建構包all``any

我希望獲取、引導和建構操作都是可編寫腳本的、可重複的,並且可以作為普通使用者執行。對於環境設置,我想盡可能少地使用root帳戶(安裝必要的依賴項,也許還有一些visudo東西)。如果可能的話,我想避免使用虛擬機(pbuilder with user mode linux

到目前為止,我已經用pbuilder(require root)、debootstrap(require root) 嘗試了幾件事,但收效甚微。

因此,工作解決方案使用pbuilderand 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,使用該問題的答案)
  • 從原始碼建構包,用於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

引用自:https://serverfault.com/questions/447463