Когда hsh --init заполняет ~/hasher/aptbox/var/cache/apt/archives, то желательно, чтобы он прямо говорил в логе, что качает пакеты. Если хашерницу собирает начинающий, причём пакеты для неё берутся из инета, и канал тощий (а такое всё-таки бывает!), то "зависание" hsh --init на не очень понятной строке hsh-initroot: Generated initial package file list. может сильно озадачить человека ;)
Полностью согласен с топикстартером. По началу очень озадачивало, пока не спросил у ребят...
Думаю, самым простым способом будет что-то вроде echo "Obtaining packages (downloading remotely might take a while)..." перед тем, как.
Дело в том, что hasher, запуская apt-get -q -y -o RPM::PM=external -o Dir::Bin::rpm=hsh-rpmi-print-files (см. print_uris() в hsh-sh-functions) не знает, что именно делает apt-get, в частности, скачивает ли он файлы. Например, в случае использования метода file точно ничего не скачивается. Даже не знаю, чем вам помочь.
Это понятно, потому и такую формулировку предложил. Ну или так: Obtaining packages (might take a while if downloading remotely)...
(In reply to comment #4) > Это понятно, потому и такую формулировку предложил. Ну или так: > > Obtaining packages (might take a while if downloading remotely)... 1.3.20-alt1-2-g88b0822
Created attachment 4959 [details] Patch using tee(1) Предлагается иной способ обхода с помощью tee(1) - см. прикладываемый патч.
(In reply to comment #6) > Created an attachment (id=4959) [details] > Patch using tee(1) > > Предлагается иной способ обхода с помощью tee(1) - см. прикладываемый патч. Вариант с tee в принципе плох тем, что статус завершения apt-get безвозвратно теряется.
Created attachment 4960 [details] Patch using tee(1) Поправка: чтобы if работал правильно, нужно временно установить pipefail.
(В ответ на комментарий №8) > Created an attachment (id=4960) [details] > Patch using tee(1) + if ! out="$("$aptbox/apt-get" $options install -- "$@" 2>&1 | tee /dev/stderr)"; then + set +o pipefail Как Дима и сказал, внутрь if вы никогда не попадёте. tee будет завершаться успешно и код возврата apt будет потерян.
$ if ! v=$(false | tee /dev/stderr); then echo a; fi $ set -o pipefail; if ! v=$(false | tee /dev/stderr); then echo a; fi; set +o pipefail a
(In reply to comment #9) > (В ответ на комментарий №8) > > Created an attachment (id=4960) [details] [details] > > Patch using tee(1) > > + if ! out="$("$aptbox/apt-get" $options install -- "$@" 2>&1 | tee > /dev/stderr)"; then > + set +o pipefail > > Как Дима и сказал, внутрь if вы никогда не попадёте. tee будет завершаться > успешно и код возврата apt будет потерян. Идея понятна, имелось в виду $(set +o pipefail; apt-get | tee). Честно говоря, я бы, наверное, не очень бы хотел, чтобы _весь_ вывод apt-get транслировался бы пользователю даже в режиме verbose. А в обычном режиме пользователю вообще никакого вывода от apt-get не нужно.
(В ответ на комментарий №10) > $ if ! v=$(false | tee /dev/stderr); then echo a; fi > $ set -o pipefail; if ! v=$(false | tee /dev/stderr); then echo a; fi; set +o > pipefail > a Прошу прощения, я не заметил этот милый башизм :)
Устанавливает опцию именно -o, а не +o: $ set -o pipefail $ set -o | grep pipefail pipefail on $ set +o pipefail $ set -o | grep pipefail pipefail off Вообще, мне кажется, что данный баг именно о нужности индикатора состояния (progress bar или чего-нибудь похожего). В конце концов, вывод apt-get можно и порезать (grep). Использования башизмов не постеснялся из-за: http://lists.altlinux.org/pipermail/devel/2010-August/183728.html http://lists.altlinux.org/pipermail/devel/2010-August/183729.html =)
(In reply to comment #11) > (In reply to comment #9) > > (В ответ на комментарий №8) > > > Created an attachment (id=4960) [details] [details] [details] > > > Patch using tee(1) > > > > + if ! out="$("$aptbox/apt-get" $options install -- "$@" 2>&1 | tee > > /dev/stderr)"; then > > + set +o pipefail > > > > Как Дима и сказал, внутрь if вы никогда не попадёте. tee будет завершаться > > успешно и код возврата apt будет потерян. > > Идея понятна, имелось в виду $(set -o pipefail; apt-get | tee). > Честно говоря, я бы, наверное, не очень бы хотел, чтобы _весь_ вывод apt-get > транслировался бы пользователю даже в режиме verbose. А в обычном режиме > пользователю вообще никакого вывода от apt-get не нужно. Попробуйте 1.3.20-alt1-3-gca1aab7; не кажется ли вам, что режим -v в результате этого изменения стал чрезмерно болтлив?
(In reply to comment #14) > Попробуйте 1.3.20-alt1-3-gca1aab7; не кажется ли вам, что режим -v в результате > этого изменения стал чрезмерно болтлив? Кто-нибудь уже попробовал?
Не-а, но кажется, что одной строчки достаточно (особенно если при загрузке она как раз и болтается последней).
hasher-1.3.21-alt1 -> sisyphus: * Wed Jul 27 2011 Dmitry V. Levin <ldv@altlinux> 1.3.21-alt1 - hsh-run: disable network isolation when X11 forwarding is requested. - hsh: added --printenv option (closes: #23955) - hsh-sh-functions.in (print_uris): in verbose mode, print a message about obtaining packages (closes: #25686).