LINUX.ORG.RU

сборка софта без зависимостей по-умолчанию

 


0

1

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

в системе установлено много всякой фигни, и когда делается ./configure - программа подхватает не нужные зависимости. я же хочу собрать чистую, ванильную программу (максимум с тем, что я разрешу сам). мне кажется, делать --without и --disable в ./configure для каждой надстройки/зависимости это ненужная сущность, и хочу найти способ проще.

нагуглил такую замечательную вещь (у меня арч), как arch-bootstrap, - по сути оно просто устанавливает в отдельную директорию (pacman -r bootstrap/ -S bash coreutils base-devel) минимальный набор софта, необходимый для сборки, затем ты chroot'ишься в нее и получаешь как-бы голую «систему», в которой сам разрешаешь зависимости и собираешь софт.
еще в ауре есть debootstrap - тот-же «джентельменский набор», только для дебьяна. его еще не ставил, не смотрел.

и надеюсь узнать ответ на вопрос уже у знающих людей, - какие существуют способы собирать софт, чтобы он не подхватывал никаких зависимостей из системы? :)
в книжке lfs описывается такой способ, создания временной, чистой среды специально под сборку софта, но при всем моем уважении, - это мартышкин труд, и такая полезная функция, как получение чистой среды под сборку ванильного софта, должна быть автоматизирована у разработчиков, как мне кажется.

★★★★★

и когда делается ./configure - программа подхватает не нужные зависимости

Ошибка. Программа ничего не подхватывает. Она проверяет, есть ли это в системе или нет. Если есть, идёт дальше, если нет, вылетает с ошибкой, ругаясь на отсутствие компонента. После всех этих проверок формируется Makefile, в котором указано что, как и с каким функционалом должно собраться. Если нужно собрать программу с минимально возможным количеством зависимостей, надо именно писать ./configure --without --disable. Отчасти именно для этого и создан этот скрипт. Таким образом, если собрать «чистую систему», потом как раз придётся заниматься лишней работой, а именно ставить туда всё то, что требуется программе по зависимостям.

shell-script ★★★★★
()

у меня оно даже развернуться не смогло

...
--- uncompress package: arch-bootstrap/libssh2-1.4.2-1-i686.pkg.tar.xz
tar: Ignoring unknown extended header keyword `SCHILY.fflags'
--- download package: http://mirrors.kernel.org/archlinux/core/os/i686/libassuan-2.0.3-1-i686.pkg.tar.xz
--- uncompress package: arch-bootstrap/libassuan-2.0.3-1-i686.pkg.tar.xz
--- Error: cannot find package: libgpg-error

а что нужно сделать, чтобы бутстрапнуть такую систему с альтернативной libc? musl например?

anonymous
()
Ответ на: комментарий от shell-script

Спасибо, но правильно ли в таком случае я понимаю, что например... взять тот-же арч, и есть какой-нибудь компьютер, на котором все мейнтейнеры арча собирают пакеты для него, и в арче, на этом компьютере, установлены все-все-все пакеты вообще? А в выкладываемых PKGBUILD'ах они разруливают нужные/ненужные зависимости одними только опциями ./configure?

Ну и речь не только про арч, - взять любой дистрибутив. В системе установлено много всего, а зависимости в пакетах только через configure указываются? Нет никаких чистых систем под каждый пакет персонально (хотя это глупо, сейчас пишу и понимаю это)...

Spoofing ★★★★★
() автор топика
Ответ на: комментарий от shell-script

> и когда делается ./configure - программа подхватает не нужные зависимости

Ошибка. Программа ничего не подхватывает. Она проверяет, есть ли это в системе или нет. Если есть, идёт дальше, если нет, вылетает с ошибкой, ругаясь на отсутствие компонента.

Это у тебя ошибка. Многие опциональные зависимости подхватываются автоматом, если они найдены, и молча пропускаются, если нет. Соответственно, чтобы собрать программу с точным набором зависимостей, нужно либо убедиться, что в системе нет «лишних» библиотек (т.е. использовать chroot), либо вручную указывать все --without и --disable. Первый способ можно автоматизировать, следовательно, он предпочтительнее.

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

мартышкин труд

Ты ж не вручную будешь это делать.

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

Второй тоже автоматизируется. Делаешь configure --help, грепаешь все without и disable, подставляешь при обычном вызове.

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

Ну или сам скрипт грепаешь, бывает хелпа нет

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

Большая часть всё-таки проверки наличия обязательных библиотек в системе. Поэтому руками отключать всё лишнее, имхо, проще, чем доустанавливать в чрут всё то, чего не хватает.

shell-script ★★★★★
()

осиль уже LFS

сабж

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