On Mon, Sep 22, 2008 at 07:19:58AM +0000, Alexey Tourbin wrote: > В каких случаях при установке пакетов выставляется DURING_INSTALL? > > Также прошу прокомментировать последнее изменение в пакете menu. > Почему инициализировать меню надо не в %post-скрипте, а при первой > загрузке? > > commit e5c0c5f30d097ef18c3c619a51c3cc962742a58c > Author: Anton Farygin > Date: Wed Jun 25 13:07:15 2008 +0400 > > 2.1.35-alt5.1 > > - create /etc/menu-methods/lang.h in firsttime script, also don't run post > script on system preparing stage (check DURING_INSTALL) > > diff --git a/menu-firsttime b/menu-firsttime > index 1e8dac3..a677d90 100755 > --- a/menu-firsttime > +++ b/menu-firsttime > @@ -5,4 +5,23 @@ WITHOUT_RC_COMPAT=1 > # Source function library. > . /etc/init.d/functions > > +# create languages list > +if [ -r /etc/sysconfig/i18n ]; then > + . /etc/sysconfig/i18n > +fi > +PREFERRED_LOCALE=$LANG > +[ -n "$PREFERRED_LOCALE" ] || PREFERRED_LOCALE=C Согласно locale(7), в качестве языка для надписей меню надо выбирать сначала LC_ALL, потом (если LC_ALL пустой) LC_MESSAGES, LANGUAGE, потом LANG, потом "C". Почему тут сразу берётся LANG? > +LANGUAGES_LIST=$SUPPORTED Откуда берётся переменная SUPPORTED? Не лучше ли использовать "rpm --eval %_install_langs"? > +[ -n "$LANGUAGES_LIST" ] || LANGUAGES_LIST=$PREFERRED_LOCALE > +[ -n "$LANGUAGES_LIST" ] || LANGUAGES_LIST=C > + > +if [ "$LANGUAGE" == "all" ] > +then > + LANGUAGES_LIST=`echo /usr/share/locale/*/LC_MESSAGES/menu-messages.mo | sed -e 's@/usr/share/locale/@@g' -e 's@/LC_MESSAGES/menu-messages.mo@@g' -e 's@ @:@g'` > +fi > +echo "function lang()=\"$PREFERRED_LOCALE\"" > /etc//menu-methods/lang.h > +echo "function languages()=\"$LANGUAGES_LIST\"" >> /etc/menu-methods/lang.h И, главное, где же в меню используется эта функция "languages()"? Никак не могу найти, и никак не могу понять, зачем составлять список всех поддерживаемых локалей.