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

Материал из ALT Linux Wiki
м (→‎Q12: перед применением hasher для запуска надо создать чрут)
м (+Q19: архитектурное)
Строка 159: Строка 159:
  iptables -A OUTPUT -o venet0 -m owner --uid-owner username_a -j REJECT --reject-with icmp-net-unreachable
  iptables -A OUTPUT -o venet0 -m owner --uid-owner username_a -j REJECT --reject-with icmp-net-unreachable
  iptables -A OUTPUT -o venet0 -m owner --uid-owner username_b -j REJECT --reject-with icmp-net-unreachable
  iptables -A OUTPUT -o venet0 -m owner --uid-owner username_b -j REJECT --reject-with icmp-net-unreachable
 
== Q19 ==
 
Q: отчего при работающем {{path|sources.list}} хэшер может жаловаться: «<tt>Пакет setup присутствует в базе данных, но не имеет доступной версии.</tt> […] <tt>E: Для пакета setup не найдено подходящего кандидата для установки</tt>»?
 
A: [http://lists.altlinux.org/pipermail/community/2015-April/683972.html проверьте], нет ли забытого указания архитектуры по умолчанию в {{path|~/.hasher/config}} или {{path|~/.rpmrc}}.
 
{{Category navigation|title=hasher|category=hasher|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=hasher|category=hasher|sortkey={{SUBPAGENAME}}}}
[[Категория:hasher]]
[[Категория:hasher]]
[[Категория:FAQ]]
[[Категория:FAQ]]

Версия от 15:58, 22 апреля 2015

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-подпись; возможно, будет интересна altbug #15376) — отключите часть проверок 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

A5: Если пакет собирать в локальном hasher-е и поле Packager содержит email не из домена altlinux, то возникнет схожая ошибка в модуле проверки changelog-а sisyphus_check. Так же как и с проверкой packager, можно добавить в no_sisyphus_check=changelog.

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 --initroot-only ~/hasher
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.)

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

Q17

Q: как передать параметры сборки rpm, например, --enable или --without?

A: --build-args для hsh или gear-hsh; при пересборке src.rpm также следует добавить --repackage-source:

hsh --build-args "--enable static" --repackage-source нужный.src.rpm
gear-hsh --build-args "--enable static"

Q18

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

A: например, сборка ведётся пользователем с логином username:

iptables -A OUTPUT -o venet0 -m owner --uid-owner username_a -j REJECT --reject-with icmp-net-unreachable
iptables -A OUTPUT -o venet0 -m owner --uid-owner username_b -j REJECT --reject-with icmp-net-unreachable

Q19

Q: отчего при работающем sources.list хэшер может жаловаться: «Пакет setup присутствует в базе данных, но не имеет доступной версии. […] E: Для пакета setup не найдено подходящего кандидата для установки»?

A: проверьте, нет ли забытого указания архитектуры по умолчанию в ~/.hasher/config или ~/.rpmrc.