ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
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 --]

  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