LINUX.ORG.RU
ФорумAdmin

libbz2 in Fedora vs Debian

 ,


0

2

Тут вот у меня есть вопрос к спецам что то я не соображу.

Есть левая прога под linux и ей нужна либа libbz2.so.1

В Fedore без проблем сразу нашли и поставили : bzip2-libs пакет - bzip2-libs-1.0.8-11.fc36.x86_64.rpm и там ссылка libbz2.so.1 на /usr/lib64/libbz2.so.1.0.8

Вроде все понятно.

Смотрим Debian ... libbz2-1.0_1.0.8-4_amd64.deb и тут сразу 2 вопроса :

1. Почему нет линка - libbz2.so.1

2. Пакет 1.0.8 вроде а внутри по сути 1 файл и там /lib/x86_64-linux-gnu/libbz2.so.1.0.4

Это что такое ? Это специально так чтобы все усложнить и запутать ?

★★★★★

1. Почему нет линка - libbz2.so.1

Возможно, это как-то связано с тем, что линк есть.

2. Пакет 1.0.8 вроде а внутри по сути 1 файл и там /lib/x86_64-linux-gnu/libbz2.so.1.0.4

Самому интересно стало. Версия солиба была захардкожена лет 15 назад, ещё до того, как сборочные файлы стали хранить в vcs, поэтому причин хардкодинга так просто не узнать. Скорее всего баг, но есть и вариант, что так и задумано по какой-то причине.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

В исходниках bzip2 шареная библиотека не собирается. В LSB стандартного soname для нее нет. Поэтому каждый дистрибутор дрочит как хочет. Редхат собирает с soname=libbz.so.1, дебиан собирает с soname=libbz2.so.1.0. Но почему в пакете отсутствует симлинк, непонятно. Может он по ошибке оказался в пакете bzip2?

iliyap ★★★★★
()
Ответ на: комментарий от gremlin_the_red

В общем, небольше исследование показало, что с Debian Potato по Debian Etch в патче для сборки шаред либы имя солибы каждый раз правилось под соответствие новой версии. Между etch и lenny ещё один раз обновили под 1.0.4, но в ленни попала версия 1.0.5, где солиб под 1.0.5 не поправили, он оставался 1.0.4. И с тех пор так и остаётся.

gremlin_the_red ★★★★★
()
Последнее исправление: gremlin_the_red (всего исправлений: 1)

Это что такое ? Это специально так чтобы все усложнить и запутать ?

О, несовпадение версии в soname с реальной версией библиотеки – бред наследия FHS из древних UNIX-like. Подлянка, которую подложили «диды» будущим пользователям UNIX-like операционных систем.

Не удивительно что в Google при проектировании Android взглянули на эту UNIX’овую помойку и отказались от подобного вообще:

http://computervisionandjava.blogspot.com/2015/05/trouble-with-versioned-shared-libraries.html

EXL ★★★★★
()

Может он другими средствами создается во время установки? Почему в пакете должен быть? Что если в разных пакетах будут и libbz2.so.1.0.4 и libbz2.so.1.0.8 что тогда?
Хотя тогда упротый пакетный менеджер должен будет сам разрулить конфликты подобные наверное.

naKovoNapalBaran
()
Последнее исправление: naKovoNapalBaran (всего исправлений: 1)
Ответ на: комментарий от James_Holden

и меня фанаты этого недоразумения на смех поднимают

Тебя поднимают на смех, потому что ты устраиваешь клоунаду. Связи с фанатизмом какого-либо рода тут нет.

i-rinat ★★★★★
()
Ответ на: комментарий от James_Holden

А можно поподробнее, какое наименование .so файлов в андроиде чем они это обосновывают?

Они не используют soname в APK и запрещают это делать. Иначе говоря, библиотеки приложения должны называться libname.so и никак иначе. Если тебе нужно версионирование – используй libname_1_2_3.so и т. д.

EXL ★★★★★
()
Ответ на: комментарий от i-rinat

А по-моему, клоунаду устраивают мейнтейнеры дебиана, когда не могут нормально упаковать библиотеки.

Даже приходилось две версии релиза выкладывать - для нормальных людей и для дебиана.

James_Holden ★★★
()
Ответ на: комментарий от i-rinat

Есть мнение, и совсем не безосновательное, что провал линукса на десктопе вызван фрагментацией линукса.

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

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

А потом люди не могут бинарные сборки делать. Вот у меня проблемы, у ТС проблемы, у всех проблемы. Но фанатам дебиана пофиг - все Божья роса.

James_Holden ★★★
()
Последнее исправление: James_Holden (всего исправлений: 1)
Ответ на: комментарий от James_Holden

Но фанатам дебиана

Судя по этому пассажу, речь о Debian.

Вот у меня проблемы

Какие ещё проблемы? Ты же не пользуешься Debian.

у ТС проблемы

Какие ещё проблемы? Он удалил файл и теперь жалуется, что его нет? Никакой дистрибутив не сможет защитить от человека с физическим доступом к железу.

у всех проблемы

Фишка квантора всеобщности состоит в том, что он применяет утверждение для всех. Для опровержения достаточно единичного контрпримера. У меня в системе есть libbz2.so.1. Это и есть тот самый контрпример.

i-rinat ★★★★★
()
Ответ на: комментарий от James_Holden

Вот как сабж - сознательно в пакете делать чтобы у библиотеки был неправильный номер в имени

А с чего ты взял, что 1) сознательно 2) неправильный?

А потом люди не могут бинарные сборки делать

Да как бы даже 1с-ники справляются. Видать, не рокет сайнс.

у ТС проблемы

Какие? Ну, кроме проблем со зрением, что он не сразу симлинки увидел.

Вот у меня проблемы

Так, может, проблемы действительно у тебя, а не у дебиана?

gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

Какие? Ну, кроме проблем со зрением, что он не сразу симлинки увидел.

Ну если ВАМ интересно то дело было так ;) Сейчас кругом пихают АСТРУ и полно вчерашних виндузятников вынуждены осваивать deb.

Есть левая прога и ей понадобилась, как я выше уже писал libbz2.so.1, они начали спрашивать у меня. В Fedore c этим нет проблем, само все нашлось. Я решил в инете глянуть как с этим делом в Дебиана.

Fedora : https://fedora.pkgs.org/36/fedora-x86_64/bzip2-libs-1.0.8-11.fc36.x86_64.rpm.html Там список файлов и там этот симлинк есть.

Гляжу Дебиан: https://debian.pkgs.org/11/debian-main-arm64/libbz2-1.0_1.0.8-4_arm64.deb.html В списке файлов этого нет. Да еще номер какой то странный.

Думаю спрошу у спецов, выясню эти 2 вопроса. Как написали что есть, то пришлось скачать это deb и через ar глянуть его … странно но там он есть. (я уже выше признался не проверил сам - мой косяк)

Сайт этот почему то симлинк в деб не показал. А где у ВАС в дебиане список файлов пакета ? Что то я не нашел :( Ну чтобы apt его сам мог найти …

P.S. Про левый номер версии пакета, не понял, странно как то … просто привык к четкой логике Fedora и немного мне не понятно и хочу выяснить чего до как.

mx__ ★★★★★
() автор топика
Последнее исправление: mx__ (всего исправлений: 2)
Ответ на: комментарий от mx__

https://debian.pkgs.org

Это не очень похоже на packages.debian.org Не знаю, почему на левом васянском сайте показывается левая васянская фигня.

А где у ВАС в дебиане список файлов пакета ?

apt-file list libbz2-1.0
libbz2-1.0: /lib/x86_64-linux-gnu/libbz2.so.1
libbz2-1.0: /lib/x86_64-linux-gnu/libbz2.so.1.0
libbz2-1.0: /lib/x86_64-linux-gnu/libbz2.so.1.0.4
libbz2-1.0: /usr/share/doc/libbz2-1.0/changelog.Debian.gz
libbz2-1.0: /usr/share/doc/libbz2-1.0/changelog.gz
libbz2-1.0: /usr/share/doc/libbz2-1.0/copyright
gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

Я не нападаю на Дебиан просто мне хочется узнать что там да как.

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

Как у вас в дебиан аналог команды : yum install /usr/lib/libbz2.so.1 ?

mx__ ★★★★★
() автор топика
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

Так вот я все таки хочу понять где список всех файлов для repa

В базе данных ПМ.

Я хз как тама все пашет, может эта команда работает только локально ? Или к примеру тащит заголовок (хз чего) только с этого пакета ?

Локально — в смысле, только для установленных пакетов? Нет. Список файлов идёт в метаданных реп. Поиск идёт по всем пакетам всех реп. Если не ограничить опциями.

yum install /usr/lib/libbz2.so.1

Полным аналогом будет

apt install `apt-file find -l -F /lib/x86_64-linux-gnu/libbz2.so.1`
Но полный путь известен же не всегда, поэтому лучше просто apt-file find libbz2.so.1 и выбрать подходящий пакет. Ну или, если есть уверенность, что такое же имя, но с разным путём, в разных пакетах не встречается, то
apt install `apt-file find -l -x '.*libbz2.so.1$'`

gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

В базе данных ПМ.

Стоп. Не понял. А как он туда попадает ?

Можете дать урл с оф. репа который указывает на файл (xml, db, …) который содержит список список ВСЕХ файлов этого репа ? Я кроме файла с описанием пакетов (Packages.gz) не найду что то …

mx__ ★★★★★
() автор топика
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от gremlin_the_red

О то что нужно. Спасибо.

Теперь еще вопрос, я как то делал локальное зеркало (набор файлов) и iso на сервер выкладывал. У меня в обоих случаях не вижу такого файла. Его что нет в iso ? Если можете меня ткнуть где такой файл в iso ? (правда там у меня ubuntu была)

Или этот файл как то отдельно генерится ?

mx__ ★★★★★
() автор топика
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

Про iso ничего не скажу, а для локального зеркала Contents не обязателен, для установки из него достаточно Packages. Поэтому да, генерится отдельно. Например, apt-ftparchive packages для Packages и apt-ftparchive contents для Contents.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

Огромное СПАСИБО за ответы. Несколько необычно но вроде понятно.

Но без этого списка с локальных зеркал фиг поставишь пакет по имени файла … ок.

mx__ ★★★★★
() автор топика
Ответ на: комментарий от mx__

Несколько необычно

Дебиан стар. Очень стар. Какие-то решения спустя десятилетия после их принятия могут показаться не вполне логичными. Но ведь он ещё при этом очень консервативен, и не готов их менять просто «потому что». ☺

gremlin_the_red ★★★★★
()