Size: 1906
Comment:
|
Size: 12323
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 6: | Line 6: |
* Спецкурс проходит по средам в 18:00 в аудитории П-12. Первое занятие — 30 сентября | * Спецкурс проходит по средам в 18:00 в аудитории П-12. Первая лекция — 30 сентября |
Line 8: | Line 8: |
== План курса == * Теоретическая часть вопроса: процесс подготовки дистрибутива, жизненный цикла хранилища пакетов, что такое пакет, что такое packging policy, что нужно для сборки пакета и внесения его в хранилище * Обзор имеющихся технологий сборки пакетов, применяющихся в различных хранилищах: Сизиф, хранилища дистрибутивов Debian, Fedora, возможно, Arch, Gentoo, SuSE. * Руководство по сборке пакетов в Сизиф == Конспекты лекций == 1.#0 [[/Conspects/01|Организационное собрание, посвящённое выборе темы лекций]] ##== Предложения по темам к рассмотрению на лекциях == ##== Материалы == ##== Ссылки == |
<<Include(/CoursePlan, "План курса", 2, from="==$")>> == Конспекты и планы лекций == 1.#0 [[/Conspects/00|Организационное собрание, посвящённое выборе темы лекций]] ([[http://esyr.org/lections/audio/uneex_2009_winter/uneex_09_09_23.ogg|аудиозапись]]) 1. [[/01|Дистрибутив ОС на основе свободного ПО: принципы формирования]] ([[/Conspects/01|конспект]]) ([[http://esyr.org/lections/audio/uneex_2009_winter/uneex_09_09_30.ogg|аудиозапись]]) 1. [[/02|Пакет как составная часть дистрибутива: требования и особенности; понятие сборки пакета]] ([[/Conspects/02|конспект]]) ([[http://esyr.org/lections/audio/uneex_2009_winter/uneex_09_10_07_beginning.ogg|аудиозапись 0]], [[http://esyr.org/lections/audio/uneex_2009_winter/uneex_09_10_07.ogg|аудиозапись 1]]) 1. [[/03|Сборка пакета из исходных текстов; upstream, spec]] ([[/Conspects/03|конспект]]) ([[http://esyr.org/lections/audio/uneex_2009_winter/uneex_09_10_14.ogg|аудиозапись]]) 1. [[/04|Сопровождающий (maintainer) пакета]] ([[/Conspects/04|конспект]]) ([[http://esyr.org/lections/audio/uneex_2009_winter/uneex_09_10_21.ogg|аудиозапись]]) 1. [[/05|Изолированная среда сборки (введение)]] ([[/Conspects/05|конспект]]) ([[http://esyr.org/lections/audio/uneex_2009_winter/uneex_09_10_28.ogg|аудиозапись]]) 1. [[/06|Лекция Александра Герасёва о пакетах в GNU Debian]] ([[/Conspects/06|конспект]]) ([[http://esyr.org/lections/audio/uneex_2009_winter/uneex_09_11_11.manmachine.ogg|аудиозапись 0]], [[http://esyr.org/lections/audio/uneex_2009_winter/uneex_09_11_11.ogg|аудиозапись 1]]) 1. [[/07|Работа с upstream, Составление спецификаций]] ([[/Conspects/07|конспект]]) 1. [[/08|Составление спецификаций - II, Исправление upstream (заплатки), Помещение в хранилище, Обратная связь с upstream и сообщения об ошибках]] ([[/Conspects/08|конспект]]) ([[/Video/08|видеозапись]]) ---- 1. {*} http://www.altlinux.org/Spec 1. Работа с upstream 1. Tarballs 1. VCS, ревизии и теги 1. Составление спецификаций 1. Что должно быть в spec-файле, правила оформления 1. {*} 1. Составление спецификаций - II 1. Коротко о spec-файле 1. Борьба с версиями 1. Борьба с путями 1. Борьба со сборочными зависимостями 1. Макросы 1. Исправление upstream (заплатки) 1. `patch` и `diff` 1. Проталкивание заплаток в upstream 1. Помещение в хранилище 1. src.rpm 1. Электронная подпись участника Team и робота-сборщика 1. hasher и локальное хранилище 1. Обратная связь с upstream и сообщения об ошибках 1. <<PassportLink(HowTo_SmartQuestions, Direct=True)>> 1. Как правильно отвечать на вопросы 1. Багзилла как пример BTS * Product, component, priority, severity, platform, summary, full description * патчи и обсуждения * зависимости и дубли * статус 1. {*} Git, Gear и git.alt 1.#0 Повторение пройденного: что делает сопровождающий: 1.#0 Получить исходники 1. Развернуть сборочную среду 1. Создать/обновить спецификацию 1. Собрать пакет 1. Оттестировать пакет 1. Поместить пакет в хранилище 1. [[http://ru.wikipedia.org/wiki/Git|Git]] * Ссылки * http://www.altlinux.org/Git * http://progit.org/book/ru/ * http://jenyay.net/Programming/Git * и т. д. * Что надо знать: * VCS * Распределённая VCS: публикация и слияние вместо совместного доступа * Ветки и теги 1. [[http://www.altlinux.org/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:Gear|Gear]] * [[http://www.altlinux.org/%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_gear|Хранение исходного пакета в git-архиве]] * `.gear/rules`: [[http://docs.altlinux.org/manpages/gear-rules.5.html|есть документация!]] * copy:, tar:, name=, base=, @name@, @version@, @release@ * Сборка пакета при помощи gear * `gear-commit` * `gear --hasher -- hsh --apt-config=/home/george/.apt/x86_64/Sisyphus/config --lazy` * `gear-update` 1. [[http://git.altlinux.org|git.alt]] * [[http://www.altlinux.org/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:Git.alt|информация на сайте altlinux.org]] * Хранение git * ssh git.alt: {{{ $ ssh git.alt help Available commands: help charset <path to git repository> [<charset>] clone <path to git repository> [<path to directory>] default-branch <path to git repository> [<branch>] find-package <pattern> init-db <path to directory> ls [<path to directory>] mv-db <path to source directory> <path to destination directory> quota repack <path to git repository> [<value>] rm-db <path to git repository> task {--help|ls|show|new|add|delsub|run|share|approve|rm} ... build [-b <binary_repository_name>] <gear_repo_1> <gear_tag_1> ... acl {--help|<binary_repository_name> ...} }}} * Сборка из хранилища {{{ $ git push && gear-create-tag && git push origin --tags && ssh git.alt build `basename $PWD` `git describe` }}} * ACL: show check add/del replace leader nmu * Task, shared task 1. {*} 1. Полный цикл сборки пакета из upstream (раассказ) 1. Эффективные инструменты сопровождения пакетов: 1. Адаптация к системам разработки в upstream (autotools, *make и т. п.) 1. Адаптация к различным ЯП 1. Поиск зависимостей и сборочных зависимостей 1. Умолчания (триггеры, обязательные действия, пути) 1. Хранение исходных текстов и заплаток (git.alt, gear) 1. Совместная модификация пакета (git.alt, gear) 1. Автоматическая сборка (git.alt, git.alt) 1. Контроль качества (sisyphus-check, repocop, QA) 1. Полный цикл сборки пакета из upstream (практика) * hsh-useradd george; relogin * /etc/hasher-priv/system {{{ prefix=~:/tmp }}} * .hasher/config {{{ def_repo=$HOME/repo }}} * .gitconfig {{{ [user] email = george@altlinux.org name = Fr. Br. George }}} * nibbles: http://rpm.pbone.net/index.php3?stat=3&search=nibbles*src.rpm * {{{ george@arnor:~/git/nibbles> git init Initialized empty Git repository in /srv/git/nibbles/.git/ george@arnor:~/git/nibbles> gear-srpmimport ~/Downloads/nibbles-0.0.4-6.src.rpm george@arnor:~/git/nibbles> cleanup_spec nibbles.spec }}} * {{{ diff --git a/nibbles.spec b/nibbles.spec index 7b77bbb..69ffafe 100644 --- a/nibbles.spec +++ b/nibbles.spec @@ -1,8 +1,7 @@ -# $Revision: 1.13 $, $Date: 2002/02/15 22:40:04 $ Summary: NCurses based nibbles game Name: nibbles Version: 0.0.4 -Release: 6 +Release: alt1 License: GPL Vendor: Project Purple ( http://www.earth.li/projectpurple/ ) Group: Applications/Games @@ -25,7 +24,7 @@ ncurses one to learn how. %patch2 -p1 %build -%__make CFLAGS="%rpmcflags" LDFLAGS="%rpmldflags" DATADIR=%_datadir +make DATADIR=%_datadir %install install -d $RPM_BUILD_ROOT{%_bindir,%_datadir/games,/var/games} @@ -34,13 +33,11 @@ install nibbles $RPM_BUILD_ROOT%_bindir touch $RPM_BUILD_ROOT/var/games/nibbles.score cp -a nibbles.levels $RPM_BUILD_ROOT%_datadir/games -gzip -9nf README TODO HISTORY CREDITS example.nibblerc - %files %defattr(644,root,root,755) -%attr(2755,root,games) %_bindir/nibbles +%attr(2711,root,games) %_bindir/nibbles %attr(664,root,games) %config(noreplace) %verify(not size mtime md5) /var/games/nibbles %_datadir/games/nibbles.levels -%doc *.gz +%doc README TODO HISTORY CREDITS example.nibblerc %changelog }}} * {{{ diff --git a/nibbles.spec b/nibbles.spec index 5c09658..d9d9f99 100644 --- a/nibbles.spec +++ b/nibbles.spec @@ -10,7 +10,7 @@ Patch0: %name-Makefile.patch -Group: Applications/Games +Group: Games/Arcade Patch1: %name-window.patch Patch2: %name-score.patch Url: http://www.earth.li/projectpurple/progs/nibbles.html -BuildRequires: ncurses-devel >= 5.0 +Packager: Fr. Br. George <george@altlinux.ru> %description Nibbles is a remake of the classic Snake/Nibbles game in ncurses. I am }}} * {{{ george@arnor:~/git/nibbles> add_changelog -e "- Initial build from PLD" *spec }}} * {{{ george@arnor:~/git/nibbles> gear-commit -a }}} * {{{ george@arnor:~/git/nibbles> gear -v --hasher -- hsh --lazy |& tee ~/tmp/.log }}} * {{{ george@arnor:~/git/nibbles> hsh-install libncursesw-devel }}} * {{{ gear -v --hasher -- hsh-rebuild |& tee ~/tmp/.log }}} * {{{ diff --git a/nibbles-Makefile.patch b/nibbles-Makefile.patch index 7637e20..f4c1c84 100644 --- a/nibbles-Makefile.patch +++ b/nibbles-Makefile.patch @@ -22,7 +22,7 @@ diff -Naur nibbles-v0.0.4/Makefile nibbles-v0.0.4-patched/Makefile nibbles: $(OBJS) - $(CC) $(LIBS) $(OBJS) -o $@ -+ $(CC) $(LIBS) $(OBJS) $(LDFLAGS) -o $@ ++ $(CC) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ clean: rm -f *~ *.o nibbles }}} * {{{ george@arnor:~/git/nibbles> git commit -a --amend }}} * {{{ george@arnor:~/git/nibbles> find ~/hasher/chroot/usr/src/tmp/nibbles-buildroot }}} * {{{ george@arnor:~/git/nibbles> hsh-install rpm-utils }}} * {{{ george@arnor:~/git/nibbles> hsh-run buildreq "/usr/src/RPM/SPECS/nibbles.spec" }}} * {{{ george@arnor:~/git/nibbles> cp ~/hasher/chroot/usr/src/RPM/SPECS/* . }}} * {{{ george@arnor:~/git/nibbles> git commit -a --amend }}} * {{{ george@arnor:~/git/nibbles> gear -v --hasher -- hsh --lazy |& tee ~/tmp/.log }}} * /etc/apt/sources.list {{{ rpm file:/home/george/repo x86_64 hasher }}} * на git.alt * подпись,тег и прочее == Материалы == * [[attachment:uneex_autumn_2009_ad2_v2.pdf|Объявление о спецкурсе]] |
Информация о курсе
Лектор: Георгий Владимирович Курячий
- В течение курса возможно проведение практических занятий по сборке пакетов
- В конце курса будет экзамен
- Спецкурс проходит по средам в 18:00 в аудитории П-12. Первая лекция — 30 сентября
Лицам, не имеющим пропуск на факультет ВМК МГУ, рекомендуется на первую лекцию принести одну матовую фотографию 3×4 и паспортные данные для оформления пропуска.
План курса
« |
Возьми консервную банку, в нужных местах пробей дырочки, продень проволоку, загни концы... Теперь приделай к этому ручку, и аппарат готов!» |
© Даниил Хармс |
- Место пакета в дистрибутиве
- Дистрибутив ОС на основе свободного ПО: принципы формирования.
- Хранилище пакетов: назначение и жизненный цикл; изготовление дистрибутивов из хранилища
- Пакет как составная часть дистрибутива: требования и особенности; понятие сборки пакета.
- Сборка пакета из исходных текстов; upstream, spec
- Сопровождение пакета в составе хранилища
- социальная составляющая, роль сообщества и личности сопровождающего
- помещение стороннего ПО в хранилище: от upsrteam до binary package
- packaging policy: цели и задачи
почему хранилище — не дистрибутив: хранилище как инструмент разработки и сизифов труд
- Технологии, облегчающие сопровождение пакета (сопровождающему и сообществу)
- Частью даются ознакомительно, так как в будущем семестре планируется прочесть курс на схожую тему
- инструменты разработчика и их использование в процессе сопровождения
- изолированная сборка; автоматизация изолированной сборки
- входное тестирование пакета и контроль собираемости хранилища
- Сборка пакета в хранилище свободного ПО Sisyphus, пошагово
Конспекты и планы лекций
Организационное собрание, посвящённое выборе темы лекций (аудиозапись)
Дистрибутив ОС на основе свободного ПО: принципы формирования (конспект) (аудиозапись)
Пакет как составная часть дистрибутива: требования и особенности; понятие сборки пакета (конспект) (аудиозапись 0, аудиозапись 1)
Сборка пакета из исходных текстов; upstream, spec (конспект) (аудиозапись)
Изолированная среда сборки (введение) (конспект) (аудиозапись)
Лекция Александра Герасёва о пакетах в GNU Debian (конспект) (аудиозапись 0, аудиозапись 1)
Составление спецификаций - II, Исправление upstream (заплатки), Помещение в хранилище, Обратная связь с upstream и сообщения об ошибках (конспект) (видеозапись)
- Работа с upstream
- Tarballs
- VCS, ревизии и теги
- Составление спецификаций
- Что должно быть в spec-файле, правила оформления
- Работа с upstream
- Составление спецификаций - II
- Коротко о spec-файле
- Борьба с версиями
- Борьба с путями
- Борьба со сборочными зависимостями
- Макросы
- Исправление upstream (заплатки)
patch и diff
- Проталкивание заплаток в upstream
- Помещение в хранилище
- src.rpm
- Электронная подпись участника Team и робота-сборщика
- hasher и локальное хранилище
- Обратная связь с upstream и сообщения об ошибках
- Как правильно отвечать на вопросы
- Багзилла как пример BTS
- Product, component, priority, severity, platform, summary, full description
- патчи и обсуждения
- зависимости и дубли
- статус
- Составление спецификаций - II
Git, Gear и git.alt
- Повторение пройденного: что делает сопровождающий:
- Получить исходники
- Развернуть сборочную среду
- Создать/обновить спецификацию
- Собрать пакет
- Оттестировать пакет
- Поместить пакет в хранилище
- Ссылки
- Что надо знать:
- VCS
- Распределённая VCS: публикация и слияние вместо совместного доступа
- Ветки и теги
.gear/rules: есть документация!
- copy:, tar:, name=, base=, @name@, @version@, @release@
- Сборка пакета при помощи gear
gear-commit
gear --hasher -- hsh --apt-config=/home/george/.apt/x86_64/Sisyphus/config --lazy
gear-update
- Хранение git
- ssh git.alt:
$ ssh git.alt help Available commands: help charset <path to git repository> [<charset>] clone <path to git repository> [<path to directory>] default-branch <path to git repository> [<branch>] find-package <pattern> init-db <path to directory> ls [<path to directory>] mv-db <path to source directory> <path to destination directory> quota repack <path to git repository> [<value>] rm-db <path to git repository> task {--help|ls|show|new|add|delsub|run|share|approve|rm} ... build [-b <binary_repository_name>] <gear_repo_1> <gear_tag_1> ... acl {--help|<binary_repository_name> ...}
- Сборка из хранилища
$ git push && gear-create-tag && git push origin --tags && ssh git.alt build `basename $PWD` `git describe`
- ACL: show check add/del replace leader nmu
- Task, shared task
- Повторение пройденного: что делает сопровождающий:
- Полный цикл сборки пакета из upstream (раассказ)
- Эффективные инструменты сопровождения пакетов:
- Адаптация к системам разработки в upstream (autotools, *make и т. п.)
- Адаптация к различным ЯП
- Поиск зависимостей и сборочных зависимостей
- Умолчания (триггеры, обязательные действия, пути)
- Хранение исходных текстов и заплаток (git.alt, gear)
- Совместная модификация пакета (git.alt, gear)
- Автоматическая сборка (git.alt, git.alt)
- Контроль качества (sisyphus-check, repocop, QA)
- Полный цикл сборки пакета из upstream (практика)
- hsh-useradd george; relogin
- /etc/hasher-priv/system
prefix=~:/tmp
- .hasher/config
def_repo=$HOME/repo
- .gitconfig {{{ [user]
email = george@altlinux.org name = Fr. Br. George
nibbles: http://rpm.pbone.net/index.php3?stat=3&search=nibbles*src.rpm
george@arnor:~/git/nibbles> git init Initialized empty Git repository in /srv/git/nibbles/.git/ george@arnor:~/git/nibbles> gear-srpmimport ~/Downloads/nibbles-0.0.4-6.src.rpm george@arnor:~/git/nibbles> cleanup_spec nibbles.spec
diff --git a/nibbles.spec b/nibbles.spec index 7b77bbb..69ffafe 100644 --- a/nibbles.spec +++ b/nibbles.spec @@ -1,8 +1,7 @@ -# $Revision: 1.13 $, $Date: 2002/02/15 22:40:04 $ Summary: NCurses based nibbles game Name: nibbles Version: 0.0.4 -Release: 6 +Release: alt1 License: GPL Vendor: Project Purple ( http://www.earth.li/projectpurple/ ) Group: Applications/Games @@ -25,7 +24,7 @@ ncurses one to learn how. %patch2 -p1 %build -%__make CFLAGS="%rpmcflags" LDFLAGS="%rpmldflags" DATADIR=%_datadir +make DATADIR=%_datadir %install install -d $RPM_BUILD_ROOT{%_bindir,%_datadir/games,/var/games} @@ -34,13 +33,11 @@ install nibbles $RPM_BUILD_ROOT%_bindir touch $RPM_BUILD_ROOT/var/games/nibbles.score cp -a nibbles.levels $RPM_BUILD_ROOT%_datadir/games -gzip -9nf README TODO HISTORY CREDITS example.nibblerc - %files %defattr(644,root,root,755) -%attr(2755,root,games) %_bindir/nibbles +%attr(2711,root,games) %_bindir/nibbles %attr(664,root,games) %config(noreplace) %verify(not size mtime md5) /var/games/nibbles %_datadir/games/nibbles.levels -%doc *.gz +%doc README TODO HISTORY CREDITS example.nibblerc %changelog
diff --git a/nibbles.spec b/nibbles.spec index 5c09658..d9d9f99 100644 --- a/nibbles.spec +++ b/nibbles.spec @@ -10,7 +10,7 @@ Patch0: %name-Makefile.patch -Group: Applications/Games +Group: Games/Arcade Patch1: %name-window.patch Patch2: %name-score.patch Url: http://www.earth.li/projectpurple/progs/nibbles.html -BuildRequires: ncurses-devel >= 5.0 +Packager: Fr. Br. George <george@altlinux.ru> %description Nibbles is a remake of the classic Snake/Nibbles game in ncurses. I am
george@arnor:~/git/nibbles> add_changelog -e "- Initial build from PLD" *spec
george@arnor:~/git/nibbles> gear-commit -a
george@arnor:~/git/nibbles> gear -v --hasher -- hsh --lazy |& tee ~/tmp/.log
george@arnor:~/git/nibbles> hsh-install libncursesw-devel
gear -v --hasher -- hsh-rebuild |& tee ~/tmp/.log
diff --git a/nibbles-Makefile.patch b/nibbles-Makefile.patch index 7637e20..f4c1c84 100644 --- a/nibbles-Makefile.patch +++ b/nibbles-Makefile.patch @@ -22,7 +22,7 @@ diff -Naur nibbles-v0.0.4/Makefile nibbles-v0.0.4-patched/Makefile nibbles: $(OBJS) - $(CC) $(LIBS) $(OBJS) -o $@ -+ $(CC) $(LIBS) $(OBJS) $(LDFLAGS) -o $@ ++ $(CC) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ clean: rm -f *~ *.o nibbles
george@arnor:~/git/nibbles> git commit -a --amend
george@arnor:~/git/nibbles> find ~/hasher/chroot/usr/src/tmp/nibbles-buildroot
george@arnor:~/git/nibbles> hsh-install rpm-utils
george@arnor:~/git/nibbles> hsh-run buildreq "/usr/src/RPM/SPECS/nibbles.spec"
george@arnor:~/git/nibbles> cp ~/hasher/chroot/usr/src/RPM/SPECS/* .
george@arnor:~/git/nibbles> git commit -a --amend
george@arnor:~/git/nibbles> gear -v --hasher -- hsh --lazy |& tee ~/tmp/.log
- /etc/apt/sources.list
rpm file:/home/george/repo x86_64 hasher
- на git.alt
- подпись,тег и прочее
Материалы
CategoryUneex CategoryLectures CategorySpecCourse CategoryCmc