Hasher
Hasher - инструмент для сборки пакетов в «чистой» и контролируемой среде.
Статья составлена с учётом наставлений Hihin Ruslan (ALT Linux Team)
Подготовка локальной сборочницы
Первым делом, что необходимо сделать, это установить необходимые пакеты из репозитория, для этого открываем терминал и выполняем установку.
su -
apt-get update
apt-get install gcc rpm-build rpmlint make python gear hasher patch rpmdevtools git fossology-nomos
После установки пакетов необходимо добавить локального пользователя в hasher, от него будет выполняться сборка. (в случае автора статьи это обусловлено удобством сборки)
Добавление пользователя происходит под root пользователем, пользователем с повышенными правами..
Информация
Для понимания сразу оговорюсь
$ - выполнение команды от обычного пользователя
# - выполнения команды от пользователя root
выполняем команду добавления локального пользователя и после выходим из root
# hasher-useradd USER
# exit
USER = локальный пользователь сборочницы
Далее уже от локального пользователя создаём каталоги hasher и сразу добавляем информацию в git
$ mkdir ~/.hasher
$ mkdir ~/hasher
$ git config --global user.name 'Aleksand Shamaraev'
$ git config --global user.email 'alexander.shad@alt-gnome.ru'
Далее выполняем необходимые настройки доступа для hasher (ВАЖНО)
Информация
Для правки файлов в каталоге хешера, возможно, потребуются права пользователя root
Открываем на редактирование файл fstab который находится в каталоге
/etc/hasher-priv/fstab
В данный файл добавляем строчку
tmpfs /dev/shm tmpfs defaults 0 0
Далее редактируем файл system, он находится там же, добавляем туда
allow_ttydev=yes
allowed_mountpoints=/proc,/dev/pts,/dev/console
rlimit_soft_cpu=72000
rlimit_hard_cpu=72600
wlimit_time_elapsed=468000
wlimit_time_idle=36000
wlimit_bytes_written=3355443200
Далее перезагружаем компьютер и после продолжаем настраивать.
"Устанавливаем" свой hasher, выполнив команду
$ hsh --initroot-only ~/.hasher
Далее идём в каталог и создаём файл config
/home/USER/.hasher/config
В данный файл пишем следующее содержимое
def_repo=/home/USER/hasher
known_mountpoints=/dev/pts,/proc,/dev/console
allowed_mountpoints=/dev/pts,/proc,/dev/console
packager="Aleksand Shamaraev <alexander.shad@alt-gnome.ru>"
export GCC_USE_CCACHE=1
lock_nowait=1.
USER = локальному пользователю
Далее, создаём каталог где мы будем хранить клон репозиториев, пускай это будет build_packages
$ mkdir ~/build_packages
На этом настройка завершена
Установка дополнительных пакетов в хешер
Установка дополнительных пакетов для хешера осуществляется командой hsh-install
То есть к примеру установка MC для хешера будет выглядеть так
$ hsh-install mc
Проброска интернета в хешер
По умолчанию сборка внутри хешера осуществляется без доступа к сети, но иногда есть необходимость скачать дополнительные модули, для этого хешеру даётся доступ в сеть Интернет и выполняется вход в хешер с сетью.
Для того, чтобы хешер увидел интернет необходимо для начала посмотреть наш сервер DNS
# cat /etc/resolv.conf
Далее пробрасываем его в хешер.
$ hsh-shell --rooter
echo nameserver 8.8.8.8 >> /etc/resolv.conf
exit
Где 8.8.8.8 = вашему DNS, который вы увидели командой выше.
Заходим в наш хешер с доступом в сеть Интернет.
$ hsh-install mc
$ share_ipc=yes share_network=yes hsh-shell --mount=/dev/pts,/proc
Для информации
При каждой сборке пакета с помощью хешера, он как бы обнуляется и собирается.