Автор Тема: Учимся собирать пакеты из исходников  (Прочитано 12216 раз)

ms1984

  • Гость
почитаешь и понимаешь, что потребительствовать проще )) по гиту тут проходил https://githowto.com/ru узнаю команды.

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Так же у меня пока не укладывается - в рулесах прописано что надо в архив делать (в прошлом разе в рулесах был tar в этом tar.bz.2), но в команде на сборку я нигде не видел указания создавать архив, т.е. он /архив создается в соответсвии с каким - то конфигом -если так то прописывать в команде это не надо.

.gear/rules есть последовательность действий, которые должен сделать gear, чтобы собрать srpm-пакет. Мы gear указываем в какой тип архива запаковать исходники и какие ещё файлы скопировать. Сборка srpm первый этап сборки через gear.

ms1984

  • Гость
есть последовательность действий

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

Нет. пока пороюсь почитаю. погляжу.полистаю git. разберусь с организацией папок почитаю еще вики.
грудно больно.
« Последнее редактирование: 16.07.2016 15:08:25 от ms1984 »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
может где то есть схематичный алгоритм в виде квадратиков кубиков в виде схемы алгоритма с расшифровками? чтобы видеть целую картину а не части пазла? т.е. имею ввиду от большего к малому, а не наоборот?спасибо.

Этапы сборки пакета (техническая сторона):
1. Сборка пакета исходника srpm
2. Передача его на сборку hasher
3. hasher устанавливает srpm-пакет в ~/hasher/chroot/usr/src/RPM/
4. в hasher устанавливаются все зависимости, прописанные в поле buildrequires спек-файла
5. hasher выполняет команду rpmbuild -ba спек
6. этапы сборки rpm-пакета:
6.1 Выполняется секция %setup, в которой подготавливаются исходники к сборке, накладываются патчи в ~/hasher/chroot/usr/src/RPM/BUILD/имя_каталога_исходников
6.2 Выполняется секция %build, в которой производится конфигурирование и сборка исходников
6.3 Выполняется секция %install, в которой производится установка программы в ~/hasher/chroot/usr/src/tmp/имя_пакета-buildroot/
6.4 Выполняется секция %files, в которой файлы из ~/hasher/chroot/usr/src/tmp/имя_пакета-buildroot/ распределяются по пакетам.
7. Проверки
8. Сборка итогового srpm и rpm-пакетов, и копирование их в каталог ~/hasher-repo/репозиторий/архитектура.

Вот коротко, что происходит во время сборки, и что содержит в себе лог сборки.
Действия же майнтейнера описал выше.

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Думаю, лучше всего сделать сборку с нуля какого-нибудь простенького пакета. Предлагайте.

ms1984

  • Гость
может добьем задачу с gcdemu?
Я по нему вроде пролез везде. И начитался по нему много в gitk.

 и момент - текущее действие  с gcdemu это внесение изменений верно? (ну естественно фиктивно как я понимаю)

вот я тормознулся на нем на команде по сборке.

для сборки актуальна будет команда:

gear -v --hasher -- hsh --lazy-cleanup --apt-config=$HOME/.apt/sisyphus-64-apt.conf --no-sisyphus-check=packager,gpg,changelog --target=x86_64 --repo=$HOME/hasher-repo/sisyphus -v ~/hasher

как узнать верна ли она? просто исполнить ее и посмотреть ход выполнения?

и потом уже пересборка если будут проблемы?

gear --hasher -- hsh-rebuild --no-sisyphus-check=packager,gpg,changelog --repo=$HOME/hasher-repo/sisyphus -v  ~/hasher

хотя чего я туплю.. у меня в руках инстументы есть. стоит попробовать.
попробуем? а потом если что по рукам постучите мне? ;)
« Последнее редактирование: 16.07.2016 15:20:44 от ms1984 »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
для сборки актуальна будет команда:

gear -v --hasher -- hsh --lazy-cleanup --apt-config=$HOME/.apt/sisyphus-64-apt.conf --no-sisyphus-check=packager,gpg,changelog --target=x86_64 --repo=$HOME/hasher-repo/sisyphus -v ~/hasher

Команда на сборку не зависит от gear-репозитория, она зависит от того под какой репозиторий и какую архитектуру вы её собираете. Если вы хотите собрать для Сизифа под x86_64, то да.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Думаю, лучше всего сделать сборку с нуля какого-нибудь простенького пакета. Предлагайте.
http://git.altlinux.org/gears/h/hello.git

ms1984

  • Гость
Команда на сборку не зависит от gear-репозитория, она зависит от того под какой репозиторий и какую архитектуру вы её собираете. Если вы хотите собрать для Сизифа под x86_64, то да.

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

я сейчас пособираю, что нить, потом попробую разгрести. определюсь с подачей команд для терминала чтобы я его понял, а он меня и поглядим хорошо? и потом уже поглядим. у меня осмысление проходит, но тау задержки большое
догоню
« Последнее редактирование: 16.07.2016 15:26:27 от ms1984 »

ms1984

  • Гость
Команда на сборку не зависит от gear-репозитория, она зависит от того под какой репозиторий и какую архитектуру вы её собираете. Если вы хотите собрать для Сизифа под x86_64, то да.

соответственно в этой команде играться можно следующими настроками:

gear -v --hasher -- hsh --lazy-cleanup --apt-config=$HOME/.apt/sisyphus-64-apt.conf --no-sisyphus-check=packager,gpg,changelog --target=x86_64 --repo=$HOME/hasher-repo/sisyphus -v ~/hasher
 сборка для сифиза 32:
gear -v --hasher -- hsh --lazy-cleanup --apt-config=$HOME/.apt/sisyphus-32-apt.conf --no-sisyphus-check=packager,gpg,changelog --target=i586 --repo=$HOME/hasher-repo/sisyphus -v  ~/hasher сборка не для сифиза, но для версии Р7:
gear -v --hasher -- hsh --lazy-cleanup --apt-config=$HOME/.apt/p7-64-apt.conf --no-sisyphus-check=packager,gpg,changelog --target=x86_64 --repo=$HOME/hasher-repo/p7 -v  ~/hasher сборка не для сифиза, но для Р7 32:
gear -v --hasher -- hsh --lazy-cleanup --apt-config=$HOME/.apt/p7-32-apt.conf --no-sisyphus-check=packager,gpg,changelog --target=i586 --repo=$HOME/hasher-repo/p7 -v  ~/hasher
Если не буду указывать цель сборки (архитектуру) по умолчанию соберется для архитектуры моей системы.
Сифиз - на вики поглядел прям ужастики млин.

Вопрос зачем собирать для сифиза и зачем собирать не для сифиза?
Архитектуры понятны.
Р7 - это версия чего-то? Р8 - аналогично версия системы или ядра ядро всегда обозначается 4.х.х.х

команды просто взял из шпоры ваши. распечатал шпору висит уже пару часов передо мной смотрю гляжу думаю

Для Р8 помню делали. просто менять буковки.
Сборки не для сифиза и сборки для сифиза. ....

т.е. как бы так рисуется. ввожу данные команды в каталоге  gcdemu: = так сказать буду собирать все по максимуму и смотреть что ж у меня выйдет на выходе.
 
« Последнее редактирование: 16.07.2016 15:47:36 от ms1984 »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Р7 - это версия чего-то? Р8 - аналогично версия системы или ядра ядро всегда обозначается 4.х.х.х

p7 - это репозиторий p7
p8 - это репозиторий p8
sisyphus - это репозиторий Сизифа

Пока не решитесь стать майнтейнером, вам актуально делать сборку только для используемого вами репозитория, т.е. для p8 и для своей архитектуры x86_64. А майнтейнеры на благо сообщества работают, собирают под разные архитектуры и репозитории, им эти команды знать необходимо.

ms1984

  • Гость
вам актуально делать сборку только для используемого вами репозитория, т.е. для p8

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

представить себе не можете какое счатье было когда gitk завелся, а то когда про корневой каталог объясняли мне уж совсем стыдно стало.... )))))
« Последнее редактирование: 16.07.2016 15:54:08 от ms1984 »

ms1984

  • Гость
и так погнали: как грят важен сам процесс....

[abra@comp-core-i7-4700mq-070d27 ~]$ gear -v --hasher -- hsh --lazy-cleanup --apt-config=$HOME/.apt/p8-64-apt.conf --no-sisyphus-check=packager,gpg,changelog --target=x86_64 --repo=$HOME/hasher-repo/p7 -v  ~/hasher

Спойлер
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
[abra@comp-core-i7-4700mq-070d27 ~]$
грит я не в той директории и он походу прав.

Спойлер
[abra@comp-core-i7-4700mq-070d27 ~]$ ~/gear
bash: /home/abra/gear: является директорией
[abra@comp-core-i7-4700mq-070d27 ~]$ cd gear
[abra@comp-core-i7-4700mq-070d27 gear]$ ls -a
.  ..  command_gear.txt  deadbeef  gcdemu  hasher-init.sh  hsh-buildreq.sh
[abra@comp-core-i7-4700mq-070d27 gear]$ cd gcdemu
[abra@comp-core-i7-4700mq-070d27 gcdemu]$

Ввожу команду на исполнение указанную выше - терминал мне говорит что команда не найдена = либо не установлено что-то (как было с gitk либо ошибка в команде)
[abra@comp-core-i7-4700mq-070d27 ~]$ gear -v --hasher -- hsh --lazy-cleanup --apt-config=$HOME/.apt/p8-64-apt.conf --no-sisyphus-check=packager,gpg,changelog --target=x86_64 --repo=$HOME/hasher-repo/p8 -v  ~/hasher

ошибку нашел.поправил на р8.
далее. мазута пошла. буковки побежали...
буковок много прикладываю в архиве. все отлично.все собралось.

Архив пакет собранный кидается сюда - /home/abra/hasher-repo/p8/x86_64/RPMS.hasher/gcdemu-3.0.1-alt2.noarch.rpm  - нашел согласно команде сохраняется ($HOME/hasher-repo/p8 -v)  его там.
 и еще один нашел тут /home/abra/hasher-repo/p8/SRPMS.hasher/gcdemu-3.0.1-alt2.src.rpm  сразу вопрос в чем их отличие и вижу отличие - бинарный пакет, а rpm готовый к употреблению!
« Последнее редактирование: 16.07.2016 16:36:31 от ms1984 »

ms1984

  • Гость
Теперь аналогично проверяю для 32битной архитектуры: только тут уже помню что команду надо давать находясь в том каталоге который собираем

gear -v --hasher -- hsh --lazy-cleanup --apt-config=$HOME/.apt/sisyphus-32-apt.conf --no-sisyphus-check=packager,gpg,changelog --target=i586 --repo=$HOME/hasher-repo/sisyphus -v  ~/hasher
« Последнее редактирование: 16.07.2016 16:26:14 от ms1984 »

ms1984

  • Гость
Супер. Я доволен.

Теперь у меня вопрос : поставленная задача как я понимаю
  Вот вам и задание склонировать gear-репозиторий пакета gcdemu  выполнена?

gear репозиторий пакета был склонирован успешно и еще вдобавок был собран!

Верно?
Если да прошу еще аналогичный пакет для клонирования и сборки!
Повторение мать учения в данном случае, а никак не заикания (повторение! - мать заикания... (с))

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

P.S. как лабораторная работа в институте гы.. кайф
« Последнее редактирование: 16.07.2016 16:45:59 от ms1984 »