Hasher/FAQ: различия между версиями

Материал из ALT Linux Wiki
(→‎Q5: про сборку в girar пакета без Packager)
м (→‎Q5: typo)
Строка 33: Строка 33:
A1: Эти ошибки выдаются утилитой [[sisyphus_check]], проверяющей соответствие пакетов правилам репозитория [[Sisyphus]]. Исправьте ошибки в spec-файле (обычно добавлением корректного тега <tt>Packager</tt>).
A1: Эти ошибки выдаются утилитой [[sisyphus_check]], проверяющей соответствие пакетов правилам репозитория [[Sisyphus]]. Исправьте ошибки в spec-файле (обычно добавлением корректного тега <tt>Packager</tt>).


В частности, отсутствие тега <tt>Packager</tt> в spec-файле обычно (если не сделаны настройки, описанные в ответах ниже) приводит к такому результату (потому что в собранном пакете в качестве <tt>Packager</tt> будет некое значение по умолчанию.
В частности, отсутствие тега <tt>Packager</tt> в spec-файле обычно (если не сделаны настройки, описанные в ответах ниже) приводит к такому результату (потому что в собранном пакете в качестве <tt>Packager</tt> будет некое значение по умолчанию).


Однако, если такой пакет без тега <tt>Packager</tt> будет собираться в [[girar]] (например, том, который работает на [[git.alt]]), то эта проверка будет успешно пройдена, потому что[http://lists.altlinux.org/pipermail/devel/2009-February/167112.html]: "girar builder, собирая пакет из подписанного git-тэга, указывает в качестве packager'а по умолчанию имя подписавшего git-тэг, поэтому, если поле Packager в спек-файле отсутствует, packager'ом собранного пакета окажется тот, кто подписал git-тэг." По правилам ALT это повлечёт назначение ответственным за пакет (maintainer'ом) нового packager'а (где это записано? так ли это?). Возможно, это не то, чего Вы хотели бы.
Однако, если такой пакет без тега <tt>Packager</tt> будет собираться в [[girar]] (например, том, который работает на [[git.alt]]), то эта проверка будет успешно пройдена, потому что[http://lists.altlinux.org/pipermail/devel/2009-February/167112.html]: "girar builder, собирая пакет из подписанного git-тэга, указывает в качестве packager'а по умолчанию имя подписавшего git-тэг, поэтому, если поле Packager в спек-файле отсутствует, packager'ом собранного пакета окажется тот, кто подписал git-тэг." По правилам ALT это повлечёт назначение ответственным за пакет (maintainer'ом) нового packager'а (где это записано? так ли это?). Возможно, это не то, чего Вы хотели бы.

Версия от 02:13, 10 января 2014

Q1

Q: При запуске hsh я получаю ошибку

hsh-mkchroot: cannot access getugid1 helper.

A: Добавьте себя в hasher.

Q2

Q: Я добавил себя в hasher, но всё равно получаю ошибку

hsh: /usr/libexec/hasher-priv/getconf.sh: cannot access getconf helper.

A: Перелогиньтесь — hasher-useradd добавляет пользователя в новые группы.

Q3

Q: Я собираю пакет, но он ломается из-за того, что в сборочной среде нет /proc.

A: Настройте монтирование /proc.

Q4

Q: В моём hasher собираются пакеты со странной архитектурой, которые не ставятся.

A: Явно укажите архитектуру сборки.

Q5

Q: В конце сборки в hasher выдаются ошибки вида

some-packet.src.rpm: wrong PACKAGER: Automated package hasher <hasher@localhost>

A1: Эти ошибки выдаются утилитой sisyphus_check, проверяющей соответствие пакетов правилам репозитория Sisyphus. Исправьте ошибки в spec-файле (обычно добавлением корректного тега Packager).

В частности, отсутствие тега Packager в spec-файле обычно (если не сделаны настройки, описанные в ответах ниже) приводит к такому результату (потому что в собранном пакете в качестве Packager будет некое значение по умолчанию).

Однако, если такой пакет без тега Packager будет собираться в girar (например, том, который работает на git.alt), то эта проверка будет успешно пройдена, потому что[1]: "girar builder, собирая пакет из подписанного git-тэга, указывает в качестве packager'а по умолчанию имя подписавшего git-тэг, поэтому, если поле Packager в спек-файле отсутствует, packager'ом собранного пакета окажется тот, кто подписал git-тэг." По правилам ALT это повлечёт назначение ответственным за пакет (maintainer'ом) нового packager'а (где это записано? так ли это?). Возможно, это не то, чего Вы хотели бы.

A2: Если пакет не предназначен для Sisyphus и выдаваемые ошибки связаны не с техническими проблемами в пакете, а с невыполнением политик репозитория (например, ограничение на тэг Packager и на PGP-подпись) — отключите часть проверок sisyphus_check; можно добавить в ~/.hasher/config:

no_sisyphus_check="packager,buildhost,gpg"

A3: В конфигурационный файл .hasher/config можно добавить поле packager (если есть альтовский логин):

packager="Your Name <login@altlinux.org>"

A4: У утилиты hsh есть ключик --packager, можно воспользоваться им:

$ gear -v --hasher -- hsh --target=i586 --packager="Andrew Clark <andyc@altlinux.org>" ~/hasher

Q6

Q: При запуске hsh я получаю ошибку

hasher-priv: /path/to/workdir/chroot: prefix mismatch, working directory
should start with one of directories listed in colon-separated prefix
list (~:/tmp/.private)
hsh-mkchroot: failed to make devices.

A: По умолчанию hasher позволяет располагать свою рабочую директорию в $HOME пользователя или в /tmp/.private. Или измените место, где создаётся рабочая директория, или разрешите дополнительные директории с помощью ключа prefix в /etc/hasher-priv/system (общесистемно) или /etc/hasher-priv/user.d/<USER> (для одного пользователя).

Q7

Q: При запуске hsh выдаёт ошибку:

hasher-priv: slave: chrootuid: execve: /.host/entry: No such file or directory
hsh-initroot: Failed to create RPM database.

A: Выключите все сменные носители в /etc/apt/sources.list, запустите apt-get update и еще раз повторите запуск hsh.

Q8

Q: Сборка дистрибутива останавливается на таких вот строчках:

 mki-cache: has started executing.
 mkimage: Processing 'copy-packages' ...
 mki-cache: has started executing.
 mki-expand-pkgs: has started executing. method=simple
 mki-copy-pkgs: has started executing.
 mkdir: created directory `.../profiles/main/.work/mki-copy-pkgs.verbose'

A: Выключите все сменные носители в /etc/apt/sources.listsources.list.d/*.list), запустите apt-get update и еще раз повторите запуск hsh.

Q9

Q: При запуске hsh выдаёт ошибку:

hasher-priv: openpty: No such file or directory

A: Проверьте, что у вас смонтирован /dev/pts на хост-системе.

Q10

Q: При запуске hsh выдаёт ошибку:

fakeroot daemon: /dev/null: Permission denied
fakeroot: error while starting the `faked' daemon.
hsh-initroot: Failed to create RPM database.

A: Проверьте, что файловая система, на которой располагается сборочный каталог, смонтирована без использования опции nodev, например:

$ mount | grep /tmp
tmpfs on /tmp type tmpfs (rw,nosuid,relatime,size=3145728k)

Q11

Q: почему hasher перестал создавать хэши (base/*) для своего репозитория?

A: потому что для некоторого ускорения сборки они упразднены в пользу непосредственного сканирования каталога (rpm-dir вместо rpm в sources.list). Для создания хэшей при их публикации придётся запустить $hasher/aptbox/regenbasedir (или genbasedir --bloat совсем вручную).

Q12

Q: есть ли споcоб запустить gui-шную программу внутри hasher?

A: да,

hsh-install xauth "гуишная прога"
hsh-run -Y "гуишная прога"

Q13

Q: правда, что Hasher — это вирус под Linux?

A: действительно, существует ELF-вирус Linux.Hasher, но в отличие от него — наличие технических механизмов заражения и саморазмножения в обсуждаемом hasher не показано.

Q14

Q: как включить доступ в сеть из hasher chroot?

A: share_network=1 hsh-shell

Q15

Q: Yury Aliaev: "чтобы не скачивать одно и то же по многу раз для сборки разных пакетов, необходимо, чтобы скачанные пакеты где-то хранились и при следующем запуске брались уже из этого места. Опять-таки, если пакет в Сизифе более свежий, чем локально скачанный, то скачанный пакет должен обновиться на более свежий."

A: Можно добавить от себя в конфигурацию apt-а для hasher особое место для кэша apt, которое не будет чиститься hsh; например, общесистемный /var/cache/apt/archives/ -- см. Hasher/Tips#Кэширование скачиваемых apt-ом пакетов.

Q16

Q: При запуске hsh с настройками apt по умолчанию (основанными на общесистемных /etc/apt/) процесс виснет на этапе какой-то установки пакетов через apt (при применении опции -v -- на сообщении "... пакеты будут установлены:" и список пакетов дальше).

A: Может быть, в /etc/apt/sources.list, /etc/apt/sources.list.d/* есть источник-cdrom. (Например, у меня cdrom был прописан в /etc/apt/sources.list.d/sources.list -- я удалил этот файл, и больше hsh не зависает на этом этапе. Примечание: я запускаю вообще-то gear-hsh -v -- -v, а не чистый hsh.)

Ответ найден благодаря сообщениям