Bug 25686 - hsh --init заполняет кэш, прямо не говоря об этом
: hsh --init заполняет кэш, прямо не говоря об этом
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/hasher)
: unstable
: all Linux
: P3 enhancement
Assigned To:
:
:
: usability
:
: 26217
  Show dependency tree
 
Reported: 2011-05-30 13:42 by
Modified: 2011-09-02 10:45 (History)


Attachments
Patch using tee(1) (762 bytes, patch)
2011-06-02 09:45, Dmitry Chistikov
no flags Details | Diff
Patch using tee(1) (799 bytes, patch)
2011-06-02 10:00, Dmitry Chistikov
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2011-05-30 13:42:40
Когда hsh --init заполняет ~/hasher/aptbox/var/cache/apt/archives, то
желательно, чтобы он прямо говорил в логе, что качает пакеты. Если хашерницу
собирает начинающий, причём пакеты для неё берутся из инета, и канал тощий (а
такое всё-таки бывает!), то "зависание" hsh --init на не очень понятной строке 
hsh-initroot: Generated initial package file list.
может сильно озадачить человека ;)
------- Comment #1 From 2011-05-31 15:47:55 -------
Полностью согласен с топикстартером.
По началу очень озадачивало, пока не спросил у ребят...
------- Comment #2 From 2011-06-01 00:08:30 -------
Думаю, самым простым способом будет что-то вроде

echo "Obtaining packages (downloading remotely might take a while)..."

перед тем, как.
------- Comment #3 From 2011-06-01 00:29:10 -------
Дело в том, что 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 точно ничего не скачивается.

Даже не знаю, чем вам помочь.
------- Comment #4 From 2011-06-01 00:51:14 -------
Это понятно, потому и такую формулировку предложил.  Ну или так:

Obtaining packages (might take a while if downloading remotely)...
------- Comment #5 From 2011-06-01 01:08:19 -------
(In reply to comment #4)
> Это понятно, потому и такую формулировку предложил.  Ну или так:
> 
> Obtaining packages (might take a while if downloading remotely)...

1.3.20-alt1-2-g88b0822
------- Comment #6 From 2011-06-02 09:45:20 -------
Created an attachment (id=4959) [details]
Patch using tee(1)

Предлагается иной способ обхода с помощью tee(1) - см. прикладываемый патч.
------- Comment #7 From 2011-06-02 09:48:26 -------
(In reply to comment #6)
> Created an attachment (id=4959) [details] [details]
> Patch using tee(1)
> 
> Предлагается иной способ обхода с помощью tee(1) - см. прикладываемый патч.

Вариант с tee в принципе плох тем, что статус завершения apt-get безвозвратно
теряется.
------- Comment #8 From 2011-06-02 10:00:39 -------
Created an attachment (id=4960) [details]
Patch using tee(1)

Поправка: чтобы if работал правильно, нужно временно установить pipefail.
------- Comment #9 From 2011-06-02 10:15:32 -------
(В ответ на комментарий №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 будет потерян.
------- Comment #10 From 2011-06-02 10:26:45 -------
$ 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
------- Comment #11 From 2011-06-02 10:27:59 -------
(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 не нужно.
------- Comment #12 From 2011-06-02 10:33:07 -------
(В ответ на комментарий №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

Прошу прощения, я не заметил этот милый башизм :)
------- Comment #13 From 2011-06-02 10:45:55 -------
Устанавливает опцию именно -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
=)
------- Comment #14 From 2011-06-02 11:03:13 -------
(In reply to comment #11)
> (In reply to comment #9)
> > (В ответ на комментарий №8)
> > > Created an attachment (id=4960) [details] [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 в результате
этого изменения стал чрезмерно болтлив?
------- Comment #15 From 2011-06-10 19:35:03 -------
(In reply to comment #14)
> Попробуйте 1.3.20-alt1-3-gca1aab7; не кажется ли вам, что режим -v в результате
> этого изменения стал чрезмерно болтлив?

Кто-нибудь уже попробовал?
------- Comment #16 From 2011-06-11 02:00:56 -------
Не-а, но кажется, что одной строчки достаточно (особенно если при загрузке она
как раз и болтается последней).
------- Comment #17 From 2011-07-27 01:10:20 -------
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).