Hasher/FAQ: различия между версиями
м (Q22: hsh-install ./pkg.rpm) |
м (удобнее весь список вопросов прочитать компактно в TOC) |
||
Строка 1: | Строка 1: | ||
== При запуске <tt>hsh</tt> я получаю ошибку: <code>hsh-mkchroot: cannot access getugid1 helper</code> == | |||
== | |||
A: [[Руководство по hasher#Добавление пользователя|Добавьте себя в hasher]]. | A: [[Руководство по hasher#Добавление пользователя|Добавьте себя в hasher]]. | ||
== | == Я добавил себя в <tt>hasher</tt>, но всё равно получаю ошибку <code>hsh: /usr/libexec/hasher-priv/getconf.sh: cannot access getconf helper</code> == | ||
A: Перелогиньтесь — <tt>hasher-useradd</tt> добавляет пользователя в новые группы. | A: Перелогиньтесь — <tt>hasher-useradd</tt> добавляет пользователя в новые группы. | ||
== | == Я собираю пакет, но он ломается из-за того, что в сборочной среде нет <tt>/proc</tt> == | ||
A: [[Руководство по hasher#Монтирование /proc|Настройте монтирование /proc]]. | A: [[Руководство по hasher#Монтирование /proc|Настройте монтирование /proc]]. | ||
== | == В моём <tt>hasher</tt> собираются пакеты со странной архитектурой, которые не ставятся == | ||
A: [[Руководство по hasher#Архитектура пакетов|Явно укажите архитектуру сборки]]. | A: [[Руководство по hasher#Архитектура пакетов|Явно укажите архитектуру сборки]]. | ||
== | == В конце сборки в <tt>hasher</tt> выдаются ошибки вида <code>some-packet.src.rpm: wrong PACKAGER</code> == | ||
Q: В конце сборки в <tt>hasher</tt> выдаются ошибки вида | Q: В конце сборки в <tt>hasher</tt> выдаются ошибки вида | ||
Строка 48: | Строка 37: | ||
A5: Если пакет собирать в локальном <tt>hasher</tt>-е и поле <tt>Packager</tt> содержит email не из домена altlinux, то возникнет схожая ошибка в модуле проверки changelog-а <tt>sisyphus_check</tt>. Так же как и с проверкой packager, можно добавить в no_sisyphus_check=changelog. | A5: Если пакет собирать в локальном <tt>hasher</tt>-е и поле <tt>Packager</tt> содержит email не из домена altlinux, то возникнет схожая ошибка в модуле проверки changelog-а <tt>sisyphus_check</tt>. Так же как и с проверкой packager, можно добавить в no_sisyphus_check=changelog. | ||
== | == При запуске <tt>hsh</tt> я получаю ошибку <code>hasher-priv: /path/to/workdir/chroot: prefix mismatch</code> == | ||
Q: При запуске <tt>hsh</tt> я получаю ошибку | Q: При запуске <tt>hsh</tt> я получаю ошибку | ||
Строка 80: | Строка 69: | ||
и еще раз повторите запуск <tt>hsh</tt>. | и еще раз повторите запуск <tt>hsh</tt>. | ||
== | == При запуске <tt>hsh</tt> выдаёт ошибку: <code>hasher-priv: openpty: No such file or directory</code> == | ||
A: Проверьте, что у вас смонтирован <tt>/dev/pts</tt> на хост-системе. | A: Проверьте, что у вас смонтирован <tt>/dev/pts</tt> на хост-системе. | ||
Строка 98: | Строка 84: | ||
tmpfs on /tmp type tmpfs (rw,nosuid,relatime,size=3145728k) | tmpfs on /tmp type tmpfs (rw,nosuid,relatime,size=3145728k) | ||
== | == почему hasher перестал создавать хэши ({{path|base/*}}) для своего репозитория? == | ||
A: потому что для некоторого ускорения сборки они [http://lists.altlinux.org/pipermail/devel/2009-December/178354.html упразднены] в пользу непосредственного сканирования каталога (<tt>rpm-dir</tt> вместо <tt>rpm</tt> в {{path|sources.list}}). Для создания хэшей при их публикации придётся запустить {{cmd|$hasher/aptbox/regenbasedir}} (или {{cmd|genbasedir --bloat}} совсем вручную). | A: потому что для некоторого ускорения сборки они [http://lists.altlinux.org/pipermail/devel/2009-December/178354.html упразднены] в пользу непосредственного сканирования каталога (<tt>rpm-dir</tt> вместо <tt>rpm</tt> в {{path|sources.list}}). Для создания хэшей при их публикации придётся запустить {{cmd|$hasher/aptbox/regenbasedir}} (или {{cmd|genbasedir --bloat}} совсем вручную). | ||
== | == есть ли споcоб запустить gui-шную программу внутри hasher? == | ||
A: да, | A: да, | ||
Строка 115: | Строка 97: | ||
<div id="virus"></div> | <div id="virus"></div> | ||
== | == правда, что Hasher — это вирус под Linux? == | ||
A: действительно, существует [http://en.wikipedia.org/wiki/Linux_malware#Viruses ELF-вирус] [http://vxheavens.com/lib/vhe02.html Linux.Hasher], но в отличие от него — наличие технических механизмов заражения и саморазмножения в обсуждаемом hasher не показано. | A: действительно, существует [http://en.wikipedia.org/wiki/Linux_malware#Viruses ELF-вирус] [http://vxheavens.com/lib/vhe02.html Linux.Hasher], но в отличие от него — наличие технических механизмов заражения и саморазмножения в обсуждаемом hasher не показано. | ||
== | == как включить доступ в сеть из hasher chroot? == | ||
A: share_network=1 hsh-shell | A: share_network=1 hsh-shell | ||
== | == Как кешировать и не скачивать одно и то же по многу раз для сборки разных пакетов? == | ||
Q: [http://lists.altlinux.org/pipermail/sisyphus/2008-June/331276.html Yury Aliaev]: "чтобы не скачивать одно и то же по многу раз для сборки разных пакетов, необходимо, чтобы скачанные пакеты где-то хранились и при следующем запуске брались уже из этого места. Опять-таки, если пакет в Сизифе более свежий, чем локально скачанный, то скачанный пакет должен обновиться на более свежий." | Q: [http://lists.altlinux.org/pipermail/sisyphus/2008-June/331276.html Yury Aliaev]: "чтобы не скачивать одно и то же по многу раз для сборки разных пакетов, необходимо, чтобы скачанные пакеты где-то хранились и при следующем запуске брались уже из этого места. Опять-таки, если пакет в Сизифе более свежий, чем локально скачанный, то скачанный пакет должен обновиться на более свежий." | ||
Строка 133: | Строка 111: | ||
A: Можно добавить от себя в конфигурацию apt-а для hasher особое место для кэша apt, которое не будет чиститься hsh; например, общесистемный /var/cache/apt/archives/ -- см. [[Hasher/Tips#Кэширование скачиваемых apt-ом пакетов]]. | A: Можно добавить от себя в конфигурацию apt-а для hasher особое место для кэша apt, которое не будет чиститься hsh; например, общесистемный /var/cache/apt/archives/ -- см. [[Hasher/Tips#Кэширование скачиваемых apt-ом пакетов]]. | ||
== | == процесс виснет на этапе какой-то установки пакетов через apt == | ||
Q: При запуске hsh с настройками apt по умолчанию (основанными на общесистемных /etc/apt/) процесс виснет на этапе какой-то установки пакетов через apt (при применении опции -v -- на сообщении "... пакеты будут установлены:" и список пакетов дальше). | Q: При запуске hsh с настройками apt по умолчанию (основанными на общесистемных /etc/apt/) процесс виснет на этапе какой-то установки пакетов через apt (при применении опции -v -- на сообщении "... пакеты будут установлены:" и список пакетов дальше). | ||
Строка 143: | Строка 121: | ||
* [http://lists.altlinux.org/pipermail/devel/2008-August/158438.html "<apt> спрашивает что же ему выбрать, а хешер ему не отвечает. --Вообще он этого делать не должен. Покажите вывод hsh -v в районе затыка. --Причина оказалась в том, что <...> apt пытался взять его с CDROM."] | * [http://lists.altlinux.org/pipermail/devel/2008-August/158438.html "<apt> спрашивает что же ему выбрать, а хешер ему не отвечает. --Вообще он этого делать не должен. Покажите вывод hsh -v в районе затыка. --Причина оказалась в том, что <...> apt пытался взять его с CDROM."] | ||
== | == как передать параметры сборки {{cmd|rpm}}, например, <tt>--enable</tt> или <tt>--without</tt>? == | ||
A: <tt>--build-args</tt> для {{cmd|hsh}} или {{cmd|gear-hsh}}; при пересборке src.rpm также [http://lists.altlinux.org/pipermail/sisyphus/2005-April/277314.html следует] добавить <tt>--repackage-source</tt>: | A: <tt>--build-args</tt> для {{cmd|hsh}} или {{cmd|gear-hsh}}; при пересборке src.rpm также [http://lists.altlinux.org/pipermail/sisyphus/2005-April/277314.html следует] добавить <tt>--repackage-source</tt>: | ||
Строка 152: | Строка 128: | ||
gear-hsh --build-args "--enable static" | gear-hsh --build-args "--enable static" | ||
== | == как запретить доступ в сеть из hasher chroot? == | ||
A: например, сборка ведётся пользователем с логином username: | A: например, сборка ведётся пользователем с логином username: | ||
Строка 160: | Строка 134: | ||
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 | ||
== | == «<tt>Пакет setup присутствует в базе данных, но не имеет доступной версии.</tt> […]» == | ||
Q: отчего при работающем {{path|sources.list}} хэшер может жаловаться: «<tt>Пакет setup присутствует в базе данных, но не имеет доступной версии.</tt> […] <tt>E: Для пакета setup не найдено подходящего кандидата для установки</tt>»? | Q: отчего при работающем {{path|sources.list}} хэшер может жаловаться: «<tt>Пакет setup присутствует в базе данных, но не имеет доступной версии.</tt> […] <tt>E: Для пакета setup не найдено подходящего кандидата для установки</tt>»? | ||
Строка 166: | Строка 140: | ||
A: [http://lists.altlinux.org/pipermail/community/2015-April/683972.html проверьте], нет ли забытого указания архитектуры по умолчанию в {{path|~/.hasher/config}} или {{path|~/.rpmrc}}. | A: [http://lists.altlinux.org/pipermail/community/2015-April/683972.html проверьте], нет ли забытого указания архитектуры по умолчанию в {{path|~/.hasher/config}} или {{path|~/.rpmrc}}. | ||
== | == как запустить в хэшере браузер? == | ||
A: например, [http://lists.altlinux.org/pipermail/community/2015-July/684363.html так]: | A: например, [http://lists.altlinux.org/pipermail/community/2015-July/684363.html так]: | ||
Строка 175: | Строка 147: | ||
share_ipc=yes share_network=yes hsh-run -Y --mount=/proc /path/to/hasher -- firefox -no-remote $@ | share_ipc=yes share_network=yes hsh-run -Y --mount=/proc /path/to/hasher -- firefox -no-remote $@ | ||
== | == как обеспечить попадание в hasher chroot именно нужного варианта {{pkg|branding-*-release}}? == | ||
Q: как обеспечить попадание в hasher chroot именно нужного варианта {{pkg|branding-*-release}}? Получаю либо {{pkg|branding-sisyphus-server-light-release}}, либо конфликт запрошенного с ним: | Q: как обеспечить попадание в hasher chroot именно нужного варианта {{pkg|branding-*-release}}? Получаю либо {{pkg|branding-sisyphus-server-light-release}}, либо конфликт запрошенного с ним: | ||
Строка 189: | Строка 161: | ||
A3: можно заставить {{pkg|apt}} [[Mkimage/Desktop/OldTroubles|указанием]] <tt>Dir::Etc::pkgpriorities</tt>, но это скорее ''ultima ratio''. | A3: можно заставить {{pkg|apt}} [[Mkimage/Desktop/OldTroubles|указанием]] <tt>Dir::Etc::pkgpriorities</tt>, но это скорее ''ultima ratio''. | ||
== | == как установить пакет из файла в hasher chroot? == | ||
Q: как установить пакет из файла в hasher chroot? | Q: как установить пакет из файла в hasher chroot? |
Версия от 15:33, 20 февраля 2016
При запуске hsh я получаю ошибку: hsh-mkchroot: cannot access getugid1 helper
Я добавил себя в hasher, но всё равно получаю ошибку hsh: /usr/libexec/hasher-priv/getconf.sh: cannot access getconf helper
A: Перелогиньтесь — hasher-useradd добавляет пользователя в новые группы.
Я собираю пакет, но он ломается из-за того, что в сборочной среде нет /proc
A: Настройте монтирование /proc.
В моём hasher собираются пакеты со странной архитектурой, которые не ставятся
A: Явно укажите архитектуру сборки.
В конце сборки в hasher выдаются ошибки вида some-packet.src.rpm: wrong PACKAGER
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.
При запуске hsh я получаю ошибку hasher-priv: /path/to/workdir/chroot: prefix mismatch
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.list (и sources.list.d/*.list), запустите apt-get update и еще раз повторите запуск hsh.
При запуске 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)
почему hasher перестал создавать хэши (base/*) для своего репозитория?
A: потому что для некоторого ускорения сборки они упразднены в пользу непосредственного сканирования каталога (rpm-dir вместо rpm в sources.list). Для создания хэшей при их публикации придётся запустить $hasher/aptbox/regenbasedir (или genbasedir --bloat совсем вручную).
есть ли споcоб запустить gui-шную программу внутри hasher?
A: да,
hsh --initroot-only ~/hasher hsh-install xauth "гуишная прога" hsh-run -Y "гуишная прога"
правда, что Hasher — это вирус под Linux?
A: действительно, существует ELF-вирус Linux.Hasher, но в отличие от него — наличие технических механизмов заражения и саморазмножения в обсуждаемом hasher не показано.
как включить доступ в сеть из hasher chroot?
A: share_network=1 hsh-shell
Как кешировать и не скачивать одно и то же по многу раз для сборки разных пакетов?
Q: Yury Aliaev: "чтобы не скачивать одно и то же по многу раз для сборки разных пакетов, необходимо, чтобы скачанные пакеты где-то хранились и при следующем запуске брались уже из этого места. Опять-таки, если пакет в Сизифе более свежий, чем локально скачанный, то скачанный пакет должен обновиться на более свежий."
A: Можно добавить от себя в конфигурацию apt-а для hasher особое место для кэша apt, которое не будет чиститься hsh; например, общесистемный /var/cache/apt/archives/ -- см. Hasher/Tips#Кэширование скачиваемых apt-ом пакетов.
процесс виснет на этапе какой-то установки пакетов через apt
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.)
Ответ найден благодаря сообщениям
- "Оказалось, что в /etc/apt/sources.list.d/sources.list был прописан cdrom, и hasher просил его вставить",
- "<apt> спрашивает что же ему выбрать, а хешер ему не отвечает. --Вообще он этого делать не должен. Покажите вывод hsh -v в районе затыка. --Причина оказалась в том, что <...> apt пытался взять его с CDROM."
как передать параметры сборки 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"
как запретить доступ в сеть из 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
«Пакет setup присутствует в базе данных, но не имеет доступной версии. […]»
Q: отчего при работающем sources.list хэшер может жаловаться: «Пакет setup присутствует в базе данных, но не имеет доступной версии. […] E: Для пакета setup не найдено подходящего кандидата для установки»?
A: проверьте, нет ли забытого указания архитектуры по умолчанию в ~/.hasher/config или ~/.rpmrc.
как запустить в хэшере браузер?
A: например, так:
hsh --initroot /path/to/hasher hsh-install /path/to/hasher firefox fonts-otf-mozilla-fira xauth share_ipc=yes share_network=yes hsh-run -Y --mount=/proc /path/to/hasher -- firefox -no-remote $@
как обеспечить попадание в hasher chroot именно нужного варианта branding-*-release?
Q: как обеспечить попадание в hasher chroot именно нужного варианта branding-*-release? Получаю либо branding-sisyphus-server-light-release, либо конфликт запрошенного с ним:
error: failed dependencies: branding-sisyphus-server-light-release conflicts with branding-altlinux-centaurus-release-7.0.5-alt1 hsh-initroot: Failed to install build package list.
A1: при сборке пакетов — посредством --pkg-build-list=+branding-altlinux-starterkit-release
A2: при сборке образов с помощью mkimage — заданием IMAGE_INIT_LIST=+branding-simply-linux-release (не требуется при использовании mkimage-profiles).
A3: можно заставить apt указанием Dir::Etc::pkgpriorities, но это скорее ultima ratio.
как установить пакет из файла в hasher chroot?
Q: как установить пакет из файла в hasher chroot?
$ hsh-install ./viber-4.2.2.6-2.rpm E: Невозможно найти пакет ./viber-4.2.2.6-2.rpm
A: hsh-install не любит относительных путей к пакетам, указывайте полный.