На debian squeeze
, Я пытаюсь сделать следующее:
wheezy
исходный репозиторийsqueeze
chroot для нескольких архитектурi386
, amd64
, all
и any
)Я хочу, чтобы операции выборки, начальной загрузки и сборки были доступны для сценариев, повторялись и выполнялись от имени обычного пользователя. Для настройки среды я хочу как можно меньше использовать root
по возможности (установите необходимые зависимости, а может быть, некоторые visudo
прочее). Если возможно, я бы не хотел использовать виртуальную машину (pbuilder с user mode linux
)
Пока я пробовал несколько вещей с pbuilder
(требуется root
), debootstrap
(требуется root
) без особого успеха.
Попробуй использовать 'fakeroot'программа. Использование этой программы - просто используйте вместо этого sudo.
Fakeroot существует в репозитории Debian, попробуйте sudo apt-get install fakeroot
Итак, рабочее решение использует 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
Теперь вы можете загрузить Debian chroot
и собирать пакеты, используя 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