On Sat, Feb 03, 2024 at 01:31:28PM +0300, Arseny Maslennikov wrote: > On Sat, Feb 03, 2024 at 10:46:42AM +0300, Anton Farygin wrote: > > On 03.02.2024 00:38, Arseny Maslennikov wrote: > > > Предыдущее обсуждение — в треде: > > > https://lore.altlinux.org/devel/ZKQaFPEN0qnNWGnz@cello/ > > > > Почему-то мне кажется что чем больше пакетов переедут самостоятельно, тем > > меньше сложность вопросов, которые нужно будет решать в rpm и сборочной > > системе. > > Связь тут неравномерная: ряд пакетов уже и так собираются и ставятся, > будучи собраны с прототипом brp-модуля. Но некоторые отдельные пакеты, > может быть, и стоит поправить заранее. > > Например, есть библиотеки, где под /lib64 зачем-то лежат > devel-симлинки; или в этом каталоге лежит сама библиотека, но клиентов в > /bin и /sbin у неё нет. > Сейчас brp-модуль игнорирует /lib и /%_lib; если > мейнтейнеры исправят свои такие пакеты, это поможет. Вот список всех исходных пакетов, из которых собираются пакеты, содержащие файлы под /lib*, которые на merged-usr иерархии начнут конфликтовать с другими файлами: cyrus-sasl2 asy @everybody libdb4.7 @core libdb4.8 rider @everybody libdb6.1 rider @everybody libusb shrek shaba mike @everybody samba sin @qa gcc-common @core at sbolshakov pcc oddity @qa @everybody Прошу уважаемых мейнтейнеров их исправить. Про последние два пакета я уже писал: > Или, например, есть такой пакет pcc, который упаковывает файл /usr/lib/cpp. > Путь /lib/cpp встречается в configure-скриптах из-под достаточно старых > версий autoconf; скрипт начинает его проверять, если недоступны или > работают не так "$CC -E" и "$CC -E -traditional-cpp". > В debian (с учётом его необычного устройства %_libdir) этот путь > вообще отсутствует. > Я бы просто перед запуском такого configure-скрипта делал так: > sed -i 's!"/lib/cpp"!"$CC -E"!' ./configure > А вот /usr/lib/cpp сам собой не используется вообще никем. > > На merged-usr иерархии пакет pcc со своим файлом /usr/lib/cpp начнёт > иметь мисконфликт с gcc-common, чей симлинк /lib/cpp тоже попадёт в > /usr/lib. Полагаю, из pcc надо просто убрать /usr/lib/cpp. Вот сами конфликтующие файлы, сгруппированные по исх. пакетам. libdb*: /{,usr/}lib64/libdb-4.7.so /{,usr/}lib64/libdb-4.8.so /{,usr/}lib64/libdb-6.1.so samba: /{,usr/}lib64/libnss_winbind.so.2 /{,usr/}lib64/libnss_wins.so.2 cyrus-sasl: /{,usr/}lib64/libsasl2.so libusb: /{,usr/}lib64/libusb-1.0.so.0 Либо эти файлы будут конфликтовать с симлинками в своих devel-пакетах, и тогда их надо починить тем или иным надлежащим способом. Либо конфликтующие файлы в одном пакете, и нужно положить вне префикса и под префикс две копии вместо симлинков; например: cp -a %buildroot/lib64/libusb-1.0.so.0 %buildroot%_libdir/libusb-1.0.so.0 Заранее благодарю!