Summary: | hsh --init заполняет кэш, прямо не говоря об этом | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | IVK <ivk1097> | ||||||
Component: | hasher | Assignee: | Dmitry V. Levin <ldv> | ||||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||||
Severity: | enhancement | ||||||||
Priority: | P3 | CC: | at, dd1email, glebfm, ldv, legion, mike, placeholder, radik | ||||||
Version: | unstable | Keywords: | usability | ||||||
Hardware: | all | ||||||||
OS: | Linux | ||||||||
Bug Depends on: | |||||||||
Bug Blocks: | 26217 | ||||||||
Attachments: |
|
Description
IVK
2011-05-30 13:42:40 MSK
Полностью согласен с топикстартером. По началу очень озадачивало, пока не спросил у ребят... Думаю, самым простым способом будет что-то вроде 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). |