Differences between revisions 1 and 33 (spanning 32 versions)
Revision 1 as of 2009-09-24 10:38:19
Size: 1906
Editor: eSyr
Comment:
Revision 33 as of 2009-12-16 11:48:18
Size: 11115
Editor: FrBrGeorge
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 }}}
   * /etc/apt/sources.list
   {{{ rpm file:/home/george/repo x86_64 hasher }}}

== Материалы ==
 * [[attachment:uneex_autumn_2009_ad2_v2.pdf|Объявление о спецкурсе]]

Информация о курсе

  • Лектор: Георгий Владимирович Курячий

  • В течение курса возможно проведение практических занятий по сборке пакетов
  • В конце курса будет экзамен
  • Спецкурс проходит по средам в 18:00 в аудитории П-12. Первая лекция — 30 сентября
  • Лицам, не имеющим пропуск на факультет ВМК МГУ, рекомендуется на первую лекцию принести одну матовую фотографию 3×4 и паспортные данные для оформления пропуска.

План курса

«

Возьми консервную банку, в нужных местах пробей дырочки, продень проволоку, загни концы... Теперь приделай к этому ручку, и аппарат готов!»

© Даниил Хармс

  • Место пакета в дистрибутиве
    • Дистрибутив ОС на основе свободного ПО: принципы формирования.
    • Хранилище пакетов: назначение и жизненный цикл; изготовление дистрибутивов из хранилища
    • Пакет как составная часть дистрибутива: требования и особенности; понятие сборки пакета.
    • Сборка пакета из исходных текстов; upstream, spec
  • Сопровождение пакета в составе хранилища
    • социальная составляющая, роль сообщества и личности сопровождающего
    • помещение стороннего ПО в хранилище: от upsrteam до binary package
    • packaging policy: цели и задачи
    • почему хранилище — не дистрибутив: хранилище как инструмент разработки и сизифов труд

  • Технологии, облегчающие сопровождение пакета (сопровождающему и сообществу)
    • Частью даются ознакомительно, так как в будущем семестре планируется прочесть курс на схожую тему
    • инструменты разработчика и их использование в процессе сопровождения
    • изолированная сборка; автоматизация изолированной сборки
    • входное тестирование пакета и контроль собираемости хранилища
  • Сборка пакета в хранилище свободного ПО Sisyphus, пошагово

Конспекты и планы лекций

  1. Организационное собрание, посвящённое выборе темы лекций (аудиозапись)

  2. Дистрибутив ОС на основе свободного ПО: принципы формирования (конспект) (аудиозапись)

  3. Пакет как составная часть дистрибутива: требования и особенности; понятие сборки пакета (конспект) (аудиозапись 0, аудиозапись 1)

  4. Сборка пакета из исходных текстов; upstream, spec (конспект) (аудиозапись)

  5. Сопровождающий (maintainer) пакета (конспект) (аудиозапись)

  6. Изолированная среда сборки (введение) (конспект) (аудиозапись)

  7. Лекция Александра Герасёва о пакетах в GNU Debian (конспект) (аудиозапись 0, аудиозапись 1)

  8. Работа с upstream, Составление спецификаций (конспект)

  9. Составление спецификаций - II, Исправление upstream (заплатки), Помещение в хранилище, Обратная связь с upstream и сообщения об ошибках (конспект) (видеозапись)


  1. {*} http://www.altlinux.org/Spec

    1. Работа с upstream
      1. Tarballs
      2. VCS, ревизии и теги
    2. Составление спецификаций
      1. Что должно быть в spec-файле, правила оформления
  2. {*}

    1. Составление спецификаций - II
      1. Коротко о spec-файле
      2. Борьба с версиями
      3. Борьба с путями
      4. Борьба со сборочными зависимостями
      5. Макросы
    2. Исправление upstream (заплатки)
      1. patch и diff

      2. Проталкивание заплаток в upstream
    3. Помещение в хранилище
      1. src.rpm
      2. Электронная подпись участника Team и робота-сборщика
      3. hasher и локальное хранилище
    4. Обратная связь с upstream и сообщения об ошибках
      1.  Как правильно задавать вопросы

      2. Как правильно отвечать на вопросы
      3. Багзилла как пример BTS
        • Product, component, priority, severity, platform, summary, full description
        • патчи и обсуждения
        • зависимости и дубли
        • статус
  3. {*} Git, Gear и git.alt

    1. Повторение пройденного: что делает сопровождающий:
      1. Получить исходники
      2. Развернуть сборочную среду
      3. Создать/обновить спецификацию
      4. Собрать пакет
      5. Оттестировать пакет
      6. Поместить пакет в хранилище
    2. Git

    3. Gear

    4. 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
  4. {*}

    1. Полный цикл сборки пакета из upstream (раассказ)
    2. Эффективные инструменты сопровождения пакетов:
      1. Адаптация к системам разработки в upstream (autotools, *make и т. п.)
      2. Адаптация к различным ЯП
      3. Поиск зависимостей и сборочных зависимостей
      4. Умолчания (триггеры, обязательные действия, пути)
      5. Хранение исходных текстов и заплаток (git.alt, gear)
      6. Совместная модификация пакета (git.alt, gear)
      7. Автоматическая сборка (git.alt, git.alt)
      8. Контроль качества (sisyphus-check, repocop, QA)
  5. Полный цикл сборки пакета из upstream (практика)
    • hsh-useradd george; relogin
    • /etc/hasher-priv/system

       prefix=~:/tmp 

    • .hasher/config

       def_repo=$HOME/repo 

    • .gitconfig {{{ [user] }}}
    • 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 

    • /etc/apt/sources.list

       rpm file:/home/george/repo x86_64 hasher 

Материалы


CategoryUneex CategoryLectures CategorySpecCourse CategoryCmc

LecturesCMC/PackageMaintaining2009 (last edited 2010-02-01 22:34:54 by eSyr)