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