LINUX.ORG.RU

Как настроить /usr/src/Makefile, чтобы собирал нужное, а не всё-всё-всё

 , ,


1

1

Доброго Всем и вся!

Многоуважаемые форумчане, не даёт спокойно спать не найдённый ответ на следующий вопрос: как при вводе команды #cd /usr/src && make buildworld система не компилировала все пакеты для которых у меня скачены исходники, а компилировала бы только определённые пакеты или точнее, только те, которые нужны для работы системы?

Например, зачем мне собирать sendmail, если он мне не нужен?

Куда ковырять? В синтаксис главного Makefile или просто удалить каталог пакета с исходниками из /usr/src?

Спасибо!

Там нет никаких пакетов, это монолитная система. Но можно настроить опции в /etc/src.conf - поотключать что-то или наоборот включить то чего нет по умолчанию (редко но бывает).

man src.conf

тут всё описано.

удалить каталог пакета с исходниками из /usr/src?

Что-либо менять в /usr/src можно только если ты разработчик, иначе ты только напортишь.

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

Например, зачем мне собирать sendmail, если он мне не нужен?

Он может быть нужен системе (на самом деле не совсем так, но есть ряд нюансов). Как уже сказали выше, FreeBSD это цельная операционная система, все её компоненты так или иначе друг на друга завязаны и далеко не всё можно безболезненно выкинуть. Можешь намудрить так, что оно у тебя в лучшем случае работать не будет.

Куда ковырять?

man src.conf.

все пакеты

Пакеты (порты) это отдельная история. Про PkgBase говорить рано, ему ещё далеко до готовности.

mord0d ★★★★★
()

Братцы! Спасибо за ответы, но что-то как-то нет у меня в системе src.conf. Как же так? Не могу понять.

Насчёт системы не беспокойтесь, я не планировал делать installworld! Да и система у меня тестовая - на виртуалке.

В связи с этим ещё вопрос у меня насчёт портов - почему это отдельная история? Скачиваю сырцы пакета, компиляю и бахаю в виде бинов в /usr/obj/usr/src - что тут отдельного то?

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

Кого куда бахаешь? 🤦

Например так:

#cd /usr/ports/misc/mc

#configure

#make

Далее, беру результаты процесса компиляции в виде бинов и записываю например в /usr/obj/usr/src куда-то там внутрь, чтобы потом #cd /usr/src/release && make cdrom или dvdrom.

ЧЯДНТ?

Ramirezkiv2
() автор топика
Последнее исправление: Ramirezkiv2 (всего исправлений: 1)
Ответ на: комментарий от Ramirezkiv2

Есть базовая система, она в /usr/src, это единая программа, сделанная из множества модулей, часть из которых можно относительно безболезненно отключать, часть нельзя. Устанавливается она в /bin, /lib, /libexec, /sbin, /usr (кроме /usr/local), /etc.

Есть прикладной софт, который ты можешь в базовую систему установить. Он не часть ОС, это отдельные независимые программы, просто мейнтейнеры проверили что они нормально работают под FreeBSD и при необходимости наложили на них патчи. Инструкции для их компиляции лежат в /usr/ports, а сами эти программы устанавливаются в /usr/local.

То, что лежит в /usr/src, про эти доп. программы ничего не знает. Может быть, make cdrom (не знал про эту команду вообще) и подхватит их, если ты подсунешь их в скомпилированную систему, но это какой-то нештатный способ.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от iron

Он хочет сделать установочный образ с некоторыми предустановленными портами, очевидно. Вполне законное желание. Но по-моему это сделать проще загрузочной флешкой, которая даст разметить диск и тупо распакует на него готовый .tar.gz.

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

Есть базовая система, она в /usr/src, это единая программа, сделанная из множества модулей, часть из которых можно относительно безболезненно отключать, часть нельзя. Устанавливается она в /bin, /lib, /libexec, /sbin, /usr (кроме /usr/local), /etc.

Это я в курсе, только после сборки системы из сырцов /usr/src я в рабочую систему не собираюсь ничего устанавливать))

Есть прикладной софт, который ты можешь в базовую систему установить. Он не часть ОС, это отдельные независимые программы, просто мейнтейнеры проверили что они нормально работают под FreeBSD и при необходимости наложили на них патчи. Инструкции для их компиляции лежат в /usr/ports, а сами эти программы устанавливаются в /usr/local.

Про это я в курсе, только мне сложно представить как Xorg или любой оконный менеджер не является частью системы. По-моему очень даже является.

То, что лежит в /usr/src, про эти доп. программы ничего не знает. Может быть, make cdrom (не знал про эту команду вообще) и подхватит их, если ты подсунешь их в скомпилированную систему, но это какой-то нештатный способ.

Спасибо за комплимент))

Ramirezkiv2
() автор топика
Последнее исправление: Ramirezkiv2 (всего исправлений: 1)
Ответ на: комментарий от firkax

Он хочет сделать установочный образ

Он что, собрался сдавить фрю с флешки где-то на северном полюсе, без инета и под пристальным присмотром пингвинов? Есть же инет, можно через pkg поставить последнюю версию. А если не устраивают дефолтные флаги сборки - собрать нужный софт на целевой системе. Нынче процы быстрые, даже жирный софт собирается относительно быстро.

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

Он хочет сделать установочный образ с некоторыми предустановленными портами, очевидно. Вполне законное желание. Но по-моему это сделать проще загрузочной флешкой, которая даст разметить диск и тупо распакует на него готовый .tar.gz.

Очень хочет, но стандартный загрузочный образ, скачиваемый с сайта FreeBSD его не очень устраивает и он хочет своё и через сырцы))

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

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

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

он хочет своё и через сырцы))

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

К тому же, минус самосборной системы в том, что ты не сможешь ее обновить через freebsd-update.

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

Ты пытаешься сделать LiveCD?

Нет. Пытаюсь сделать загрузочный дистр. FreeBSD, в котором помимо базовых пакетов будут ещё преддустановленные мной (на этапе подготовки) пакеты скаченные и откомпиляченные (например Иксы и оконный менеджер), чтобы на чистую систему с этого загрузочного дистрибутива устанавливалось всё, что мне надо и не надо было тянуть из Инета что-то после установки стандартной FreeBSD.

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

разворачивать её из готового шаблона везде

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

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

Дык софт (пакеты) в отличие от системы - понятие временное и быстротечное.

Смотря насколько быстротечное.

Закатаешь какую-нить прогу в образ, поставишь и потом все равно нужно будет обновлять

Пересоберу всё с нуля.

так как либо что-то не будет работать

Работает.

или в нем найдут дыры.

Волков бояться.

К тому же, минус самосборной системы в том, что ты не сможешь ее обновить через freebsd-update.

А плюсы самосборной системы?

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

А плюсы самосборной системы?

Плюсы очень туманны в свете того, что ты собираешься юзать фрю в виртуалке а не на реальном железе.

Вот интересный скриптик для автоматической установки фри на ZFS и начальной настройки https://github.com/click0/FreeBSD-install-scripts/blob/master/gozfs.sh

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

Плюсы очень туманны в свете того, что ты собираешься юзать фрю в виртуалке а не на реальном железе.

Это сейчас на виртуалке.

Вот интересный скриптик для автоматической установки фри на ZFS и начальной настройки https://github.com/click0/FreeBSD-install-scripts/blob/master/gozfs.sh

Спасибо!

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

То, что Вам надо называется NomadBSD. Советую взглянуть на их скрипт сборки и в особенности на команду ports которая установить порты указанные в файле конфигурации.

EDIT: Как тут уже заметили, в базовой системе нет пакетов. Программа может быть включена в src и быть частью операционной системы, либо может быть установлена отдельно.

EDIT2: Пожалуйста, не плодите отсебятины, а помогайте уже существующим проектам цели которых совпадают с вашими почти на 100%.

dsl
()
Последнее исправление: dsl (всего исправлений: 2)
Ответ на: комментарий от Ramirezkiv2

Про это я в курсе, только мне сложно представить как Xorg или любой оконный менеджер не является частью системы. По-моему очень даже является.

Не является. Авторы FreeBSD его никак не поддерживают. Это сторонний софт от сторонних авторов, который ты можешь по желанию поставить. И вообще, целевое назначение FreeBSD - сервера, всё остальное делается в основном силами энтузиастов.

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

То, что Вам надо называется NomadBSD. Советую взглянуть на их скрипт сборки и в особенности на команду ports которая установить порты указанные в файле конфигурации.

Спасибо.

Пожалуйста, не плодите отсебятины, а помогайте уже существующим проектам цели которых совпадают с вашими почти на 100%.

Сначала надо разобраться как всё устроено и работает, чтобы мочь кому-то помогать))

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

Только что по новой сделал #svnlite checkout https://svn.freebsd.org/base/releng/11.2 /usr/src и начал собирать мир и начали вылезать ошибки.

Не пойму почему? Потому что текущая версия фри 13.1 или потому, что у меня в системе, что-то не совпадает с исходниками?

Версия системы 11.2.

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

Нет, проще ...

Не все так однозначно. Может быть проще, но не функциональнее. Скриптом можно любую существующую фрю причесать. Взял в аренду VPS, запустил скриптик и у тебя система со всеми нужными настройками и софтом.

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

В идеале, систему и софт собирать с исходников. Причем в среде на которой потом будет работать. Плюс с оптимизацией под железо: CFLAGS+= -O2 -pipe -march=native в /etc/make.conf. Тогда, как показывает практика, софт и система будет работать максимально стабильно и предсказуемо.

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

Это уже с настроенным src.conf или дефолтное?

Вообще вполне возможно что 11.2 не будет из 13.1 собираться.

И зачем 11.2 собирать? Если прям нужна 11.х то лучше собирать 11.4.

И какие ошибки?

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

Актуальная версия FreeBSD 13.2-STABLE.

Получение исходников и синхронизация: https://www.fryaha.ru/getting-the-freebsd-source-code-from-git/

Получение дерева портов и синхронизация: https://www.fryaha.ru/gitup-get-ports-and-system-sources/

Файл /etc/src.conf нужно создать самому и прописать в нём то, что не нужно и нужно:

WITHOUT_ACCT=true
WITHOUT_ASSERT_DEBUG=true
WITHOUT_ATM=true
WITHOUT_AUDIT=true
WITHOUT_AUTHPF=true
WITH_BIND_NOW=true
WITHOUT_BLACKLIST=true
WITHOUT_BLACKLIST_SUPPORT=true
WITHOUT_BLUETOOTH=true
WITHOUT_BSDINSTALL=true
WITHOUT_CAPSICUM=true
WITHOUT_CASPER=true
WITHOUT_DEBUG_FILES=true
WITHOUT_DMAGENT=true
WITHOUT_DTRACE_TESTS=true
WITHOUT_EXAMPLES=true
WITHOUT_FINGER=true
WITHOUT_FLOPPY=true
WITHOUT_FREEBSD_UPDATE=true
WITHOUT_FTP=true
WITHOUT_GAMES=true
WITHOUT_GH_BC=true
WITHOUT_GOOGLETEST=true
WITHOUT_HAST=true
WITHOUT_HYPERV=true
WITHOUT_I4B=true
WITHOUT_INETD=true
WITHOUT_IPFILTER=true
WITHOUT_IPFW=true
WITHOUT_ISCSI=true
WITH_KERNEL_SYMBOLS=true
WITHOUT_KDUMP=true
WITHOUT_LDNS=true
WITHOUT_LDNS_UTILS=true
WITHOUT_LLDB=true
WITHOUT_LLVM_ASSERTIONS=true
WITHOUT_LPR=true
WITHOUT_MAIL=true
WITHOUT_MAILWRAPPER=true
WITHOUT_MLX5TOOL=true
WITHOUT_NDIS=true
WITHOUT_NETGRAPH=true
WITHOUT_NETGRAPH_SUPPORT=true
WITHOUT_PPP=true
WITHOUT_PROFILE=true
WITH_REPRODUCIBLE_BUILD=true
WITHOUT_SENDMAIL=true
WITH_SORT_THREADS=true
WITHOUT_SOURCELESS=true
WITHOUT_TALK=true
WITHOUT_TCP_WRAPPERS=true
WITHOUT_TELNET=true
WITHOUT_TESTS=true
WITHOUT_TESTS_SUPPORT=true
WITHOUT_TFTP=true
WITHOUT_UNBOUND=true
WITHOUT_VI=true
WITHOUT_WARNS=true
iZEN ★★★★★
()
Ответ на: комментарий от firkax

И какие ошибки?

Например вот: /usr/src/contrib/ldns/ldns/dane.h:31:10: fatal error: ‘openssl/ssl.h’ file not found #include <openssl/ssl.h> ^~~~~~~~~~~~~~~ 1 error generated. *** Error code 1

Вообще вполне возможно что 11.2 не будет из 13.1 собираться.

Я и не собирал 11.2 из 13.1. Я собирал 11.2 из 11.2.

Это уже с настроенным src.conf или дефолтное?

С настроенным.

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

Эта версия не поддерживается с начала 2020-го. Зачем выкопал труп?

Когда начал копать эту тему на дворе был 2019 год. Что значит не поддерживается? Почему у меня тогда получилось #svnlite checkout https://svn.freebsd.org/base/releng/11.2 /usr/src?

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

Почему у меня тогда получилось #svnlite

А почему бы у тебя не получилось? Можешь выкачать любую ветку вплоть до 4-й. Только работоспособность ее никто не гарантирует.

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

Тут смотри колонку EoL.

Всё равно непонятно. На момент 2019 года всё работало. Сейчас 11.2 не поддерживается, но по каким причинам должно перестать работать? То есть не собираться из /usr/src?

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

А почему бы у тебя не получилось? Можешь выкачать любую ветку вплоть до 4-й. Только работоспособность ее никто не гарантирует.

А как раньше гарантировали? Я так понимаю, когда поддерживали, то при возникновении ошибки - её исправляли, а сейчас никто не будет это делать? В этом смысл термина «не поддерживается»?

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

Объясни, почему тебе важна именно 11.2?

Потому что на 11.2 у меня всё было настроено. В 2019-м выкачал. Начал модифицировать и собирать-пересобирать. Всё пересобиралось. Сейчас же необходимо всё делать по-новой.

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

На момент 2019 года всё работало.

Выше уже написали. Попробуй ее сбилдить в системе 11.x. Поскольку это уже EoL, билд этой ветки на более новой версии сисемы и все возникающие ошибки никто не фиксит.

iron ★★★★★
()