opensuse: сборка пакетов

openSUSE, SUSE Linux Enterprise

Модератор: Модераторы разделов

storm2005
Сообщения: 136

opensuse: сборка пакетов

Сообщение storm2005 »

Есть пара вопросов по софту в сюзе.
Допустим мне надо пересобрать пару-тройку пакетов и установить их на пару-тройку серверов. Что за пакеты? Например, mariadb или squid (kerberos+ntlm). Какой у этой задачи Best practice?

Меня интересует прежде всего следующее.
1. Как собирать? Для этого лучше испрользовать отдельную машинку, например, виртуалку или достаточно собирать на своем рабочем компе под своей учеткой как я делал вот тут? Надо ли использовать chroot или какое-то иное окружение?
Как ускорить процесс сборки? Я встречал в инете совет внести некоторые директивы в файл ~/.rpmmacros с таким содержимым:

Код: Выделить всё

%__make /usr/bin/make -j 3

Но это как-то не повлияло при пересборке той же mariadb. Я видел, что загружено лишь одно ядро. Также пробовал такую директиву добавить в файл ~/.rpmmacros

Код: Выделить всё

%_smp_mflags -j3

Также без результата.

В итоге сейчас в этом файле

Код: Выделить всё

cat ~/.rpmmacros
%_smp_mflags -j3
%__make /usr/bin/make -j 3

Но все так же грузится лишь одно ядро.

2. Как распростанять эти пакеты на сервера? Стоит ли сделать локальный репозиторий или есть какие-то иные варианты?
3. Как обновлять? Например, если мы сделали локальный репо, то просто закидывать туда новые пакеты по типу package_v10, package_v11, ... Или старые удалять, а новые добавлять? А как обновить софт на серверах - zypper up?
4. Имеет ли смысл юзать obs или что-то еще? Или для моей задачи локальная сборка - лучший вариант?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21279
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: opensuse: сборка пакетов

Сообщение Bizdelnick »

storm2005 писал(а):
28.11.2014 20:43
Как ускорить процесс сборки? Я встречал в инете совет внести некоторые директивы в файл ~/.rpmmacros с таким содержимым:

Код: Выделить всё

%__make /usr/bin/make -j 3

Но это как-то не повлияло при пересборке той же mariadb. Я видел, что загружено лишь одно ядро. Также пробовал такую директиву добавить в файл ~/.rpmmacros

Код: Выделить всё

%_smp_mflags -j3

Также без результата.

Не надо действовать методом тыка, тут всё достаточно просто для понимания. Для многопоточной сборки надо передать make опцию -j <число параллельных задач>. В разных rpm-дистрибутивах это принято делать по-разному, поэтому приведённые методы в suse и не сработали. Как надо делать там - описано в документации: аргумент для опции -j берётся из макроса %make_jobs, соответственно его и надо задать. В том, что он используется, надо убедиться, заглянув в спек (а в случае пакета mariadb - в файл build.inc):

Код: Выделить всё

    make %{?jobs:-j%jobs}
Фиг вам, майнтейнер почему-то вместо него использует макрос %jobs. Раз наблюдаются разброд и шатания, определять макрос глобально смысла не имеет, лучше это сделать непосредственно при сборке: rpmbuild --define='jobs 3' mariadb.spec. Не лишним будет и посмотреть, какие макросы уже определены: rpmbuild --showrc | grep jobs.

storm2005 писал(а):
28.11.2014 20:43
Имеет ли смысл юзать obs или что-то еще?

Однозначно - да.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21279
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: opensuse: сборка пакетов

Сообщение Bizdelnick »

storm2005 писал(а):
28.11.2014 20:43
Для этого лучше испрользовать отдельную машинку, например, виртуалку или достаточно собирать на своем рабочем компе под своей учеткой как я делал вот тут? Надо ли использовать chroot или какое-то иное окружение?

На своей машине удобно собирать, если там установлена нужная версия системы, больших изменений в спек не вносится, и не жалко поставить все сборочные зависимости. Если хотя бы одно из этих условий не выполняется, то лучше использовать уже упоминавшийся скрипт build.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
storm2005
Сообщения: 136

Re: opensuse: сборка пакетов

Сообщение storm2005 »

Bizdelnick писал(а):
28.11.2014 22:34
storm2005 писал(а):
28.11.2014 20:43
Для этого лучше испрользовать отдельную машинку, например, виртуалку или достаточно собирать на своем рабочем компе под своей учеткой как я делал вот тут? Надо ли использовать chroot или какое-то иное окружение?

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

Нет какой-нибудь документации аля step by step по использованию build скрпта? А то со старта не совсем очевидно что да как.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21279
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: opensuse: сборка пакетов

Сообщение Bizdelnick »

Давно им не пользовался...
Сейчас посмотрел - в документации opensuse рекомендуют вместо него использовать osc build.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: