From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 7 Jun 2005 20:34:01 +0700 From: php-coder To: community@altlinux.ru Subject: =?cp1251?B?z/Dl5Ovu5uXt6P8g7+4gdXBkYXRl?= =?cp1251?B?X2tlcm5lbF9tb2R1bGVzLnNoICh3YXM6IFJlOiBbQ29tbV0g8erw6O/yIO7h?= =?cp1251?B?7e7i6+Xt6P8g/+Tl8C/s7uTz6+XpKQ==?= Message-ID: <20050607133401.GA4106@mycomp.mydomain> Mail-Followup-To: community@altlinux.ru, Vitaly Lipatov References: <20050504142638.GC22379@osdn.org.ua> <20050505185218.GQ22379@osdn.org.ua> Mime-Version: 1.0 Content-Type: text/plain; charset=cp1251 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20050505185218.GQ22379@osdn.org.ua> Cc: Vitaly Lipatov X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: community@altlinux.ru List-Id: Mailing list for ALT Linux users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jun 2005 13:33:02 -0000 Archived-At: List-Archive: List-Post: --- Michael Shigorin 2005-05-05 21:52:18 +0300 +++ php-coder 2005-05-26 18:50:44 +0700 MS> Пользуйтесь скриптом Виталика Липатова (прилагаю). Пока им не пользовался (потому что ядро и два модуля могу и вручную обновить), но вот просто к коду повнимательнее присмотрелся ;) MS> # Тип ядра (получаем из текущего запущенного) MS> TYPESYS=`uname -r | cut -d "-" -f2,3` MS> test -z "$1" || TYPESYS=$1 Может быть так? test -z "$1" || TYPESYS=`uname -r | cut -d- -f2,3` _Для_универсальности_ не будет лишней также проверка на ванильное ядро или самосборное... MS> SUDO=sudo MS> if [ "$UID" == "0" ] MS> then MS> SUDO= MS> fi Так тоже работает: [ "$UID" != "0" ] && SUDO=sudo || SUDO= MS> LISTKER=`$SUDO apt-get install kernel-image-$TYPESYS -y | grep "\#" | grep -v "\["` MS> LISTKER=`echo $LISTKER | cut -d " " -f 1 | head -n 1` Если я правильно понял цель к которой ведут эти две строчки чуть выше, то, думаю, что можно это все записать намного короче: LISTKER=`$SUDO apt-get install -y kernel-image-$TYPESYS | \ grep -e "^\ "` Т.е. смысл в том, что пакет, который должен установиться всегда находится в строке начинающейся с пробела. Других подобных строк я не встретил. MS> echo "Install new kernel $LISTKER" MS> $SUDO apt-get install $LISTKER -y хм... значит чуть выше ядро-то и не устанавливалось? В таком случае может использовать ключ --simulate для этого? (проглядывая man apt-get) Кстати, еще может быть полезны опция --quiet К примеру, она опускает вывод индикаторов хода выполнения задачи. Насколько, я понял вы для этого использовали grep -v "\["? MS> ALLMODULES=`apt-cache pkgnames kernel-modules | sed -e "s/kernel-modules-//g" |\ MS> sed -e "s/-.*$//g" | sort | uniq | grep -v kernel` Тут, кажется, есть ошибка. Не все модули обновляются :( К примеру, от drm-via-2.6.10-wks26-up-alt5 и drm-vs-smp после "обрезания" останется лишь drm. А потом, после uniq, останется лишь запись drm и установится лишь drm. А что с drm-via? Я так понял, что ничего :( Так вот сходу решения не нашел. Зато есть несколько идей: - вместо прожорливого sed -e 's/kernel-modules-//g' можно использовать cut: cud -c 16- Т.е. мы мерем все символы, начиная с шестнадцатого. Вот доказательства ;) sed -e "s/kernel-modules-//g" 0,03s user 0,00s system 1% cpu 1,707 total cut -c 16- 0,00s user 0,01s system 0% cpu 1,708 total Насколько, я понял cut быстрее.. - если уже использовать sed, то хотя бы записать это короче: sed -e 's/kernel-modules-//g;s/-.*$//g' - sort | uniq лучше заменить на sort -u (эффект тот же) - вот еще идея! Зачем искать все возможные модули? Может лучше только те, которые для используемого ядра? Тогда и меньше будет обрабатываемый список: [c0der@mycomp ~]$ apt-cache pkgnames kernel-modules WC 1304 [c0der@mycomp ~]$ apt-cache pkgnames G std-up WC 145 Т.е. искать модули содержащие в себе $TYPESYS Это у меня предложение такое... :-) Хотелось бы услышать мнение автора ;-) Поэтому даю ему, на всякий случай, Сс: Bye! -- + php-coder + php-coder[at]altlinux[dot]ru