Поднятие chroot-«виртуалки» с ubuntu для сборки пакетов
Приветствую.На днях надоело для сборки пакетов ходить по ssh на разные машинки и решил поднять парочку у себя. Расскажу о граблях, которые собрал по дороге и о костылях, которые смастерил.
Все действия выполнялись на Arch linux, но действия по настройке chroot-виртуалок и schroot должны быть очень схожими.
Всё, что описано далее, разумеется, разбросано по всей сети. Но проб и ошибок по пути много.
BootstrapИтак, начинается всё, можно сказать, банально, есть описание процесса bootstrap в этой статьеДля себя я ставлю 2 виртуалки — precise и trusty:
yaourt -S --nocnofirm --asdeps ubuntu-keyring gnupg1 # ставим пакеты, как зависимости
yaourt -S --nocnofirm debootstrap schroot
for distr in trusty precise
do sudo debootstrap --include=vim, language-pack-ru, language-pack-ru-base, devscripts, subversion, git --arch amd64 $distr /home/ubuntu_$distr http://mirror.yandex.ru/ubuntu/
done
Спустя какое-то время, когда доезжают пакетики
Имеем ненастроенные сорсы, ненастроенную локаль, часовой пояс… всю гамму красок.Настроим сорсы:
for distr in trusty precise
do sudo sh -c «cat > /home/ubuntu_$distr/etc/apt/sources.list < [ubuntu-precise]
description=Ubuntu 12.04
type=directory
directory=/home/ubuntu_precise
users=clown, monkey, mrsam
root-users=clown
aliases=precise
profile=ubuntu
На что стоит обратить внимание в man schroot.conf: пункт «Plain and directory chroots» (стрелял в колено очень долго, хотелось выть)Если вы выбираете «type=directory», то выполняется автомаунт из файла ($profile — параметр «profile=ubuntu» в конфиге) /etc/schroot/$profile/fstab, копируются все файлы из /etc/schroot/$profile/copyfiles, а также обновляются все «databases» из /etc/schroot/$profile/nssdatabases. На это обстоятельство даже жаловались на лаунчпаде.По умолчанию «profile=default», а /etc/schroot/default/nssdatabases содержит такие строчки
# System databases to copy into the chroot from the host system.
#
# # It may be desirable to have access to /run, especially if you wish
# to run additional services in the chroot. However, note that this
# may potentially cause undesirable behaviour on upgrades, such as
# killing services on the host.
#/run /run none rw, bind 0 0
#/run/lock /run/lock none rw, bind 0 0
#/dev/shm /dev/shm none rw, bind 0 0
#/run/shm /run/shm none rw, bind 0 0
$ cat nssdatabases
# System databases to copy into the chroot from the host system.
#
#
sudo ln -f /home/ubuntu_trusty/etc/bash.bashrc /home/ubuntu_precise/etc/bash.bashrc
А для того, чтобы небыло проблем при обновлении пакетов, необходимо запретить некоторым пакетам это делать:
apt-mark hold initscripts udev plymouth mountall
Да, в каждом из chroot…Ну и напоследок, перегенерируем кодировки и tzdata:
sudo locale-gen
sudo dpkg-reconfigure tzdata
Спасибо за внимание. Надеюсь, позволит сократить время на поднятие окружения для сборки.