[devel] I: sonames versioned with symbols

Alexey Tourbin at на altlinux.ru
Пн Май 10 00:58:09 UTC 2010


On Mon, May 10, 2010 at 04:08:49AM +0400, Денис Смирнов wrote:
> On Mon, May 10, 2010 at 03:36:11AM +0400, Алексей Турбин wrote:
> 
> AT> Чудес не бывает, информация должна быть каким-то образом представлена.
> AT> Вопрос только в том какая цена будет казаться нам приемлемой.  Если
> AT> придумать изощренный метод хеширования, то нужно, грубо говоря, примерно
> AT> 20 битов на символ полной энтропии (то есть примерно 3.3 буквы в
> AT> base64).  Есть теоретическая оценка что с надежностью 0.1% нужно 12
> AT> битов энтропии.  Короче это сложная тема, но пока можно считать, что
> AT> в "нормальной" (а не модельной, как сейчас) реализации потребуется
> AT> примерно 3 буквы на символ.
> AT> Конечно, символов бывает много, и версия может получиться очень длинной.
> AT> Так что даже неприлично показать. :)
> 
> Любопытно. В случае реальной коллизии самое страшное что случится --
> поставиться пакет, который поставиться не должен. Однако сейчас (при
> отсутствии такой проверки) он и так поставиться. Значит ничего не
> сломается, а дополнительная защита появится. Я правильно понимаю?
> 
> Тогда мне эта идея очень нравится.

Модельная реализация дает полную гарантию, как страховой полис.
Гарантия состоит в том, что символы будут разрешаться не хуже,
чем при сборке пакета (на уровне ld.so).

Можно сильно сэкономить, если ввести вероятностное хеширование
с контролируемой односторонней ошибкой.  Тогда да, будет
"дополнительная защита" (а не полная гарантия), которая
однако же срабатывает "почти всегда".

> AT> Понимаешь, все эти проблемы тормозов - мои в конечном счете.
> AT> А я не предлагаю утопических проектов. :)
> 
> Верю. А может ты бы посмотрел на apt по поводу оптимизации? У меня есть
> мнение, что его тормоза при распухшей базе обходятся тем, что при apt-get
> update может формироваться "оптимизированная" база.

Проблем с аптом особо нет - апт устроен менее глупо (точнее, менее
примитивно), чем rpm.  В апте есть структура данных называется Cache
предназначена для быстрого перехода между связанными пакетами (e.g. для
разрешения зависимостей).  В rpm такой структуры данных нет, там всё
делается более примитивно через "индексы".

Короче никакой "базы апта" нет.
И лучше не забивай себе голову всякой...

> Есть проблема с тем, что базы rpm и apt две разные, однако если мы
> оптимизируем, то удаление пакета из системы для нас не страшно, страшно
> -- добавление (если поставили rpm'ом вручную). И в этом случае придется
> оптимизированную базу перегенерировать (или проигнорировать).
> 
> А даже элементарная оптимизация -- все requires на некие provides, которые
> предоставляет только один пакет подменять requires на этот конкретный
> пакет, а provides которые никто не requires -- просто удалять из
> оптимизированой версии базы -- теоретически должно заметно ускорить
> тормозной apt :)
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20100510/0e6b7f1d/attachment-0001.bin>


Подробная информация о списке рассылки Devel