ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] [Fwd: Рассказ об установке ALTLinux]
@ 2002-01-04 19:57 Aleksey Novodvorsky
  2002-01-04 20:20 ` Alexander Bokovoy
  2002-01-04 22:55 ` [devel] Re: [Fwd: Рассказ об установке ALTLinux] Mikhail Zabaluev
  0 siblings, 2 replies; 7+ messages in thread
From: Aleksey Novodvorsky @ 2002-01-04 19:57 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 112 bytes --]

Просьба содержательные комментарии отправлять автору нижеследующейго
письма,  а не только сюда.

Rgrds, Алексей

[-- Attachment #2: Type: message/rfc822, Size: 29630 bytes --]

From: Andrey Orlov <cray@iig.ru>
To: aen@altlinux.ru
Subject: Рассказ об установке ALTLinux
Date: Fri, 4 Jan 2002 23:40:03 +0300
Message-ID: <02010423400303.16854@fire.neural.ru>



[-- Attachment #2.1.1: Type: text/plain, Size: 18100 bytes --]

Hi!

Похоже, предыдущее письмо затерялось.

-----------------------------------------------------------------------
$Id: ОтчетОбУстановкеALT.txt,v 1.8 2001/12/21 02:03:06 cray Exp $'
-----------------------------------------------------------------------
 =========
 Зависимости
 =========

 Мы ставили ваш дистрибутив довольно, хм, странным способом - поочереди все
 пакеты - а потому заметили ряд погрешностей в зависимостях, которые вряд ли
 заметны невооружеенным глазом, и, скорее всего остались до сих пор:


 -- MySQL потребовал установки PerlDB в обязательном порядка. Хотя обратная
    ситуация была бы не лучше. Разумно ли существование такой зависимости:
    MySQL не всегда используют вместе с Perl, может быть стоит ее подавить?

 -- Никому в голову не придет ставить линух без пакета filesystem, но у нас
    такое получилось: зависимости это допустили. Соотв., последующие пакеты,
    используеющие каталог, например, /var/tmp, отказались ставится без
    видимых причин: т.к. такой зависимости в них не было. Если нам не изменяет
    память, это были все пакеты perl*;


 ========
 Добавленные пакеты
 ========

 Ряд пакетов для перла нам пришлось добавить. Честно говоря, меня удивило,
 что они не вошли в ваш дистрибутив, т.к. пакеты, вообще-то, весьма часто
 используемые: нам приходилось по их поводу неоднократно вступать в, хм,
 полемику с различными службами техподдержки провайдеров, и последние хотя и
 не высказывали любви, но демонстрировали хорошее знакомство с ними.  Вот
 список этих пакетов:

   perl-HTML-Template-2.4-iig1.src.rpm  - это знаменитый HTML::Template;

   perl-MIME-Base64-2.12-iig1.src.rpm - Кодировщик/декодировщик Base64;

   perl-MIME-Lite-2.117-iig1.src.rpm - Посылалка писем;     

   perl-MIME-Types-0.06-iig1.src.rpm - Определение MIME-типа по расширению;

 Мы собрали по вашим примерам для них rpm'ы, и, возможно это неплохо
 получилось. Хотя мы вряд ли возьмемся их поддерживать, т.к. с перлом
 работаем все меньше и меньше, но то что собрали можем передать вам:
 выложить на ftp или закатать на болванку - как вам будет удобнее.

 Пришлось добавить группу пакетов для питона & Zope, про Zope 
 подробно скажу ниже, про питон вот:

    MySQL-python-0.9.0-1.i686.rpm - сбсно, коннектор к MySQL. Питон для нас
	основной язык разработки, да и среда, с нашей точки зрения, должна
	быть целостной, навено разумно включить пакет в дистрибутив.  Наша
	поддержка возможна, если она актуальна. Кстати, коннектор к
	PostgreSQL, кажется у вас есть.

 Либо мы не нашли... Либо вы реально решили ничего такого не добавлять... 
 Но ни одной хоть скольнить серьезной тулзы посвященной IP аудиту в
 дистриутиве нет, за исключением каких-то малополезных функциональных
 возможностей в одном из файерволов.

 Что забавно, такие утилиты существуют. Часть из них мы перетащили под 
 Alt:

  ipaudit-0.92-0.src.rpm - счетчик & классификатор пролетающих мимо пакетов.
	Эксплуатация показала, что это весьиа качестенная реализация.

  ntop-1.3.2-5alt1.src.rpm - это из редхетовского дистрибъюшена. Красиво,
	реалтаймово, но бесполезно и глючно: подробных логов не ведет, часто
	падает, в общем, при разговорах с начальством штука бесполезная.

 Аналогичная мелочь:

  atsar_linux-1.5-1IIG.src.rpm - сбор статистики использования системы.

 =========
 Вопросы
 =========

 У меня возник ряд вопросов относительно конфигурации пакетов по умолчанию:

 bind - удивил сконфигуренный по умолчанию сhaosnet. Чесгря, я думал, что это
	дела давно минувших дней, времен Lisp-машин и институтских сетей.

 чрутизация - не то, что бы я возражал.... Но были ли какие-то реальные
	эксплойты на mysql & bind, и стоит ли вообще-то овчинка, хм,
	выделки? Хотя удивило то, что чрутизация заняла столь мало места.


 =========
 Zope
 =========

 С Zope была чумовая история: несмотря на ваши заверения, у нас есть
 серъезные опасения, что ситуация не изменилась, т.к. с Zope было два уровня
 ошибок: скорее всего вы заметили первый, но если вы не эксплуатируете Z, то
 вряд ли заметили второй.

 Первый уровень связан с тем, что несколько фрагментов Zope в него в вашей
 версии не вошли: запускаться он отказался напроч. Скорее всего это было
 исправлено, но вот краткое переичисление пропущенных файлов:

 /usr/share/zope/lib/python/Products/PluginIndexes/TextIndex/Splitter
 /usr/share/zope/lib/python/BTrees
 /usr/share/zope/lib/python/RestrictedPython

 Была еще всякая мелочевка, с которой мы справились настолько быстро, что
 сейчас уже тяжело вспомнить что там было, да и скорее всего это уже
 устарело.

 А теперь второй уровень, который, вполне возможно, не исправлен до сих пор:
 Мы радостно все это дело запустили, перебросили в новый Zope наш тогдашний
 пакет и начали с ним работать. Через три дня эксплуатации Zope благополучно
 умер. Вместе с ZODB. Вам будет понятно удивление, если вспомнить, что за
 предыдущий год не было ни одного сбоя. Мы восстановили данные с бакапа,
 начали разбираться и вот что выяснилось: Zope из ваших пакетов через
 два-три дня умирает. Вместе с базой - сам формат базы оказался
 несовместимым с нормальной версией. Против этого не помогла ни пересборка,
 ни внимательное изучение вашего пакета: после трех дней попыток исправить
 ваш пакет мы взяли Z c www.zope.org и пересобрали его оттуда, после чего
 баги прошли.

 Ситуацию усугубляло еще и то, что сама планировка инсталляции Zope была в
 принципе не пригодна для его серьезной эксплуатации. Я понимаю, что она
 следует рекомендациям DC, но мы с нашим опытом работы с Z привыкли к более
 серъезным настройкам, равно как к обязательному наличию ряда необязательныъ
 пакетов ;).

 История закончилась тем, что мы полностью отказались от использования
 результатов проекта "Zope RPM", т.к.  во-1-ых его результы не
 жизнеспособны, а во-2-ых структура пакета, с нашей точки зрения, очень
 слабо учитывает реалии использования Z на полукоммерческом хостинге.  Мы
 собрали свой пакет, разумеется, из DC'шных (www.zope.org) исходников.

 Основные отличия:

 1. Мы ориентируемся на то, что на хосте запущено несколько Z-серверов. Это
 крайне удобно с точки зрения разработки, эксплуатации и хостинга десятка
 проектов. Как правило, у нас запущено два Z-сервера, коммерческий и
 тестовый, иногда доходит до трех.

 2. Мы добавили пакеты в питон и в Z: часть наши собственные, в т.ч.
 кирилический багфикс, часть - чужие. Вот их список:

    ZProducts-ZMySQLDA-2.7.0-1.src.rpm	- коннектор к MySQL, очевидно, стоит
	добавить еще и коннектор к PostgreSQL: нам он не нужен, но с точки
	зрения целостности...

    ZProducts-mysqlUserFolder-0.6.0-1.src.rpm - эта версия основательно
	пропатчена нами.  Специально для MSIE & Russia. Видимо, мы будем
	связываться с авторами на предмет включения наших патчей.

    Zope-2.4.2-iig1.src.rpm - это сам Z: о его структуре лучше грить
    отдельно.

    CrayFIX, AqGuard, FloodGuard, CrazyGuard, SemanticGuard, RequestDecoder -
	это все сейчас в стадии разработки. Видимо, будет выложено на сайтах
	www.neural.ru & www.iig.ru для свободного даунлоада в течении
	недели-двух. Вот цитата из нашего внутреннего документа поддержки
	технологии разработки:

	CrayFIX - русификация ZServer'а

	Установка пакета вызывает добавление в заголовок ContentType
	кодировки, без которой ряд грязно реализованных браузеров, таких как
	MS Internet Explorer, не способны работать с сайтом. Обнаружение в
	конетексте специальных объектов, таких как libIIGFS и RequestDecoder
	вызывает добавление ряда полезных функций в менеджерский интерфейс
	Zope.

	RequestDecoder - автоматическое декодирование запросов

	Установка пакета позволяет создать объект, осуществляющий
	автоматическое распознавание кодировки входящих запросов и
	перекодирование их в кодировку сервера. Без его установки ряд версий
	грязно реализованных браузеров, таких как MS Internet Explorer, не
	способны правильно работать с сайтом.

	AqGuard & CrazyGuard - защита от сумашедших роботов

	Особенности объектной модели Zope могут приводить к неограниченной
	рекурсии индексирующих роботов, превращая их нормальные действия в
	DoS-атаку против сайта. Установка экземпляра объекта AqGuard
	позволяет ограничить рекурсию и заблокировать запрос при обнаружении
	повторного обращения к контейнеру в рамках запроса, а объекта
	CrazyGuard - обнаружить факт индексации сайта сумашедшим роботом и
	сгенерировать отказ в доступе или заблокировать обработку запроса
	при повышенной нагрузке на сайт в этот момент.

	FloodGuard - защита от флуда

	Объект FloodGuard дает общее решение проблемы флуда & спамминга веб
	ресурсов, ограничивая количество обращений к указанным в его
	конфигурации ресурсам сайта. Ограничение ставится на количество
	запросов даннного типа за указанный временной интервал с одного и
	того же IP-адреса.  FloodGuard может применятся как к отдельным
	компонентам сайта так и ко всему сайту в целом.

	FloodGuard имеет дополнительную возможность: запрет использования
	защищаемых интерфейсов сайта при обращении к ним из интерфейсов
	других сайтов, благодаря чему можно заблокировать попытки неопытных
	спаммеров использовать скрипты для атаки на сайт.

	Остальные пакеты пока в работе.

 3. Zope нужно обслуживать: запускать, останавливать, паковать, бакапить, и
 т.п.: мы полностью переписали все скрипты окружения, типа
 /etc/rc.d/init.d/zope, и добавили штук пять своих: неплохие наработки у нас
 были, хотя их и пришлось обобщить. Теперь это удобно.

 Наше общее заключение такое: мы готовы предоставить этот набор пакетов. 
 Видимо, мы готовы их поддерживать, хотя о том, что такое поддержка
 хотоелось бы поговорить подробно. Если это представляет интерес, нам стоит
 встретится и обсудить такое сотрудничество.

 =========
 Apache
 =========

 Я уже говорил что в апаче бага? В модуле mod_proxy. Честно говоря, у меня
 так и не дошли руки поднять стенд и воссоздать тестовую ситуацию на вашем
 русском апаче, но где-то дня через три его работы я увидел до боли знакомые
 симптомы и Павел пересобрал апач с моим патчем, симптомы после этого прошли,
 а к этому письму я прилагаю патч, описание баги, обоснование патча и
 тестовый скрипт. Теперь к апачу претензий, вроде, нет. Хотя баги в этом
 модуле, безусловно, еще есть - я не шучу, я вижу их проявления, просто это
 не критично.

 Далее следуют подробности баги, взятые из нашей переписки с заказчиками,
 если нужны дополнительные подробности, мы готовы их предоставить, также можем
 предосавить ваш SRPMS вашего апача, в который патч уже добавлен :

 == cut : описание баги ==
Проведенные работы позволили выявить две ошибки в используемых
программных средствах: apache 1.3.20 & MSIE 5.00.2920.0000.

1. Ошибка в mod_proxy apache 1.3.20

Условия проявления:
	
	- Наличие в кеше mod_proxy ресурса с истекшим временем кеширования,
	определенным эвристически (т.е. без использования заголовка Expire).

	- Обращение со стороны клиента к прокси.

Причина ошибки:

	- Прокси выполняет ревалидирование кешированного ресурса с сервером
	посредством запроса с условием If-Modified-Since <Last-Modified>.

	- При получении со стороны сервера ответа со статусом "Not Modified"
	из-за ошибки в модуле mod_proxy, прокси возвращает кешированный
	ресурс с заголовками, полученными от сервера в процессе валидации
	ресурса и не возвращает заголовки, кешированные при более раннем
	обращении (что нарушает требования RFC2068 & RFC1945).

	- Среди этих заголовков появляется заголовок Content-Length со
	значением "0". В соответствии с требованиями RFC2068, UA (MSIE)
	прекращает загрузку тела содержимого по достижении указанной длины,
	но не сообщает об этом пользователю, чем в свою очередь также
	нарушает требования RFC2068. UA HTTP/1.0 (Netscape) докачивает тело
	содержимого и, как правило корректно, отображает его (за
	исключением случаев когда опознание типа содержимого сбивается из-за
	отсутствия заголовка Content-type).

	- При повторной загрузке через краткий промежуток времени, прокси
	возвращает только что валидированное содержимое без повторного
	валидирования, благодаря чему оно возвращается с корректными
	заголовками.

Проявление ошибки:

	Недокаченные или наполовину докаченные картинки в MSIE,
	загружающиеся корректно при немедленном повторном обращении к
	ресурсу.

Методы противодействия:

	- (Рекомендуемый и проверенный) Применить прилагаемый патч к
	mod_proxy (apache v.1.3.20)

	ЗАМЕЧАНИЕ: Предлагемый патч может нарушить нормальную работу
	mod_proxy с HTTP/0.9 серверами (я не то что бы знаю, я просто не
	проверял).

К письму также прилагается патч для mod_proxy (proxy_patch.diff) и тестовая
тулза на питоне (proxy_test.py). Рекомендации по использованию тестовой
тулзы предоставляются отдельно по запросу: IMHO, исходного кода более чем
достаточно, но вот испольованная нами командная строка теста:

proxy_test.py -vvv -s 600  fnf.bpn.iig a.lst

Где a.lst (список ZImage-морфных ресурсов сервера) - может быть получен
посредством manage_findForm.  При корректном завершении теста результаты
должны быть такими:

Тестирование окончено 
---------------------- 
Ошибок HTTP при инициализации кеша 4 
Ошибок при первой загрузке (тело,заголовки) (0,0) 
Ошибок при второй загрузке (тело,заголовки) (0,0) 
Немодифицированных ресурсов при первой загрузке 0 
Немодифицированных ресурсов при второй загрузке 0 
Ошибок HTTP при валидировании кеша 0
----------------------

При некорректном (при обнаружении ошибки) результаты
могут быть, например, такими:
Тестирование окончено
---------------------- 
Ошибок HTTP при инициализации кеша 4 
Ошибок при первой загрузке (тело,заголовки) (0,15) 
Ошибок при второй загрузке (тело,заголовки) (0,14) 
Немодифицированных ресурсов при первой загрузке 0
Немодифицированных ресурсов при второй загрузке 0 
Ошибок HTTP при валидировании кеша 0
----------------------

ЗАМЕЧАНИЕ: 15 & 14 ошибок - это неверно отданные заголовки.

Настройки апача 1.3.20:

На тестовом сервере использовалась модульная версия (т.е. mod_proxy &
mod_rewrite были собраны как модули) со следующими параметрами кеширования:

ProxyRequests On
CacheRoot "/hosting/pokolenie_ok/cache"
CacheSize 1048576
CacheGcInterval 1
CacheMaxExpire 0.1
CacheDefaultExpire 0.05

Сразу замечу, что такие параметры являются суб-оптимальными и не должны
использоваться на реальном сервере.
 == cut ==
 == cut : patch ==
see attach
 == cut ==
 == cut : скрипт тестирующий наличие баги ==
see attach
 == cut ==

 =========
 Perl
 =========
 Perl, тоже падал.
 
 Мы используем объектные возможности Perl в конструкторе объекта открываем
 DBM (dbmopen) и сохраняем ссылку на хеш в атрибуте объекта. В деструкторе
 мы честно закрываем базу (dbmclose), в этот момент Perl падает.  Если базу
 явно не закрывать, возникает вопрос о том, закроет ли Perl ее коректно, что
 очень важно для CGI скриптов.
 
 Пример скрипта:

== cut ==
#!/usr/bin/perl
package Authen;  

sub new {
        my $proto = shift;
        my $class = ref($proto) || $proto;
        my $self  = {}; 
        bless($self,$class);
	my %LT;
	dbmopen(%LT, "test_dbmopen", 0666) || die "Can't open test_dbm.db because of 
$!\n";
	$self->{'LT'} = \%LT;
        return $self;
}

sub DESTROY {
        my $self = shift;
	dbmclose(%{$self->{'LT'}});
	return 1;
}

package main;

$test = Authen->new();
== cut ==

Мы пересобирали Perl с поддержкой разных DB (DB3, DB2, GDB), ошибка
проявлялась везде..


 =========
 Sendmail
 =========

 Здесь тоже были свои проблемы. Скорее настройки, чем баги, но на самом деле
 хотелось бы узнать: кто-то его поддерживает? Нет-нет, мы не пытаемся
 предложить нашу кандидатуру, но хотелось бы посоветоваться. С настройкой
 авторизации у меня были серьезные проблемы, хотя, кажется, я их
 благополучно решил, а вот starttls в конце-концов пришлось отложить до
 появления большего количества свободного времени. Опять-таки, ваши сэмплы в
 этом отношении не были работоспособны, в основном я пользоавался методичкой
 с sendmail.org.

 =========
 Остальное
 =========

 Остальное - это уже скорее настройки под конкретное применение, и
 представляют интерес скорее полемический, чем практический, а потому и
 высказываются только в плане общей полемики:
 
 1. Представляется разумным, имея на борту дистрибутива две базы данных,
 собирать все пакеты с их поддержкой, если таковая есть. Как пример приведем
 ProFTPD... Зависимость в этом случае, видимо, лучше попробовать подавить.

 2. Представляется разумным, поставлять апач уже настроенный под виртуальный
 хостинг и с несколько облагороженными ErrorMessage. Есть несколько
 полуразумных вариантов такой настройки, есть и специальный модуль, и
 настроить апач самим, конечно, не трудно, но зачем всем каждый раз
 изобретать велосипед?  Не самый лучший вариант есть у нас, но, я думаю,
 самостоятельной ценности он не представляет, а если такая работа будет
 проводится - мы бы приняли участие, по крайней мере, в обсуждении.

 3. Когда-то давным давно, лет, может быть, даже и 6ть назад, достаный
 большим количеством файлов ~/.* , я попросил администратора того дуникса
 дописать в /etc/passwd каталог .home после домашнего, а в .bashrc добавил
 строчку

	function cd () { if [ "$1" ]; then command cd "$1"; else command cd ~/..; fi 
}

 и перестал все время видеть ~/.*.

 С тех пор это вошло в привычку. Позже, ситуацию сильно усугубило ~/.kde,
 ~/public_html, gnome и ряд других аналогичных иерархий: похоже, мы
 благополучно движемся к тому, что бы понятие "домашнего каталога"
 разделить на два: каталог с профайлами и рабочий каталог по умолчанию. Свой
 шаг в этом направлении я уже рассказал: он очень короткий, хотя многие
 находят его удобным, а не известно ли вам каких-то более серъезных шагов в
 этом направлении?  Правда, hier благополучно заминает вопрос планировки
 домашних каталогов....
 
 4. Язык Ruby. Мы обратили внимание на этот пакет в дистрибъюшене, хотелось
 бы узнать, кем и как он поддерживается. Мы им не пользуемся, но много
 читали в прессе о проектах на его основе, часть из них представляет для нас
 интерес, отсюда и вопрос.
-----------------------------------------------------------------------




-- 
Андрей Орлов
ведущий инженер IIG
101028, Москва, Хохловский пер.,
10, стр. 6
тел.: +7 (095) 9174920
тел/факс: +7 (095) 2582524
www.iig.ru, aorlov@iig.ru



[-- Attachment #2.1.2: Патч для модпрокси --]
[-- Type: text/x-c, Size: 354 bytes --]

 diff -urN proxy/proxy_http.c proxy.new/proxy_http.c
--- proxy/proxy_http.c	Fri Feb  9 15:40:27 2001
+++ proxy.new/proxy_http.c	Mon Jun 18 17:58:44 2001
@@ -449,9 +449,10 @@
 
 /* no headers */
 	resp_hdrs = ap_make_table(p, 20);
+/* Исправлено, Андрей Орлов */
+        c->hdrs = resp_hdrs;
     }
 
-    c->hdrs = resp_hdrs;
 
     ap_kill_timeout(r);

[-- Attachment #2.1.3: Тест для модпрокси --]
[-- Type: application/x-python, Size: 6781 bytes --]

#! /usr/bin/python
"""
%s [<Опции>] <хост> <файл со списком ресурсов> 

Опции:
	-h	Этот текст
	-v	Сообщения
	-i	Тестирование на неполных запросах
	-m	Тестирование с повторным условным запросом
	-u	Использовать HTTP/1.1
	-s	Время ожидания между первой и второй стадией теста
	--ign	Игнорировать заголовок
	--all	Все заголвки
"""

import socket
import posix
import re
import string
import rand
import sys
import getopt
import md5
import time

verbose_level		= 0
is_incomplete		= 0
sleep			= 60
ignored			= ['Date']
http_version		= 'HTTP/1.0'
(err_body1,err_hdr1)	= (0,0)
(err_body2,err_hdr2)	= (0,0)
http_error1		= 0
http_error2		= 0
notmodify1		= 0
notmodify2		= 0
is_cond			= 0
HttpError		= 'Ошибка HTTP-протокола'
NotModified		= 'Ресурс не был модифицирован с момента предыдущей загрузки'

def verbose(msg,level=1) :
	""" Вывод трассировочного сообщения """
	if level <= verbose_level :
		sys.stdout.write(msg + "\n")
		sys.stdout.flush()	

def error(msg,err=0) :
	""" Вывод сообщения об ошибке и выход """
	if err :
		sys.stdout.write("Ошибка: %s\n" % msg)
	else :
		sys.stdout.write("%s\n** Операция завершена **\n" % msg)

	sys.stdout.flush()
	sys.exit(err)

hdrs_reg = re.compile('^([^:]*):')
def http_load(item,last_modified=None) :
	item = string.strip(item)
	verbose('\nТянем %s' % item, 2)
	hdrs = {}
	sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
	sock.connect('okf.bpn.iig',80)
	f = sock.makefile('r+',1)
	f.write('GET http://%s/%s %s\n' % (args[0],string.strip(item),http_version))
#	print 'GET http://%s/%s %s\n' % (args[0],string.strip(item),http_version)
	if last_modified :
		f.write('If-Modified-Since: %s\n' % last_modified)
#		print 'If-Modified-Since: %s\n' % last_modified
	f.write('\n')
	
	size = None
	s=f.readline()
#	print s
	try :
		http_res = int(string.split(s)[1])
	except :
		raise HttpError

	if http_res != 200 :
		if http_res == 304 :
			verbose('Ответ: %s NotModified' % item,1)
			raise	NotModified
		else :
			verbose('Ошибка %s %u' % (item,http_res),1)
			raise	HttpError
		
	while len(s) : # Катя, отвали
		if s == '\r\n' :
			if size :
				verbose('Начинаем загрузку URL длиной %u' % size,4)
				if is_incomplete :
					size_load = int(size * float(rand.rand())/(2**15-1))
				else :
					size_load = size

				body = f.read(size_load)
				verbose('Загрузили %u из %u (%u)' % (size_load,size,len(body)),4)
				break
			else :
				verbose('Длина не указана, качаем все что есть',4)
				body = ""
				while 1 :
					s = f.read(512)
					if not s :
						break
					body = body + s
				break
					
		else :
			m = hdrs_reg.match(s)
			if m :
				(b,e) = m.regs[1]
				h = s[b:e]
				s = string.strip(s)
				hdrs[h] = s
				if h == 'Content-Length' :
					size = int(string.split(s)[1])
				verbose('Найден заголовок %s (%s)' % (h,s),5)
		s=f.readline()

	sock.close()
	return (string.join(map(lambda x : hex(ord(x))[2:4],md5.md5(body).digest()),''),hdrs)

def header_cmp(h_old,h_new) :
	res = 0
	for item in h_old.keys() :
		if item not in ignored :
			try :
				if h_old[item] != h_new[item] :
					res = res + 1
					verbose('Не совпали заголовки %s\n -- %s\n -- %s' % (item,h_old[item],h_new[item]),3)
			except KeyError :
				res = res + 1
				verbose('Во вновь отданных данных нет заголовка %s' % h_old[item],3)

	for item in h_new.keys() :
		if item not in ignored :
			if not h_old.has_key(item) :
				res = res + 1
				verbose('Во вновь отданных данных есть лишний заголовок %s' % h_new[item],3)
			
	return res

opts,args = getopt.getopt(sys.argv[1:],"huvims:",['ign=','all'])
for opt,val in opts :
	if opt == '-h' :
		print __doc__ % sys.argv[0]
		error('При выводе помощи никакие операции не выполняются')
	elif opt == '-v' :
		verbose_level = verbose_level + 1
	elif opt == '-i' :
		verbose('Выполняем тестирование на неполных запросах',1)
		is_incomplete = 1
	elif opt == '-m' :
		verbose('Выполняем тестирование на условных запросах',1)
		is_cond	= 1
	elif opt == '-u' :
		verbose('Будем использовать HTTP/1.1',1)
		http_version = 'HTTP/1.1'
	elif opt == '-s' :
		sleep = string.atoi(val)
		verbose('Пауза %u секунд' % sleep,1)
	elif opt == '--all' :
		ignored = []
		verbose('Проверяем все заголовки',1)
	elif opt == '--ign' :
		ignored.append(val)
		verbose('Игнорируем заголовок %s' % val,1)


if len(args) != 2 :	error('Неверная командная строка')

verbose('Начали',0)
verbose('Набиваем кеширующий прокси кешированными ресурсами',1)
urlmd5 = {}

for item in open(args[1]).readlines() :
	try :
		(body,hdrs) = http_load(item)
		if is_cond :
			try :
				urlmd5[item] = (body,hdrs,string.strip(hdrs['Last-Modified'][len('Last-Modified:'):]))
			except KeyError :
				verbose('Нет заголовка Last-Modified - тестирование не будет полным',2)
				urlmd5[item] = (body,hdrs)
		else :
			urlmd5[item] = (body,hdrs)
	except (HttpError,NotModified) :
		verbose('Ошибка при обращении к %s' % item,1)
		http_error1 = http_error1 + 1


verbose('Пауза %u секунд' % sleep,1)
time.sleep(sleep)
verbose('Делаем повторный запрос из прокси',1)
for item in urlmd5.keys() :
#	try :
		if is_cond and len(urlmd5[item]) == 3 :
			last_modify = urlmd5[item][2]
		else :
			last_modify = None

		try :
			(body,hdrs) = http_load(item,last_modify)
			if body != urlmd5[item][0] :
				err_body1 = err_body1 + 1
				verbose('Ответ на запрос не совпал при первом обращении к прокси %s' % item,2)

			if header_cmp(urlmd5[item][1],hdrs) :
				err_hdr1 = err_hdr1 + 1
				verbose('Заголовки ответа на запрос не совпали при первом обращении к прокси %s' % item,2)

			urlmd5[item] = (body,hdrs)

		except NotModified :
			notmodify1 = notmodify1 + 1
			verbose('Ресурс %s не был модифицирован' % item, 2)


		try :
			(body,hdrs) = http_load(item,last_modify)
			if body != urlmd5[item][0] :
				err_body2 = err_body2 + 1
				verbose('Ответ на запрос не совпал при втором обращении к прокси %s' % item,2)

			if header_cmp(urlmd5[item][1],hdrs) :
				err_hdr2 = err_hdr2 + 1
				verbose('Заголовки ответа на запрос не совпали при втором обращении к прокси %s' % item,2)

		except NotModified :
			notmodify2 = notmodify2 + 1
			verbose('Ресурс %s не был модифицирован' % item, 2)

#	except HttpError :
#		verbose('Ошибка при обращении к %s' % item,1)
#		http_error2 = http_error2 + 1

verbose('Тестирование окончено',0)
verbose('----------------------',0)
verbose('Ошибок HTTP при инициализации кеша %u' % http_error1)
verbose('Ошибок при первой загрузке (тело,заголовки) (%u,%u)' % (err_body1,err_hdr1),0)
verbose('Ошибок при второй загрузке (тело,заголовки) (%u,%u)' % (err_body2,err_hdr2),0)
verbose('Немодифицированных ресурсов при первой загрузке %u' % notmodify1, 0)
verbose('Немодифицированных ресурсов при второй загрузке %u' % notmodify2, 0)
verbose('Ошибок HTTP при валидировании кеша %u' % http_error2)
verbose('----------------------',0)

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] [Fwd: Рассказ об установке ALTLinux]
  2002-01-04 19:57 [devel] [Fwd: Рассказ об установке ALTLinux] Aleksey Novodvorsky
@ 2002-01-04 20:20 ` Alexander Bokovoy
  2002-01-05 11:05   ` [devel] bash-completion Michael Shigorin
  2002-01-04 22:55 ` [devel] Re: [Fwd: Рассказ об установке ALTLinux] Mikhail Zabaluev
  1 sibling, 1 reply; 7+ messages in thread
From: Alexander Bokovoy @ 2002-01-04 20:20 UTC (permalink / raw)
  To: devel, cray

On Fri, Jan 04, 2002 at 10:57:39PM +0300, Aleksey Novodvorsky wrote:
> -----------------------------------------------------------------------
> $Id: ОтчетОбУстановкеALT.txt,v 1.8 2001/12/21 02:03:06 cray Exp $'
> -----------------------------------------------------------------------
[skip]

>  -- MySQL потребовал установки PerlDB в обязательном порядка. Хотя обратная
>     ситуация была бы не лучше. Разумно ли существование такой зависимости:
>     MySQL не всегда используют вместе с Perl, может быть стоит ее подавить?
Perl-DBI требуют системные утилиты от MySQL-server:
/usr/bin/mysql_convert_table_format
/usr/bin/mysql_setpermission
/usr/bin/mysqlaccess
/usr/bin/mysqlhotcopy

Их можно было бы вынести в отдельный пакет (MySQL-server-utils), а
mysqlhotcopy вообще перенести в клиентскую часть, но там (на клиенте) возникнет
подобная же проблема. Есть предложения?


>  -- Никому в голову не придет ставить линух без пакета filesystem, но у нас
>     такое получилось: зависимости это допустили. Соотв., последующие пакеты,
>     используеющие каталог, например, /var/tmp, отказались ставится без
>     видимых причин: т.к. такой зависимости в них не было. Если нам не изменяет
>     память, это были все пакеты perl*;
Насколько я понимаю, речь не шла об установке последней версии, на которой
будет базироваться выходящий в январе ALT Linux Master? Ибо там filesystem
требуется для basesystem.

>  Ряд пакетов для перла нам пришлось добавить. Честно говоря, меня удивило,
>  что они не вошли в ваш дистрибутив, т.к. пакеты, вообще-то, весьма часто
>  используемые: нам приходилось по их поводу неоднократно вступать в, хм,
>  полемику с различными службами техподдержки провайдеров, и последние хотя и
>  не высказывали любви, но демонстрировали хорошее знакомство с ними.  Вот
>  список этих пакетов:
> 
>    perl-HTML-Template-2.4-iig1.src.rpm  - это знаменитый HTML::Template;
> 
>    perl-MIME-Base64-2.12-iig1.src.rpm - Кодировщик/декодировщик Base64;
> 
>    perl-MIME-Lite-2.117-iig1.src.rpm - Посылалка писем;     
> 
>    perl-MIME-Types-0.06-iig1.src.rpm - Определение MIME-типа по расширению;
> 
>  Мы собрали по вашим примерам для них rpm'ы, и, возможно это неплохо
>  получилось. Хотя мы вряд ли возьмемся их поддерживать, т.к. с перлом
>  работаем все меньше и меньше, но то что собрали можем передать вам:
>  выложить на ftp или закатать на болванку - как вам будет удобнее.
С этим проблем не будет, дополнительные модули для perl поддерживает
Григорий Милев (week@altlinux.ru), он без проблем возьмет их на себя.

>  Пришлось добавить группу пакетов для питона & Zope, про Zope 
>  подробно скажу ниже, про питон вот:
> 
>     MySQL-python-0.9.0-1.i686.rpm - сбсно, коннектор к MySQL. Питон для нас
> 	основной язык разработки, да и среда, с нашей точки зрения, должна
> 	быть целостной, навено разумно включить пакет в дистрибутив.  Наша
> 	поддержка возможна, если она актуальна. Кстати, коннектор к
> 	PostgreSQL, кажется у вас есть.
Включить в дистрибутив можно, проблемы не будет. 2LDV: как будет с
поддержкой?

>  Либо мы не нашли... Либо вы реально решили ничего такого не добавлять... 
>  Но ни одной хоть скольнить серьезной тулзы посвященной IP аудиту в
>  дистриутиве нет, за исключением каких-то малополезных функциональных
>  возможностей в одном из файерволов.
> 
>  Что забавно, такие утилиты существуют. Часть из них мы перетащили под 
>  Alt:
> 
>   ipaudit-0.92-0.src.rpm - счетчик & классификатор пролетающих мимо пакетов.
> 	Эксплуатация показала, что это весьиа качестенная реализация.
> 
>   ntop-1.3.2-5alt1.src.rpm - это из редхетовского дистрибъюшена. Красиво,
> 	реалтаймово, но бесполезно и глючно: подробных логов не ведет, часто
> 	падает, в общем, при разговорах с начальством штука бесполезная.
Скорее, руки просто не дошли.

>  У меня возник ряд вопросов относительно конфигурации пакетов по умолчанию:
> 
>  bind - удивил сконфигуренный по умолчанию сhaosnet. Чесгря, я думал, что это
> 	дела давно минувших дней, времен Lisp-машин и институтских сетей.
> 
>  чрутизация - не то, что бы я возражал.... Но были ли какие-то реальные
> 	эксплойты на mysql & bind, и стоит ли вообще-то овчинка, хм,
> 	выделки? Хотя удивило то, что чрутизация заняла столь мало места.
Благодаря минимизации затрат на реализацию более строгий вариант имеет
право на жизнь. От потенциальных эксплоитов мало кто защищен.


>  С Zope была чумовая история: несмотря на ваши заверения, у нас есть
>  серъезные опасения, что ситуация не изменилась, т.к. с Zope было два уровня
>  ошибок: скорее всего вы заметили первый, но если вы не эксплуатируете Z, то
>  вряд ли заметили второй.
С Zope серьезные проблемы именно по причине его неиспользуемости членами
команды. Если вы готовы проконсультировать или обозначить, что именно нужно, 
то никаких проблем с исправлением имеющихся ошибок не будет. Проблема
только с периодической поддержкой пакетов и обновлением.

>  =========
>  Apache
>  =========
> 
>  Я уже говорил что в апаче бага? В модуле mod_proxy. Честно говоря, у меня
>  так и не дошли руки поднять стенд и воссоздать тестовую ситуацию на вашем
>  русском апаче, но где-то дня через три его работы я увидел до боли знакомые
>  симптомы и Павел пересобрал апач с моим патчем, симптомы после этого прошли,
>  а к этому письму я прилагаю патч, описание баги, обоснование патча и
>  тестовый скрипт. Теперь к апачу претензий, вроде, нет. Хотя баги в этом
>  модуле, безусловно, еще есть - я не шучу, я вижу их проявления, просто это
>  не критично.
> 
>  Далее следуют подробности баги, взятые из нашей переписки с заказчиками,
>  если нужны дополнительные подробности, мы готовы их предоставить, также можем
>  предосавить ваш SRPMS вашего апача, в который патч уже добавлен :
Спасибо за обстоятельный отчет и исправление ошибки (каким бы простым оно
не было). Новая версия будет в Sisyphus на следующей неделе, там будут еще
исправления в httpd-perl.

>  Остальное - это уже скорее настройки под конкретное применение, и
>  представляют интерес скорее полемический, чем практический, а потому и
>  высказываются только в плане общей полемики:
>  
>  1. Представляется разумным, имея на борту дистрибутива две базы данных,
>  собирать все пакеты с их поддержкой, если таковая есть. Как пример приведем
>  ProFTPD... Зависимость в этом случае, видимо, лучше попробовать подавить.
Если приложение имеет поддержку модульности, то так и делать. Если нет --
придется делать виртуальный пакет, который будут предоставлять два
конфликтующих между собой пакета с поддержкой разных баз.

>  2. Представляется разумным, поставлять апач уже настроенный под виртуальный
>  хостинг и с несколько облагороженными ErrorMessage. Есть несколько
>  полуразумных вариантов такой настройки, есть и специальный модуль, и
>  настроить апач самим, конечно, не трудно, но зачем всем каждый раз
>  изобретать велосипед?  Не самый лучший вариант есть у нас, но, я думаю,
>  самостоятельной ценности он не представляет, а если такая работа будет
>  проводится - мы бы приняли участие, по крайней мере, в обсуждении.
Давайте вспомним об этом в феврале, раньше не будет времени.

>  3. Когда-то давным давно, лет, может быть, даже и 6ть назад, достаный
>  большим количеством файлов ~/.* , я попросил администратора того дуникса
>  дописать в /etc/passwd каталог .home после домашнего, а в .bashrc добавил
>  строчку
> 
> 	function cd () { if [ "$1" ]; then command cd "$1"; else command cd ~/..; fi 
> }
> 
>  и перестал все время видеть ~/.*.
> 
>  С тех пор это вошло в привычку. Позже, ситуацию сильно усугубило ~/.kde,
>  ~/public_html, gnome и ряд других аналогичных иерархий: похоже, мы
>  благополучно движемся к тому, что бы понятие "домашнего каталога"
>  разделить на два: каталог с профайлами и рабочий каталог по умолчанию. Свой
>  шаг в этом направлении я уже рассказал: он очень короткий, хотя многие
>  находят его удобным, а не известно ли вам каких-то более серъезных шагов в
>  этом направлении?  Правда, hier благополучно заминает вопрос планировки
>  домашних каталогов....
Имеет смысл подумать об этом в свете наших etcskel-*. Как и о добавлении,
скажем, bash-completion от Яна Макдональда (http://www.caliban.org/bash/).

>  4. Язык Ruby. Мы обратили внимание на этот пакет в дистрибъюшене, хотелось
>  бы узнать, кем и как он поддерживается. Мы им не пользуемся, но много
>  читали в прессе о проектах на его основе, часть из них представляет для нас
>  интерес, отсюда и вопрос.
Поддержка его сейчас перешла ко мне. Планирую поддерживать его и в
дальнейшем, поскольку он требуется для следующей версии нескольких
проектов, в которых я участвую. Пакет собирается в тесном сотрудничестве с
командой разработчиков Ruby.



-- 
/ Alexander Bokovoy
$ cat /proc/identity >~/.signature
  `Senior software developer and analyst for SaM-Solutions Ltd.`
---
Nov 21 20:58:58 alconost kernel: VFS: Busy inodes after unmount. 
		    Self-destruct in 5 seconds.  Have a nice day...



^ permalink raw reply	[flat|nested] 7+ messages in thread

* [devel] Re: [Fwd: Рассказ об установке ALTLinux]
  2002-01-04 19:57 [devel] [Fwd: Рассказ об установке ALTLinux] Aleksey Novodvorsky
  2002-01-04 20:20 ` Alexander Bokovoy
@ 2002-01-04 22:55 ` Mikhail Zabaluev
  1 sibling, 0 replies; 7+ messages in thread
From: Mikhail Zabaluev @ 2002-01-04 22:55 UTC (permalink / raw)
  To: devel; +Cc: cray

[-- Attachment #1: Type: text/plain, Size: 1640 bytes --]

Hello Aleksey,

On Fri, Jan 04, 2002 at 10:57:39PM +0300, Aleksey Novodvorsky wrote:
>
> Просьба содержательные комментарии отправлять автору нижеследующейго
> письма,  а не только сюда.
> 
> Rgrds, Алексей

> Date: Fri, 4 Jan 2002 23:40:03 +0300
> From: Andrey Orlov <cray@iig.ru>
> To: aen@altlinux.ru
> Subject: Рассказ об установке ALTLinux

...

>  =========
>  Perl
>  =========
>  Perl, тоже падал.
>  
>  Мы используем объектные возможности Perl в конструкторе объекта открываем
>  DBM (dbmopen) и сохраняем ссылку на хеш в атрибуте объекта. В деструкторе
>  мы честно закрываем базу (dbmclose), в этот момент Perl падает.  Если базу
>  явно не закрывать, возникает вопрос о том, закроет ли Perl ее коректно, что
>  очень важно для CGI скриптов.
>  
>  Пример скрипта:
> 
> == cut ==
> #!/usr/bin/perl
> package Authen;  
> 
> sub new {
>         my $proto = shift;
>         my $class = ref($proto) || $proto;
>         my $self  = {}; 
>         bless($self,$class);
> 	my %LT;
> 	dbmopen(%LT, "test_dbmopen", 0666) || die "Can't open test_dbm.db because of 
> $!\n";
> 	$self->{'LT'} = \%LT;
>         return $self;
> }
> 
> sub DESTROY {
>         my $self = shift;
> 	dbmclose(%{$self->{'LT'}});
> 	return 1;
> }
> 
> package main;
> 
> $test = Authen->new();
> == cut ==
> 
> Мы пересобирали Perl с поддержкой разных DB (DB3, DB2, GDB), ошибка
> проявлялась везде..

confirmed, отправил perlbug, ждем-с...

-- 
Stay tuned,
  MhZ                                     JID: mookid@jabber.org
___________
 "I've finally learned what `upward compatible' means.	It means we
  get to keep all our old mistakes."
 -- Dennie van Tassel

[-- Attachment #2: Type: application/pgp-signature, Size: 232 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [devel] bash-completion
  2002-01-04 20:20 ` Alexander Bokovoy
@ 2002-01-05 11:05   ` Michael Shigorin
  2002-01-05 13:06     ` Alexander Bokovoy
  0 siblings, 1 reply; 7+ messages in thread
From: Michael Shigorin @ 2002-01-05 11:05 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 984 bytes --]

On Fri, Jan 04, 2002 at 10:20:36PM +0200, Alexander Bokovoy wrote:
> Имеет смысл подумать об этом в свете наших etcskel-*. Как и о добавлении,
> скажем, bash-completion от Яна Макдональда (http://www.caliban.org/bash/).
Он довольно тяжелый на некоторых операциях; местами есть
неприятное поведение.  Пример первого -- man <tab><tab> приводит
к шуршанию быстрым диском на быстром процессоре в течении
нескольких секунд (fs == reiserfs) (и не подозревающего "подвоха"
пользователя pentium/celeron скорее всего удручит); второе
проявлялось пару раз в тривиальных случаях, где bash-2.05-alt4
без bash_completion работал замечательно, а с ним (одним из
последних, где-то двухнедельной давности) игнорировал tab.

Не ради наезда, но ради "давайте еще раз потестим"...  Так-то
мысль хорошая (особенно в качестве за- и прокомментированного
[ -f ~/.bash_completion ] && . ~/.bash_completion ;-)

-- 
 ---- WBR, Michael Shigorin <mike@altlinux.ru>
  ------ http://visa.chem.univ.kiev.ua/~mike/

[-- Attachment #2: Type: application/pgp-signature, Size: 232 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] bash-completion
  2002-01-05 11:05   ` [devel] bash-completion Michael Shigorin
@ 2002-01-05 13:06     ` Alexander Bokovoy
  2002-01-05 15:06       ` Michael Shigorin
  0 siblings, 1 reply; 7+ messages in thread
From: Alexander Bokovoy @ 2002-01-05 13:06 UTC (permalink / raw)
  To: devel

On Sat, Jan 05, 2002 at 01:05:43PM +0200, Michael Shigorin wrote:
> On Fri, Jan 04, 2002 at 10:20:36PM +0200, Alexander Bokovoy wrote:
> > Имеет смысл подумать об этом в свете наших etcskel-*. Как и о добавлении,
> > скажем, bash-completion от Яна Макдональда (http://www.caliban.org/bash/).
> Он довольно тяжелый на некоторых операциях; местами есть
> неприятное поведение.  Пример первого -- man <tab><tab> приводит
> к шуршанию быстрым диском на быстром процессоре в течении
> нескольких секунд (fs == reiserfs) (и не подозревающего "подвоха"
> пользователя pentium/celeron скорее всего удручит); второе
> проявлялось пару раз в тривиальных случаях, где bash-2.05-alt4
> без bash_completion работал замечательно, а с ним (одним из
> последних, где-то двухнедельной давности) игнорировал tab.
> 
> Не ради наезда, но ради "давайте еще раз потестим"...  Так-то
> мысль хорошая (особенно в качестве за- и прокомментированного
> [ -f ~/.bash_completion ] && . ~/.bash_completion ;-)
Его можно и нужно подправить под нашу реальность. Например, почему у нас
/var/log/rpmpkgs доступен по чтению только root? Дополнения для rpm
работают значительно быстрее, если этот файл доступен по чтению пользователю.
Что касается долгоиграющих операций вроде man, то их просто можно выкинуть
или вынести в дополнительный блок --- т.е. сделать completions не в
/etc/bash_completion как сейчас в этом пакете, а в
/etc/bash_completion.d/* и доставлять туда отдельными кусками. Кому-то
потребуется автодополнение для man, кому-то -- для
ping/traceroute/ssh/scp и так далее. А наименее ресурсоемкие поставить по
умолчанию.


-- 
/ Alexander Bokovoy
$ cat /proc/identity >~/.signature
  `Senior software developer and analyst for SaM-Solutions Ltd.`
---
Nov 21 20:58:58 alconost kernel: VFS: Busy inodes after unmount. 
		    Self-destruct in 5 seconds.  Have a nice day...



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] bash-completion
  2002-01-05 13:06     ` Alexander Bokovoy
@ 2002-01-05 15:06       ` Michael Shigorin
  2002-01-05 15:40         ` Alexander Bokovoy
  0 siblings, 1 reply; 7+ messages in thread
From: Michael Shigorin @ 2002-01-05 15:06 UTC (permalink / raw)
  To: devel

On Sat, Jan 05, 2002 at 03:06:20PM +0200, Alexander Bokovoy wrote:
> Что касается долгоиграющих операций вроде man, то их просто можно выкинуть
> или вынести в дополнительный блок --- т.е. сделать completions не в
> /etc/bash_completion как сейчас в этом пакете, а в
> /etc/bash_completion.d/* и доставлять туда отдельными кусками. Кому-то
Двумя руками за. 

> потребуется автодополнение для man, кому-то -- для
> ping/traceroute/ssh/scp и так далее. А наименее ресурсоемкие поставить по
> умолчанию.
Так что, приниматься за забеги по последнему их выпуску?  Я в
него заглянул по-быстрому, волосы дыбом все же чуточку встали :)
Экий cf.

-- 
 ---- WBR, Michael Shigorin <mike@altlinux.ru>
  ------ http://visa.chem.univ.kiev.ua/~mike/



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] bash-completion
  2002-01-05 15:06       ` Michael Shigorin
@ 2002-01-05 15:40         ` Alexander Bokovoy
  0 siblings, 0 replies; 7+ messages in thread
From: Alexander Bokovoy @ 2002-01-05 15:40 UTC (permalink / raw)
  To: devel

On Sat, Jan 05, 2002 at 05:06:01PM +0200, Michael Shigorin wrote:
> On Sat, Jan 05, 2002 at 03:06:20PM +0200, Alexander Bokovoy wrote:
> > Что касается долгоиграющих операций вроде man, то их просто можно выкинуть
> > или вынести в дополнительный блок --- т.е. сделать completions не в
> > /etc/bash_completion как сейчас в этом пакете, а в
> > /etc/bash_completion.d/* и доставлять туда отдельными кусками. Кому-то
> Двумя руками за. 
> 
> > потребуется автодополнение для man, кому-то -- для
> > ping/traceroute/ssh/scp и так далее. А наименее ресурсоемкие поставить по
> > умолчанию.
> Так что, приниматься за забеги по последнему их выпуску?  Я в
> него заглянул по-быстрому, волосы дыбом все же чуточку встали :)
> Экий cf.
Если есть время, Михаил, займитесь, пожалуйста.
-- 
/ Alexander Bokovoy
$ cat /proc/identity >~/.signature
  `Senior software developer and analyst for SaM-Solutions Ltd.`
---
Nov 21 20:58:58 alconost kernel: VFS: Busy inodes after unmount. 
		    Self-destruct in 5 seconds.  Have a nice day...



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2002-01-05 15:40 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-01-04 19:57 [devel] [Fwd: Рассказ об установке ALTLinux] Aleksey Novodvorsky
2002-01-04 20:20 ` Alexander Bokovoy
2002-01-05 11:05   ` [devel] bash-completion Michael Shigorin
2002-01-05 13:06     ` Alexander Bokovoy
2002-01-05 15:06       ` Michael Shigorin
2002-01-05 15:40         ` Alexander Bokovoy
2002-01-04 22:55 ` [devel] Re: [Fwd: Рассказ об установке ALTLinux] Mikhail Zabaluev

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git