Назад | Перейти на главную страницу

Загрузите среду сборки debian и соберите пакеты с исходным кодом без прав root

На debian squeeze, Я пытаюсь сделать следующее:

Я хочу, чтобы операции выборки, начальной загрузки и сборки были доступны для сценариев, повторялись и выполнялись от имени обычного пользователя. Для настройки среды я хочу как можно меньше использовать 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