Bug 39230

Summary: inkscape: error while loading shared libraries: libinkscape_base.so: cannot open shared object file: No such file or directory
Product: Sisyphus Reporter: Andrew Savchenko <bircoph>
Component: inkscapeAssignee: Vitaly Lipatov <lav>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: major    
Priority: P5 CC: glebfm, lav, ldv, vt
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Andrew Savchenko 2020-11-09 11:07:11 MSK
Добрый день!

Обновление 1.0.1-alt6 сломало inkscape:

inkscape: error while loading shared libraries: libinkscape_base.so: cannot open shared object file: No such file or directory

Похоже, Вы забыли в /etc/ld.so.conf.d/ путь для libinkscape_base.so добавить, потому что вот так работает:
LD_LIBRARY_PATH="/usr/lib64/inkscape/" inkscape
Comment 1 Dmitry V. Levin 2020-11-09 19:32:45 MSK
$ rpmpeek Sisyphus/files/x86_64/RPMS/inkscape-1.0.1-alt6.x86_64.rpm readelf -Wd ./usr/bin/inkscape |grep -Fw RPATH
 0x000000000000000f (RPATH)              Library rpath: [$ORIGIN/../lib64/inkscape]

Без смонтированного /proc $ORIGIN в RPATH не резолвится.
Comment 2 Dmitry V. Levin 2020-11-09 19:54:59 MSK
Попутно возникла идея на стадии сборки пакета, у которого в RPATH или RUNPATH присутствует $ORIGIN, автоматически громко добавлять /proc в зависимости.
Comment 3 Vitaly Lipatov 2020-11-09 20:00:06 MSK
(Ответ для Dmitry V. Levin на комментарий #1)
> $ rpmpeek Sisyphus/files/x86_64/RPMS/inkscape-1.0.1-alt6.x86_64.rpm readelf
> -Wd ./usr/bin/inkscape |grep -Fw RPATH
>  0x000000000000000f (RPATH)              Library rpath:
> [$ORIGIN/../lib64/inkscape]
> 
> Без смонтированного /proc $ORIGIN в RPATH не резолвится.
А хорош ли способ так задавать RPATH (относительный от $ORIGIN)?
Но есть дело только в том, что у пользователя нет /proc ?

(Ответ для Dmitry V. Levin на комментарий #2)
> Попутно возникла идея на стадии сборки пакета, у которого в RPATH или
> RUNPATH присутствует $ORIGIN, автоматически громко добавлять /proc в
> зависимости.
Два раза прочитал, что идея в том, что добавлять на стадии сборки пакета. Потом понял, что всё же в зависимости :)
Крутая идея!
Comment 4 Andrew Savchenko 2020-11-09 20:38:10 MSK
(In reply to Dmitry V. Levin from comment #1)
> $ rpmpeek Sisyphus/files/x86_64/RPMS/inkscape-1.0.1-alt6.x86_64.rpm readelf
> -Wd ./usr/bin/inkscape |grep -Fw RPATH
>  0x000000000000000f (RPATH)              Library rpath:
> [$ORIGIN/../lib64/inkscape]
> 
> Без смонтированного /proc $ORIGIN в RPATH не резолвится.

Ох как всё сложно, rpath я даже не думал смотреть. Поменьше бы нам rpath в пакетах.

Но я уже мигрировал на rsvg-convert по твоему совету — так на самом деле лучше.

(In reply to Dmitry V. Levin from comment #2)
> Попутно возникла идея на стадии сборки пакета, у которого в RPATH или
> RUNPATH присутствует $ORIGIN, автоматически громко добавлять /proc в
> зависимости.

Хорошая идея, поддерижваю.
Comment 5 Vitaly Lipatov 2020-11-09 20:47:39 MSK
(Ответ для Vitaly Lipatov на комментарий #3)
> (Ответ для Dmitry V. Levin на комментарий #1)
> > $ rpmpeek Sisyphus/files/x86_64/RPMS/inkscape-1.0.1-alt6.x86_64.rpm readelf
> > -Wd ./usr/bin/inkscape |grep -Fw RPATH
> >  0x000000000000000f (RPATH)              Library rpath:
> > [$ORIGIN/../lib64/inkscape]
> > 
> > Без смонтированного /proc $ORIGIN в RPATH не резолвится.
> А хорош ли способ так задавать RPATH (относительный от $ORIGIN)?
> Но есть дело только в том, что у пользователя нет /proc ?
> 
> (Ответ для Dmitry V. Levin на комментарий #2)
> > Попутно возникла идея на стадии сборки пакета, у которого в RPATH или
> > RUNPATH присутствует $ORIGIN, автоматически громко добавлять /proc в
> > зависимости.
> Два раза прочитал, что идея в том, что добавлять на стадии сборки пакета.
> Потом понял, что всё же в зависимости :)
> Крутая идея!

Перечитал ещё раз и понял, что это происходит при использовании inkscape во время сборки пакета.
Правильно ли я задал RPATH? Нужно ли мне что-то сделать для починки или надеемся на реализацию идеи добавлять
BuildRequires: /proc ?
Comment 6 Dmitry V. Levin 2020-11-09 22:24:50 MSK
(In reply to Vitaly Lipatov from comment #5)
> надеемся на реализацию идеи добавлять
> BuildRequires: /proc ?

Идея - автоматически добавлять /proc в Requires таких пакетов, как нынешний inkscape.
Comment 7 Dmitry V. Levin 2020-11-09 22:27:42 MSK
(In reply to Vitaly Lipatov from comment #3)
> (Ответ для Dmitry V. Levin на комментарий #1)
> > $ rpmpeek Sisyphus/files/x86_64/RPMS/inkscape-1.0.1-alt6.x86_64.rpm readelf
> > -Wd ./usr/bin/inkscape |grep -Fw RPATH
> >  0x000000000000000f (RPATH)              Library rpath:
> > [$ORIGIN/../lib64/inkscape]
> > 
> > Без смонтированного /proc $ORIGIN в RPATH не резолвится.
> А хорош ли способ так задавать RPATH (относительный от $ORIGIN)?

Это вполне легальный способ, хотя %_libdir/%name было бы и проще,
и не требовало бы /proc для работы.

> То есть дело только в том, что у пользователя нет /proc ?

В данном случае да, нынешний inkscape не запускается, если /proc не смонтирован.
Comment 8 Andrew Savchenko 2020-11-10 12:06:19 MSK
(In reply to Vitaly Lipatov from comment #5)
> Нужно ли мне что-то сделать для починки или надеемся на реализацию идеи добавлять BuildRequires: /proc ?

Можно добавить в inkscape
Requires: /proc
пока не реализовано автоматическое создание подобных зависимостей.

(In reply to Dmitry V. Levin from comment #7)
> (In reply to Vitaly Lipatov from comment #3)
> > (Ответ для Dmitry V. Levin на комментарий #1)
> > > $ rpmpeek Sisyphus/files/x86_64/RPMS/inkscape-1.0.1-alt6.x86_64.rpm readelf
> > > -Wd ./usr/bin/inkscape |grep -Fw RPATH
> > >  0x000000000000000f (RPATH)              Library rpath:
> > > [$ORIGIN/../lib64/inkscape]
> > > 
> > > Без смонтированного /proc $ORIGIN в RPATH не резолвится.
> > А хорош ли способ так задавать RPATH (относительный от $ORIGIN)?
> 
> Это вполне легальный способ, хотя %_libdir/%name было бы и проще,
> и не требовало бы /proc для работы.

Наверное, это следует учесть в генераторе зависимостей и добавлять Requires: /proc только для тех пакетов, где есть $ORIGIN в RPATH, а не для всех с RPATH.
Или есть ещё случаи, когда нужен /proc, есть RPATH, но нет $ORIGIN?
Comment 9 Repository Robot 2020-11-10 13:57:21 MSK
inkscape-1.0.1-alt7 -> sisyphus:

 Tue Nov 10 2020 Vitaly Lipatov <lav@altlinux.ru> 1.0.1-alt7
 - add Requires: /proc (ALT bug 39230)