Как построить локально билд DU2 на VM
Действия
Создайте и обновите новую VM
Подготовьте окружение для создания новых зон
Подготовьте скрип для получения зависимостей компонент
Создайте зону для локального репозитроия
Создайте в этой зоне локальны репозиторий
Создайте новую зону для сборки компонент
Соберите компоненты
1. Создайте и обновите новую VM
Для создания VM в vSphere SPB-LABS выполните шаги 1-5 из этой инструкции.
2. Залогиньтесь с правами root и подготовьте VM для созданиня зон
Создайте 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.
6. Создайте новую зону для сборки компонент
Создайте зону и войдите в неё:
Команды ниже выполняются в зоне.
Подготовьте зону для сборки компонент. Для этого скопируйте этот скрипт в файл, например, prepare.sh
или выполните команду :
Сделайте его исполняемым и запустите:
7. Постройте компоненты
Скопируйте этот скрипт в файл, например, build_all.sh
или выполните команду:
Если Вы хотите, чтобы пстроение закончилось после первой же ошибки, присвойте 1 переменной STOP_ON_ERROR STOP_ON_ERROR=1
. В противном случае скрипт будет строить все компоненты по-очереди, независимо от ошибок. При этом в директории каждого компонента будет создаваться файл berror.log
, где вы сможете увидеть ошибки построения.
Сделайте файл выполняемым и запустите его:
Построение компонент может занять длительное время. Поэтому можно запустить скрипт при помощи утилиты screen.
Если Вы запустили построение всех компонент, то проверить, какие компоненты не построились, можно, выполнив команды:
После сборки компонент Вы можете проверить их установку в отдельной новой зоне.