LINUX.ORG.RU

autotools и разные libdir


0

0

есть пакет (ecryptfs-utils), который собирает несколько библиотек, и при установке кладет их по умолчанию в /usr/lib, мне нужно один библиотечный файл положить в /lib

кто силен в автотулзах, подскажите как это можно проще всего сделать? и если /usr/lib "канонически" это --libdir, то как тогда общепринято называется /lib?


> и если /usr/lib "канонически" это --libdir, то как тогда общепринято называется /lib?

да так же. просто тот же юдев собирается с «--libdir=/lib${LIBDIRSUFFIX}», а злиб, например, с «--libdir=/usr/lib${LIBDIRSUFFIX}».

а касательно вашего вопроса: вот поэтому и существуют всякие ебилды/слакбилды/етц, которые после конфигурации/компиляции/инсталляции «тюнят» что нужно согласно политике партии перед сборкой пакета.

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

я боюсь, что после конфигурации/компиляции/инсталляции "тюнить" будет уже поздно, т.к. бинарники с библиотеками уже будут слинкованы, и если начать что-то куда-то "двигать" они друг друга не найдут

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

> я боюсь, что после конфигурации/компиляции/инсталляции "тюнить" будет уже поздно

смотря что.

> т.к. бинарники с библиотеками уже будут слинкованы

если они будут слинкованы (т.е. статической линковкой), то и двигать не будет чего.

> и если начать что-то куда-то "двигать" они друг друга не найдут

а они и искать ничего не будут. искать будет /lib/ld-linux.so по /etc/ld.so.cache, который создаётся ldconfig согласно /etc/ld.so.conf. пакетные менеджеры обычно запускают ldconfig автоматически после установки пакета для обновления so-кэша.

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

вот есть 3 библиотеки:

/usr/lib64/ecryptfs/libecryptfs_key_mod_gpg.so
/usr/lib64/ecryptfs/libecryptfs_key_mod_openssl.so
/usr/lib64/ecryptfs/libecryptfs_key_mod_passphrase.so

им в /usr/lib64 самое место, а есть /usr/lib64/libecryptfs.so.0.0.0, с которой слинкован
/sbin/umount.ecryptfs, который при перезагрузке не находит эту библиотеку, потому что /usr уже отмонтировался

соответственно нужны две вещи:

1) сделать так, чтобы /sbin/umount.ecryptfs был слинкован с /lib64/libecryptfs.so.0.0.0 (без /usr)
2) положить libecryptfs.so.0.0.0 в /lib64

при этом остальные библиотеки должны остаться там, где и лежат


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

точно! спасибо!

чтобы переместить из /lib64 pkgconfig файл, поменяю pkgconfigdir в configure.ac, а вот как переместить /lib64/libecryptfs.la в /usr/lib64?

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

брутально смувил в ебилде в итоге

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

> чтобы переместить из /lib64 pkgconfig файл, поменяю pkgconfigdir в configure.ac, а вот как переместить /lib64/libecryptfs.la в /usr/lib64?

типа слакбилд:

…
make || exit 1
make install DESTDIR=$DESTDIR || exit 1
cd $DESTDIR || exit 1
mv lib64/{pkgconfig,security,libecryptfs.la} usr/lib64 || exit 1
makepkg -l y -c n ../$PACKAGE-$VERSION-$ARCH-$BUILD.tgz || exit 1
…
<цензоред>, ели собрал. похоже, оно на «--disable-nss» кладёт здоровый такой болт, хорошо хоть симанки была с нужными хедерами и либами…

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

хотя лучше наоборот: собрать с --libdir=/usr/lib64, а потом перенести /usr/lib64/libecryptfs.so* в /lib64 и соотв. пропатчить .рс-файл. ну и ещё вариантов придумать можно %)

arsi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.