From: "Денис Смирнов" <mithraen@freesource.info>
To: ALT Linux Sisyphus discussions <sisyphus@lists.altlinux.org>
Subject: Re: [sisyphus] обновления... гм?!
Date: Mon, 15 Nov 2010 11:47:54 +0300
Message-ID: <20101115084754.GA14903@mw.mithraen.ru> (raw)
In-Reply-To: <4CE0F1BC.9070601@mmedia2.kemsu.ru>
[-- Attachment #1: Type: text/plain, Size: 3772 bytes --]
On Mon, Nov 15, 2010 at 02:39:24PM +0600, REAL wrote:
R> А вообще, Денис, если подводит память, я сам довольно часто на это
R> полиси ссылался и являюсь её сторонником. Просто здесь ситуация иная.
Она отличается лишь тем, что в связи с особенностями ситуации (у
библиотеки очень мало клиентов) вред от несоблюдения этого полиси _сейчас_
отсутствует, и, если эта библиотека и в будущем будет столь же
редкоиспользуемой, то и будет отсутствовать.
R> Кстати, мне больше всего нравится идея, там не зафиксированная, но
R> практикуемая некоторыми мейнтейнерами:
R> 1. самая новая версия пакета - без soname в названии.
R> 2. более старые (compat) - с soname.
R> Так красивее, на мой взгляд, и при этом сохраняется сама суть
R> обсуждаемого полиси.
Суть -- да. В теории.
На практике -- apt кривая поделка, которая на этом склеит ласты и
потребует ручных усилий для обновления. А вся "красота" заключается в том,
что имя без soversion (то есть короче на один символ, и при этом не
содержит полезной информации). То есть красота исключительно визуальная, а
с технической точки зрения решение -- ужасное.
Объясняю еще раз. Библиотека это заведомо такая хрень, которая
пользователю не нужна. Вообще не нужна. И обновлять ее со сменой
soversion -- пользователю не нужно.
Пользователю нужно чтобы его любимая программка -- работала. А ей для
этого нужны некие либы с некими soversion. И, если пользователь хочет
обновиться, эти либы с этими soversion надо обновить до последних версий.
А с точки зрения приложений в runtime (а не во время сборки) нету никакого
libabc, например. Есть libabc.1 или libabc.2. И если приложение хочет
libabc.1, то оно хочет _именно его_. А если другое хочет libabc.2, то оно
хочет _именно его_. Поэтому правильно относиться к libabc.1 и libabc.2 не
как к разным версиям библиотеки libabc, а как к двум совершенно разным
библиотекам.
Правда, к сожалению, у libabc.1 и libabc.2 высокая вероятность пересечения
по именам символов. И поэтому если по цепочке зависимостей у приложения
оказывается в памяти обе этих библиотеки, то будет большая проблема. В
принципе ровно та же проблема была бы если бы в памяти оказались libfoo и
libbar, у которых обеих почему-то есть символ foobar. Но уж вот такая
кривая вещь современные ОС, никакого namespace для этого не предусмотрено
к сожалению.
Но я повторюсь -- libabc.1 и libabc.2 это не "разные версии одной
библиотеки". Это именно что разные библиотеки, с точки зрения системы.
Поэтому называть пакет с libabc2 просто libabc, а libabc1 --
libabc-compat, это, мягко скажем, попытка ввести кого-то в заблуждение.
Ибо если ты приходишь в магазин, например, то ты хочешь купить что-то. А
если это что-то лежит в закрытой коробочке с надписью "фрукт" -- а ты
хочешь что-то конкретное, то будешь ругаться на руководство этого магазина
нехорошими словами.
Вот 'libabc' это точно такая же вредная генерализация, вместо четкого
именования сущности которая находится в пакете. А сущность эта --
'libabc.1', или 'libabc.2' а не какой-нибудь там 'libabc', или, тем более
'libabc-compat' (который существует только в воображении мантейнера).
Подводя итог. Если пакет с библиотекой называется иначе чем
'lib%name.%soversion' мантейнер должен иметь четкое обоснование зачем это
нужно (какую цель это преследует). "и так сойдет в данной ситуации" -- это
не цель, а просто обоснование почему в данном случае неисполнение этого
полиси не является критической багой. Но багой оно в любом случае, до тех
пор пока нет конкретной цели, для достижения которой нарушение этого
полиси является необходимым инструментом.
--
С уважением, Денис
http://mithraen.ru/
----------------------------------------------------------------------------
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
next prev parent reply other threads:[~2010-11-15 8:47 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-15 3:51 Gleb Kulikov
2010-11-15 4:40 ` Денис Смирнов
2010-11-15 5:01 ` Gleb Kulikov
2010-11-15 5:26 ` Денис Смирнов
2010-11-15 5:40 ` Gleb Kulikov
2010-11-15 6:46 ` Terechkov Evgenii
2010-11-15 6:56 ` Andrey Rahmatullin
2010-11-15 7:15 ` Денис Смирнов
2010-11-15 5:48 ` REAL
2010-11-15 7:12 ` Денис Смирнов
2010-11-15 7:28 ` REAL
2010-11-15 7:53 ` Денис Смирнов
2010-11-15 8:01 ` Andrey Rahmatullin
2010-11-15 8:13 ` REAL
2010-11-15 8:58 ` Денис Смирнов
2010-11-15 9:15 ` REAL
2010-11-15 12:01 ` Денис Смирнов
2010-11-16 6:25 ` REAL
2010-11-16 8:39 ` Денис Смирнов
2010-11-15 8:39 ` REAL
2010-11-15 8:47 ` Денис Смирнов [this message]
2010-11-15 12:38 ` Sergey V Turchin
2010-11-15 14:11 ` Gleb Kulikov
2010-11-15 14:18 ` Sergey V Turchin
2010-11-15 14:46 ` Gleb Kulikov
2010-11-15 15:10 ` Sergey V Turchin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101115084754.GA14903@mw.mithraen.ru \
--to=mithraen@freesource.info \
--cc=sisyphus@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Sisyphus discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/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 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
public-inbox-index sisyphus
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sisyphus
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git