Загрузите среду сборки 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

Другие вопросы по тегам