В случае ошибки возникающей в какой-то команде в ~/.hasher/install/post скрипте во время hsh --ini не понятно где возникает ошибка. Может создаться не правильное впечатление что ошибка где-то в posttrans-filetriggers. Запуск hsh --ini --verbose не отображает, что запускается post скрипт, из-за этого локализация элементарной ошибки очень сложна.
В качестве решения, которое будет работать со всеми версиями hasher, могу предложить всегда добавлять set -x в ~/.hasher/install/post А в остальном, как обычно, патчи приветствуются.
Я, видимо, плохо описал проблему.
OK, а в чём тогда проблема? Хочется не вставлять отладку в ~/.hasher/install/post, но при этом получать отладочные сообщения о том, что /.host/postin запустился?
Я бы сам вставил отладку в ~/.hasher/install/post если бы знал что проблема в нем, но как раз это и неизвестно. "Не понятно где возникает ошибка" - не "не понятно где в post", а "не понятно где в hsh --ini".
Добавить фразу Executing /.host/postin, или добавить -x в скрипт, который запускает /.host/postin?
Было бы желательно хотя бы добавить фразу Executing ~/.hasher/install/post или аналогичное что бы показало, что дело не в каком-то из пакетов или filetrigger, а в моём post. Я думаю -x это не покажет.
Попробуй такой патч: --- a/hasher/hsh-sh-functions.in +++ b/hasher/hsh-sh-functions.in @@ -427,6 +427,7 @@ create_entry_header() TMPDIR="\$HOME/tmp" export TMPDIR cd /.in +${verbose:+set -x} __EOF__ chmod 755 "$entry" } @@ -443,6 +444,7 @@ if [ -z "\$FAKEROOTKEY" -a "\$USER" = root -a -x /usr/bin/fakeroot ]; then fi fi cd /.in +${verbose:+set -x} __EOF__ chmod 755 "$entry" }
Это не помогает. Я прошу сделать вывод сообщения, что сейчас запускается ~/.hasher/install/post
(In reply to Vitaly Chikunov from comment #8) > Это не помогает. Я прошу сделать вывод сообщения, что сейчас запускается > ~/.hasher/install/post Реализовать именно это предложение довольно сложно. Сообщение должно будет порождаться из /.host/entry; либшелльные лог-сообщения опционально идут ещё и в сислог, крайне неудобно это делать из /.host/entry. Можно в entry засунуть только явный printf >&2, конечно, но это первый прецедент такого псевдо-verbose сообщения. В общем, лично мне не нравится. Теперь конструктивные предложения. В версии hasher 1.6.0-alt1 postin запускается прямо после следующих verbose-сообщений: * 'hsh-install: calculated mount points: '"$required_mountpoints" * 'hsh-initroot: RPM database updated.' (если chroot cache отключен или протух) Зачем я это упоминаю? Если hsh --initroot-only не добирается до этого места, значит, postin не виноват. В версии hasher 1.6.0-alt1 postin запускается прямо перед следующими verbose-сообщениями: * 'hsh-install: Packages installation complete.' * 'hsh-initroot: First time initialization complete.' (если chroot cache отключен или протух) Зачем я это упоминаю? Может, вместо сообщения о postin стоит ввести в этих программах сообщения о начале "packages installation" и "first time initialization".
Пользователю надо узнать что сейчас выполняется ~/.hasher/install/post и следующие ошибки - из него. По всем эти надписям это не понятно, так что они не нужны.
(In reply to Vitaly Chikunov from comment #8) > Это не помогает. Я прошу сделать вывод сообщения, что сейчас запускается > ~/.hasher/install/post Попробуй такой патч: diff --git a/hasher/hsh-install b/hasher/hsh-install index caa8d7d..2101b79 100755 --- a/hasher/hsh-install +++ b/hasher/hsh-install @@ -161,6 +161,7 @@ if type adjust_kernel_headers >/dev/null 2>&1; then adjust_kernel_headers --first fi if [ -x /.host/postin ]; then + ${verbose:+echo >&2 \$0: executing /.host/postin} /.host/postin fi __EOF__ diff --git a/hasher/hsh-sh-cache-chroot-functions b/hasher/hsh-sh-cache-chroot-functions index 099459b..c5aa1c6 100644 --- a/hasher/hsh-sh-cache-chroot-functions +++ b/hasher/hsh-sh-cache-chroot-functions @@ -372,6 +372,7 @@ if type adjust_kernel_headers >/dev/null 2>&1; then adjust_kernel_headers fi if [ -x /.host/postin ]; then + ${verbose:+echo >&2 \$0: executing /.host/postin} /.host/postin fi groupadd -g $gid0 caller ||: