Как построить локально билд DU2 на VM

Действия

  1. Создайте и обновите новую VM

  2. Подготовьте окружение для создания новых зон

  3. Подготовьте скрип для получения зависимостей компонент

  4. Создайте зону для локального репозитроия

  5. Создайте в этой зоне локальны репозиторий

  6. Создайте новую зону для сборки компонент

  7. Соберите компоненты

1. Создайте и обновите новую VM

Для создания VM в vSphere SPB-LABS выполните шаги 1-5 из этой инструкции.

2. Залогиньтесь с правами root и подготовьте VM для созданиня зон

  1. Создайте mountpoint, куда будут монтироваться зоны:

root@dilos:~# zfs create -o mountpoint=/zones rpool/zones root@dilos:~# mkdir /export/builds

2. Добавьте пользователя admin:

root@dilos:~# useradd -m -g staff admin root@dilos:~# passwd admin Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully root@dilos:~# echo "admin ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/admin

3. Выполните Инструкцию по настройке сети до шага, на котором создаётся зона zone01.

4. Для автоматизации создания зон и входа в них можно скопировать этот скрипт в файл create_zone.sh или выполнить команду:

cat > create_zone.sh <<SCRIPT #!/bin/bash TYPE_ZONE=\$1 IP=\$2 SER=\$3 cat > \${HOME}/\${TYPE_ZONE}.cmd <<EOT create set zonename=\${TYPE_ZONE} set zonepath=/zones/\${TYPE_ZONE} set autoboot=false set ip-type=exclusive add net set physical=iz\${SER} set global-nic=vsw0 add property (name=ip,value="\${IP}.\${SER}") add property (name=gateway,value="\${IP}.254") add property (name=netmask,value="255.255.255.0") add property (name=primary,value="true") end add attr set name=resolvers set type=string set value=8.8.8.8 end add fs set dir="/export/home/admin" set special="/export/home/admin" set type="lofs" end add fs set dir="/export/builds" set special="/export/builds" set type="lofs" end add fs set dir="/data/repo" set special="/data/repo" set type="lofs" end verify commit exit EOT zonecfg -z \${TYPE_ZONE} -f \${HOME}/\${TYPE_ZONE}.cmd 2>&1 | /usr/bin/tee -a /var/tmp/${TYPE_ZONE}-bts.log zoneadm -z \${TYPE_ZONE} install 2>&1 | /usr/bin/tee -a /var/tmp/${TYPE_ZONE}-bts.log zoneadm -z ${TYPE_ZONE} boot 2>&1 | /usr/bin/tee -a /var/tmp/${TYPE_ZONE}-bts.log echo "127.0.0.1 localhost.${TYPE_ZONE} ${TYPE_ZONE}" >> /zones/${TYPE_ZONE}/root/etc/hosts res=$(grep -e 'WARNING:' -e 'warning:' -e 'W:' -e 'error:' -e 'E:' -e 'cannot' /var/tmp/${TYPE_ZONE}-bts.log | sort -u) if [[ "$res" == "" ]]; then echo " =========== Zone ${TYPE_ZONE} is successfully created and ready to use =============" else echo " =========== Zone ${TYPE_ZONE} creation log =============" echo "$res" echo "$res" | sed '/W: --force-yes is deprecated/d; /\/man\//d' if [[ "$res" != "" ]]; then echo " ========================================================" echo "Please stop and report about zone bootstrap errors!" fi fi SCRIPT

Cделайте его выполняемым:

 

Теперь Вы можете запустить его в формате ./create_zone.sh <zone-name> <zone-ip-domain> <zone-ip-node> , например!:

./create_zone.sh zone02 192.168.0 3

3. Подготовьте скрипт для получения зависимостей

Обновите файл /etc/apt/sources.list :

Создайте папку для репозитория и перейдите туда:

Чтобы нижеприведённый скрипт заработал, Вам нужно создать файл list_component , содержимое которого можно взять отсюда.

Здесь же создайте скрипт для получения исходников и их зависимостей. Для этого скопируйте этот скрипт в файл, например, make_repo.sh или выполните следующую команду:

Сделайте этот файл исполняемым:

Если Вы хотите получить лог с ошибками, то в строку LOG_FILE="" впишите имя файла, куда будет записываться сообщения о ходе выполнения, например:

4. Создайте зону для локального репозитория

Создайте зону и войдите в неё:

Команды ниже выполняются в зоне.

Обновите файл /etc/apt/sources.list:

Установите в зоне необходимые пакеты для работы репозитория:

Создайте директорию, где у вас будут лежать конфигурационные файлы для репозитория:

и создайте конфигурационный файл репозитория:

5. Выполните эти команды для добавления пакетов и исходных файлов в репозиторий:

Процедура создания репозитория может занять длительное время. Поэтому можно запустить скрипт при помощи утилиты screen.

Если Вы подключились по SSH и хотите отключиться от сессии SSH или отключить свой компьютер на время, то выполните следующую команду:

Дальше в любой момент Вы можете нажать Ctrl-A d, после чего отключиться от сессии SSH.

Затем когда Вы захотите вернуться, залогиньтесь снова по SSH и введите команду:

6. Создайте новую зону для сборки компонент

Создайте зону и войдите в неё:

Команды ниже выполняются в зоне.

Подготовьте зону для сборки компонент. Для этого скопируйте этот скрипт в файл, например, prepare.sh или выполните команду :

Сделайте его исполняемым и запустите:

7. Постройте компоненты

Скопируйте этот скрипт в файл, например, build_all.sh или выполните команду:

Если Вы хотите, чтобы пстроение закончилось после первой же ошибки, присвойте 1 переменной STOP_ON_ERROR STOP_ON_ERROR=1. В противном случае скрипт будет строить все компоненты по-очереди, независимо от ошибок. При этом в директории каждого компонента будет создаваться файл berror.log, где вы сможете увидеть ошибки построения.

Сделайте файл выполняемым и запустите его:

Построение компонент может занять длительное время. Поэтому можно запустить скрипт при помощи утилиты screen.

Если Вы подключились по SSH и хотите отключиться от сессии SSH или отключить свой компьютер на время, то выполните следующую команду:

Дальше в любой момент Вы можете нажать Ctrl-A d, после чего отключиться от сессии SSH.

Затем когда Вы захотите вернуться, залогиньтесь снова по SSH и введите команду:

Если Вы запустили построение всех компонент, то проверить, какие компоненты не построились, можно, выполнив команды:

После сборки компонент Вы можете проверить их установку в отдельной новой зоне.