LINUX.ORG.RU

История изменений

Исправление vitruss, (текущая версия) :

zram потому что места меньше в оперативке занимает, экспериментальным путём установлено что меньше чем в 20 Гб места хромиум не собирается, а у меня установлено всего 16 Гб, при использовании сжатия в zram, говорят, сжимается в среднем в 3 раза, что даёт приемлемый расход ram на этом объёме. На диске не собираю, чтобы не тратить ресурс бедного ссд на 64 Гб постоянными перезаписями.

Вот что надо для монтирования zram:

  • /etc/modules-load.d/zram.conf: zram

  • /etc/moduprobe.d/zram.conf: options zram num_devices=1

  • /etc/udev/rules.d/99-zram.rules:

KERNEL=="zram0", ATTR{disksize}="32G" RUN="/usr/bin/mkfs.ext2 /dev/zram0", TAG+="systemd"
  • /etc/fstab:
/dev/zram0      /var/lib/aurbuild       ext2    rw,defaults,noauto,x-systemd.automount  0       0

Юнит и таймер для рута:

  • /etc/systemd/system/aursync-prepare.service
[Unit]
Description=Prepare container for aur sync

[Service]
Type=simple
ExecStartPre=rm -rf /var/lib/aurbuild/x86_64
ExecStart=/usr/bin/aur chroot --create -D /var/lib/aurbuild/x86_64
  • /etc/systemd/system/aursync-prepare.timer
[Unit]
Description=Prepare container for aur sync every day at 0:30.

[Timer]
OnCalendar=*-*-* 0:30:00
Unit=aursync-prepare.service

[Install]
WantedBy=timers.target

Юнит и таймер от пользователя, от имени которого собираются пакеты:

  • ~/.config/systemd/user/aursync.service:
[Unit]
Description=Run "aur sync -uc" 

[Service]
Type=simple
ExecStart=/usr/bin/aur sync -uc --noview
  • ~/.config/systemd/user/aursync.timer
[Unit]
Description=Run "aur sync -u" every day at 1 a.m.

[Timer]
OnCalendar=*-*-* 1:00:00
Unit=aursync.service

[Install]
WantedBy=timers.target

Дополнительно:

Должен быть настроенный локальный репозиторий, прописанный на этом компе типа такого:

  • /etc/pacman.conf
...
[custom]
SigLevel = Optional TrustAll
Server = file:///srv/custom-packages
  • /etc/systemd/system/darkhttpd.service
[Unit]
Description=Darkhttpd Webserver
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/darkhttpd /srv/custom-packages --uid http --gid http --chroot --mimetypes /etc/conf.d/mimetypes --port 8080
ProtectSystem=full
ProtectHome=on
PrivateDevices=on
NoNewPrivileges=on

[Install]
WantedBy=multi-user.target
  • Правила для запуска некоторых команд без пароля от рута для пользователя, от имени которого собираются пакеты (в тесте используется user, я не уверен что они все необходимы) /etc/sudoers.d/aurutils:
user ALL = (root) NOPASSWD: SETENV: /usr/bin/makechrootpkg
user ALL = (root) NOPASSWD: /usr/bin/mkarchroot *
user ALL = (root) NOPASSWD: /usr/bin/arch-nspawn *
user ALL = (root) NOPASSWD: /usr/bin/pacman
  • Все юниты и таймеры приведённые выше должны быть включены (enable).

Вроде ничего не упустил, если что-то будет не так – я всегда готов помочь, чем могу.

Исходная версия vitruss, :

zram потому что места меньше в оперативке занимает, экспериментальным путём установлено что меньше чем в 20 Гб места хромиум не собирается, а у меня установлено всего 16 Гб, при использовании сжатия в zram, говорят, сжимается в среднем в 3 раза, что даёт приемлемый расход ram на этом объёме. На диске не собираю, чтобы не тратить ресурс бедного ссд на 64 Гб постоянными перезаписями.

Вот что надо для монтирования zram:

  • /etc/modules-load.d/zram.conf: zram

  • /etc/moduprobe.d/zram.conf: options zram num_devices=1

  • /etc/udev/rules.d/99-zram.rules:

KERNEL=="zram0", ATTR{disksize}="32G" RUN="/usr/bin/mkfs.ext2 /dev/zram0", TAG+="systemd"
  • /etc/fstab:
/dev/zram0      /var/lib/aurbuild       ext2    rw,defaults,noauto,x-systemd.automount  0       0

Юнит и таймер для рута:

  • /etc/systemd/system/aursync-prepare.service
[Unit]
Description=Prepare container for aur sync

[Service]
Type=simple
ExecStartPre=rm -rf /var/lib/aurbuild/x86_64
ExecStart=/usr/bin/aur chroot --create -D /var/lib/aurbuild/x86_64
  • /etc/systemd/system/aursync-prepare.timer
[Unit]
Description=Prepare container for aur sync every day at 0:30.

[Timer]
OnCalendar=*-*-* 0:30:00
Unit=aursync-prepare.service

[Install]
WantedBy=timers.target

Юнит и таймер от пользователя, от имени которого собираются пакеты:

  • ~/.config/systemd/user/aursync.service:
[Unit]
Description=Run "aur sync -uc" 

[Service]
Type=simple
ExecStart=/usr/bin/aur sync -uc --noview
  • ~/.config/systemd/user/aursync.timer
[Unit]
Description=Run "aur sync -u" every day at 1 a.m.

[Timer]
OnCalendar=*-*-* 1:00:00
Unit=aursync.service

[Install]
WantedBy=timers.target

Дополнительно:

Должен быть настроенный локальный репозиторий, прописанный на этом компе типа такого:

  • /etc/pacman.conf
...
[custom]
SigLevel = Optional TrustAll
Server = file:///srv/custom-packages
  • /etc/systemd/system/darkhttpd.service
[Unit]
Description=Darkhttpd Webserver
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/darkhttpd /srv/custom-packages --uid http --gid http --chroot --mimetypes /etc/conf.d/mimetypes --port 8080
ProtectSystem=full
ProtectHome=on
PrivateDevices=on
NoNewPrivileges=on

[Install]
WantedBy=multi-user.target
  • Правила для запуска некоторых команд без пароля от рута для пользователя, от имени которого собираются пакеты (я не уверен что необходимы они все) /etc/sudoers.d/aurutils:
user ALL = (root) NOPASSWD: SETENV: /usr/bin/makechrootpkg
user ALL = (root) NOPASSWD: /usr/bin/mkarchroot *
user ALL = (root) NOPASSWD: /usr/bin/arch-nspawn *
user ALL = (root) NOPASSWD: /usr/bin/pacman
  • Все юниты и таймеры приведённые выше должны быть включены (enable).

Вроде ничего не упустил, если что-то будет не так – я всегда готов помочь, чем могу.