Загрузите среду сборки Debian и соберите пакеты с исходным кодом без прав root.
На дебиане squeezeЯ пытаюсь сделать следующее:
- получить пакет источников из
wheezyисходный репозиторий - начальная загрузка
squeezechroot для нескольких архитектур - собрать пакеты для нескольких архитектур (
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