[devel] переработанный документ SharedLibsPolicy (update 1)

Anton Midyukov antohami на altlinux.org
Пт Авг 15 09:37:23 MSK 2025


15.08.2025 09:35, Ivan A. Melnikov пишет:
> On Fri, Aug 15, 2025 at 09:21:04AM +0300, Vitaly Chikunov wrote:
>> On Thu, Aug 14, 2025 at 02:33:47PM +0400, Ivan A. Melnikov wrote:
>>> On Thu, Aug 07, 2025 at 05:20:26PM +0300, Anton Farygin wrote:
>>> [...]
>>>> * Каждая несовместимая версия библиотеки должна быть в отдельном бинарном
>>>> пакете.
>>>> * Название пакета: `libfoo%abiversion`
>>>> * Если имя библиотеки заканчивается на цифру, то используется подчёркивание:
>>>> `libfoo_%abiversion`
>>>> * В пакете не должно быть файлов с путями, не содержащими номер ABI.
>>>
>>> Странная формулировка.
>>>
>>> [...]
>>>> == Как выбирать %abiversion ==
>>>>
>>>> Если библиотека использует `soversion` — используем его как %abiversion.
>>>>
>>>> Если `soversion` отсутствует или нестабилен — используем:
>>>>
>>>> * возрастающее число: `libfoo0`, `libfoo1`
>>>> * major-версию: `libqt3`, `libqt4`
>>>> * major.minor: `libdb4.0`, `libdb4.1`
>>>> * часть soname: `libcurl4`, `libflac8`
>>> [...]
>>>> * Если два пакета конфликтуют по путям, они не смогут сосуществовать — тогда
>>>> старую версию нужно удалить, а все зависимости — пересобрать.
>>> [...]
>>>
>>>
>>> Здесь не очень понятно описано, что делать, если апстрим не задаёт
>>> никакого soname для библиотеки. Ну то есть, очевидно, надо идти
>>> в апстрим и заниматься просветительской работой, сопровождаемой
>>> pull request'ами, но пока эта работа движется, библиотеку как-то
>>> же можно запаковать.
>>>
>>> Чаще всего такие библиотеки окажутся установлеными во что-то
>>> похожее на %_libdir/libfoo.so. Переименоввывать её странно,
>>> да и динамический компоновщик кажется не найдёт такую
>>> библиотеку по какому-то другому имени. Значит, в разных
>>> сборках такой библиотеки будет один и тот же файл. 
>>> А это уже противоречит требованию предложенного policy.
>>>
>>> На мой взгляд, разумнее всего такие библиотеки паковать
>>> в пакет с именем libfoo и надеятся на лучшее, так как
>>> пакет libfooN, набирающий со временем кофликты
>>> с libfoo0, libfoo1, ..., libfoo$((N-1)) технически
>>> ничем не лучше.
>>>
>>> Можно конечно пытаться задать свой soname патчем. Это
>>> решило бы многие проблемы, но есть опасность пересечься
>>> со схемой формирования soname, которую рано или поздно
>>> выберет апстрим.
>>
>> Soname необходимо и достаточно менять - если произошло обратно
>> несовместимое изменение ABI. Как правило, об этом изменении лучше всего
>> знает только апстрим.
> 
> Это понятно, но не все апстримы одинаково квалифицированны.
> 
> Собственно, всё моё письмо ставит вопрос -- а что делать, если
> soname нет?
> 

Прятать в подкаталог?

-- 
best regards, Anton Midyukov <antohami на altlinux.org>



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