LINUX.ORG.RU

Как правильно собирать софт?

 , , ,


0

3

Создал каталог /opt/build, в нём собираю примерно так:

wget http://${somesite}/${softwarename}-${softwarever}.tar.gz
tar xvf ${softwarename}-${softwarever}.tar.gz
cd ${softwarename}-${softwarever}
./configure --prefix=/opt/build/${softwarename}-${softwarever}-bin
make
make install
Всё собирается, работает. Но беда в том, что путь /opt/build/${softwarename}-${softwarever}-bin получается захардкожен в бинарники. Если потом эти бинарники устанавливать в /usr что-то может поломаться и приходится создавать симлинки /opt/build/${softwarename}-${softwarever}-bin/lib на /usr/lib. Конечно, это неправильно.
Так как же правильно собирать? В chroot'е?

★★★★★

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

Ответ на: комментарий от wakuwaku

Ну, я беру получившиеся бинарники, пакую их в пакет, пакет устанавливаю на другую систему.

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

Я подозревал, что это должно примерно так и быть, потому что где-то видел, но решил спросить.
Спасибо!

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

Правда, после такой установки приходится вручную править все *.pc-файлы. Может, можно передать мейку ещё какой-нибудь параметр типа pc_prefix_transform?

CYB3R ★★★★★
() автор топика

Если софт не умеет смотреть либы по относительным путям, (к примеру, во время конпеляции perl можно задать, что все пути к модулям - относительные), то ты ничего не сделаешь.

Хотя не, есть способ. Херачь все статически, --disable-shared во все поля.

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

Да уж, это не выход. Лучше я заведу себе виртуалку для сборки пакетов.
А то сейчас я собираю на одном компе, в пакеты пакую на другом, устанавливаю в виртуалку.

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

Я сейчас так установил libdrm, поправив пути в *.pc, потом стал собирать месу. Меса не собралась, ругнувшись на неправильный libdrm.la.

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

Это все фигня. К примеру, если собрать апач с динамическим openssl без статических либ, то mod_ssl будет смотреть только туда, где были либы во время конпеляния, хоть ты ему их под нос суй.

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

Скорее всего, без виртуалки не обойтись. Прямо на виртуалке компилируешь, делаешь сначала make install DESTDIR=/tmp/xxx, чтобы собрать пакет, потом просто make install.

Можно было бы конечно поиграться с INCLUDES, LIBS, CPPFLAGS и LDFLAGS, но оно не всегда одинаково себя ведет.

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

Не, нужно написать скрипты для сборки всего этого добра, подписывать пакеты и заливать на FTP.

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

Пять звёзд, а в обычный configure make make install не могу.

CYB3R ★★★★★
() автор топика

http://www.gnu.org/software/stow/

И никогда не ставь ничего в /usr!

Лучше иметь длинный PATH и LD_LIBRARY_PATH, чем срачь в /usr или даже /usr/local или /opt

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