Автор Тема: Помогите собрать systemd из исходников.  (Прочитано 2613 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн CoolAller

В общем есть проблема с systemd из реп, проблема описана в этой теме. Поэтому нужно собрать deb пакет из исходников, предварительно добавив туда пару строк кода.
Качаю исходные тексты: apt-get source systemd, получаю:
systemd_215.orig.tar.xz
systemd_215-17+deb8u2.debian.tar.xz
systemd_215-17+deb8u2.dsc

Нужный файл для правки содержится в systemd-215, правлю, потом запускаю ./configure, сначала он плевался на отсутствие пакетов python-lxml и gperf, потом после их установки выдал вот это:

checking for PYTHON_DEVEL... no
checking for PYTHON_DEVEL... no
checking for sphinx-build-2.7... no
checking for sphinx-build... no
checking for library containing dlsym... -ldl
checking sys/capability.h usability... no
checking sys/capability.h presence... no
checking for sys/capability.h... no
configure: error: *** POSIX caps headers not found
Может кто-то помочь?
« Последнее редактирование: 17 Января 2016, 04:12:13 от CoolAller »
 

Оффлайн yoric

Re: Помогите собрать systemd из исходников.
« Ответ #1 : 16 Января 2016, 11:06:46 »
libcap-dev стоит? И учитесь пользоваться apt-file
apt-file update
apt-file find sys/capability.h
 

Yrii

  • Гость
Re: Помогите собрать systemd из исходников.
« Ответ #2 : 16 Января 2016, 13:05:33 »
CoolAller, Собственно я собрал, для amd64. Если всё же не получиться собрать - пиши, залью свои пакеты.
apt-get source systemd
cd systemd-215/
apt-get build-dep systemd
редактируем src/login/pam_systemd.c
dch --bin-nmu -p
debuild -b -uc -us
всё.
Естественно всё это лучше делать в chroot/pbuilder.

Cообщение объединено 16 Января 2016, 13:07:50
п.с. я думаю надо перенести тему в раздел "Разработка" ибо:
Цитировать
Раздел для разработчиков и всего, что связано с программированием, сборкой пакетов и тестированием.
« Последнее редактирование: 16 Января 2016, 13:07:50 от Yrii »
 

Оффлайн CoolAller

Re: Помогите собрать systemd из исходников.
« Ответ #3 : 16 Января 2016, 15:43:20 »
apt-file find sys/capability.h
Это понятно, но что делать с "checking for PYTHON_DEVEL... no", просто игнорировать?

Yrii,если не трудно, пожалуйста залейте ваш пакет куда-нибудь, я позже попробую еще раз собрать.
« Последнее редактирование: 16 Января 2016, 15:47:12 от CoolAller »
 

Yrii

  • Гость
Re: Помогите собрать systemd из исходников.
« Ответ #4 : 16 Января 2016, 16:02:15 »
https://yadi.sk/d/IAelonFqn78Nb
Т.к. у меня этот баг не проявляется ибо у меня другое DE, то сами пакеты я не ставил.
« Последнее редактирование: 16 Января 2016, 16:04:20 от Yrii »
 

Оффлайн yoric

Re: Помогите собрать systemd из исходников.
« Ответ #5 : 16 Января 2016, 19:04:12 »
Это понятно, но что делать с "checking for PYTHON_DEVEL... no", просто игнорировать?
Если получится, можно и проигнорировать. Поэтапно устраняйте ошибки. А дальше проба покажет.
 

Оффлайн CoolAller

Re: Помогите собрать systemd из исходников.
« Ответ #6 : 16 Января 2016, 22:26:37 »
Yrii, объясните пожалуйста как правильно собирать пакеты, я обычно запускаю configure, мониторю ошибки и по возможности их устраняю, потом запускаю make, в вашей инструкции выше вы опустили эти шаги, поэтому я не совсем понял как правильно собирать deb пакеты из исходных текстов. Или команда debuild все это сама делает? Еще хотелось бы узнать, что делает команда dch --bin-nmu -p ? Поясните плиз. Еще один момент, собрал по вашей инструкции в процессе появлялись какие-то предупреждения ошибки но все же как-то собралось, собственно возникает вопрос есть ли шанс как-то собрать без этих ошибок? Можете пояснить как лучше собрать в chroot/pbuilder?
PS. Качал ваши пакеты, там другая версия, у вас наверно testing?

Не знаю правильно ли я делаю или нет, но я обычно делаю chroot так:
Создаю каталог:
# mkdir /mnt/chroot
Монтирую dev, proc и sys:
# mount --bind /dev /mnt/chroot/dev
# mount --bind /proc /mnt/chroot/proc
# mount --bind /proc /mnt/chroot/sys
Копирую исходный текст пакета в  /mnt/chroot/tmp
После захожу в chroot:
# chroot /mnt/chroot
« Последнее редактирование: 16 Января 2016, 23:13:51 от CoolAller »
 

Yrii

  • Гость
Re: Помогите собрать systemd из исходников.
« Ответ #7 : 16 Января 2016, 23:13:40 »
Скачиваем исходный код, распаковываем и накладываем патчи (это всё автоматически делается):
apt-get source systemd

Переходим в папку:
cd systemd-215/

Устанавливаем все пакеты, необходимые для сборки данной версии:
apt-get build-dep systemd

Редактируем src/login/pam_systemd.c

Изменяем changelog и версию:
-p это чтоб каталог не переименовывался;
--bin-nmu это я добавил "номер пересборки", но можно использовать другие варианты -i или -l "префикс".
Главное чтоб версия была больше, иначе придется делать hold на пакет, что не желательно ибо можно упустить возможное обновление пакета из оф. репозитория
dch --bin-nmu -p

Собираем пакет и проверяем его с помощью lintian:
debuild -b -uc -us

В данном случае .configure не надо делать, это делает debian/rules
Там же, если надо, меняются опции configure.

Цитировать
Еще один момент, собрал по вашей инструкции в процессе появлялись какие-то предупреждения ошибки но все же как-то собралось, собственно возникает вопрос есть ли шанс как-то собрать без этих ошибок?
Предупреждения и "ошибки" могут появятся, но это "нормально". Главное, что собрался пакет :-)

Цитировать
Качал ваши пакеты, там другая версия, у вас наверно testing?
Нет, stable, внимательно сравните. Там версия такая же только добавилось +b1.

Цитировать
Можете пояснить как лучше собрать в chroot/pbuilder?
Я собираю в pbuilder ибо так получается, образно говоря, всегда новое и чистое окружение.
Т.е. ты зашел в образ pbuilder - сделал дело - вышел - образ вернулся в первоначальное состояние. (ну, если не использовать соответствующую опцию для сохранения результата)

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

Почитать:
Руководство начинающего разработчика Debian:
На сайте: https://www.debian.org/doc/manuals/maint-guide/
Можно скачать pdf: https://www.debian.org/doc/manuals/maint-guide/maint-guide.ru.pdf
Или поставить пакет maint-guide-ru и тогда в системе будет pdf, epub и html версия

Введение в создание пакетов Debian:
Можно скачать pdf: https://www.debian.org/doc/manuals/packaging-tutorial/packaging-tutorial.ru.pdf
Или поставить пакет packaging-tutorial
« Последнее редактирование: 16 Января 2016, 23:18:24 от Yrii »
 
Пользователи, которые поблагодарили этот пост: CoolAller

Оффлайн CoolAller

Re: Помогите собрать systemd из исходников.
« Ответ #8 : 16 Января 2016, 23:18:37 »
Большое спасибо за развернутый ответ!

Я собираю в pbuilder ибо так получается, образно говоря, всегда новое и чистое окружение.
Можно об этом подробнее? Коротко о том как создать, можно просто команды накидать. Я позже tutorial почитаю, спасибо за ссылки, сейчас хотелось бы просто пакеты создать.



Cообщение объединено 16 Января 2016, 23:24:53
Там версия такая же только добавилось +b1.
Я просто хотел установить только один пакет systemd, а установщик рапортует о том, что в системе установлены пакеты systemd без +b1 и отказывается устанавливать пакет, обновлять все пакеты я пока не стал. Почему вообще появилось это +b1? Я собрал по вашей инструкции выше, у меня собралось без +b1, с чем это связано?
« Последнее редактирование: 16 Января 2016, 23:28:13 от CoolAller »
 

Yrii

  • Гость
Re: Помогите собрать systemd из исходников.
« Ответ #9 : 16 Января 2016, 23:29:14 »
Устанавливаем pbuilder. Для удобства прописываем его в sudo ибо он работает от root (это один из его минусов).

Создаем/редактируем файл конфигурации /etc/pbuilderrc (или /root/.pbuilderrc).
Пример конфигурационного файла есть тут: /usr/share/pbuilder/pbuilderrc
Он может отработать и без этого файла, но лучше создать...

Далее опишу без доп. возможностей/опций. Просто минимальный образ jessie.

Создаем/настраиваем базовый архив, который будет содержать наше CHROOT окружение:
sudo pbuilder create

Результат мы найдем тут (по умолчанию):
/var/cache/pbuilder/base.tgz

Если надо зайти в образ (изменения не сохраняются):
sudo pbuilder --login

Если надо сделать изменения в образе и сохранить, то добавить опцию: --save-after-login

Выйти из окружения - просто набрать exit.

Когда мы заходим в образ, то создается временная директория (образ распаковывается).
В эту папку можно копировать свои файлы, которые будут доступны в CHROOT окружении.
/var/cache/pbuilder/build/$Номер/<Тут среда chroot debian>

Воспользуйся поиском по этому форуме. Найдешь много инфы.

Cообщение объединено 16 Января 2016, 23:35:59
Цитировать
Я просто хотел установить только один пакет systemd, а установщик рапортует о том, что в системе установлены пакеты systemd без +b1 и отказывается устанавливать пакет, обновлять все пакеты я пока не стал.
все правильно ибо пересобрался весь systemd и в зависимостях там пакеты с +b1

Цитировать
Почему вообще появилось это +b1?
это из-за dch --bin-nmu, в принципе, можно dch не использовать (это просто я по привычки добавил) или использовать др. опции

Цитировать
Я собрал по вашей инструкции выше, у меня собралось без +b1, с чем это связано?
При использовании dch надо "создать"/сохранить файл. Иначе версия не поменяется.
« Последнее редактирование: 16 Января 2016, 23:41:59 от Yrii »
 
Пользователи, которые поблагодарили этот пост: CoolAller

Оффлайн CoolAller

Re: Помогите собрать systemd из исходников.
« Ответ #10 : 17 Января 2016, 04:15:17 »
Yrii, Большое спасибо!  :)
 

Теги:
 

[РЕШЕНО]помогите плиз решить проблему с зависимостями.

Автор user~21

Ответов: 2
Просмотров: 3352
Последний ответ 07 Декабря 2011, 21:52:19
от user~21
Перестал загружаться Debian9. Помогите, пожалуйста!

Автор sergeySel

Ответов: 10
Просмотров: 2501
Последний ответ 16 Апреля 2019, 16:08:34
от ferum
Помогите с меню open-box

Автор mightyraven

Ответов: 5
Просмотров: 2065
Последний ответ 24 Мая 2015, 07:27:02
от mightyraven
Помогите разобраться с репозиториями

Автор DruKot

Ответов: 5
Просмотров: 1999
Последний ответ 17 Августа 2012, 10:11:15
от Brainey
Помогите,пожалуйста,не стартует система.

Автор johncompvilton

Ответов: 3
Просмотров: 1710
Последний ответ 21 Марта 2019, 08:24:07
от lenin