Редактирование: UNИX, осень 2009, 06 лекция (от 11 ноября)
Материал из eSyr's wiki.
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 34: | Строка 34: | ||
* Создание пакета | * Создание пакета | ||
* Поддержка пакета: исправление ошибок и обновление пакета | * Поддержка пакета: исправление ошибок и обновление пакета | ||
- | * реакция на | + | * реакция на сообщ об ошибках |
* Взаимодействие с апстримом | * Взаимодействие с апстримом | ||
- | * NMU: в случае, когда человек собрал пакет и забыл, или в случае нахождения | + | * NMU: в случае, когда человек собрал пакет и забыл, или в случае нахождения крит. уязвимости, для таких случаев есть non-maintainer upload |
- | Итак, как всё это организовано: | + | Итак, как всё это организовано: взаимод. между людьми осущ. в списках рассылки. Списки рассылки открытые, туда необязательно подписываться, чтобы написать. |
- | Кроме этого, используется bug tracking system для | + | Кроме этого, используется bug tracking system для сообщ. об ошибках пакетов, о заявках на новые пакеты или о снятии с себя ментейнерства. |
- | Есть ещё packet managing system для просмотра | + | Есть ещё packet managing system для просмотра инф. о пакетах. Можно подпис. на инф. о пакетах, об обновлениях. |
- | Есть ещё alioth --- сервер, на котором поднят groupware, там куча списков рассылки, | + | Есть ещё alioth --- сервер, на котором поднят groupware, там куча списков рассылки, посв. конкр. продуктов (например, для поддержки gnome в дебиане), там разл. системы контроля версий, и так далее. |
- | Ещё есть вики, но она не очень активно | + | Ещё есть вики, но она не очень активно исп, хотя нек. вещи есть только там., напр. дополнения к debian policy. |
- | Сам репозиторий дебиан, огромное хранилище, где хранятся пакеты и | + | Сам репозиторий дебиан, огромное хранилище, где хранятся пакеты и инстр. для их упр. |
- | BTS такой олдскульный, | + | BTS такой олдскульный, нсмотя на то, что у него есть веб-интерфейс, осн. способ взаимодействия --- через почту. |
- | Есть ещё утилита reportbug, которой можно в | + | Есть ещё утилита reportbug, которой можно в кач. параметра передать имя пакета/бинарника, и она составит багрепорт. |
Переходя к пакетам. То, о чём уже говорилось, в рамках этого курса. | Переходя к пакетам. То, о чём уже говорилось, в рамках этого курса. | ||
- | Пакет --- | + | Пакет --- прогр. компонетн, что-то , что может быть отдельно уст. в систему, что либо надо нам, либо требуется другому пакету, который мы исп. (разд. библ., некие данные, которые исп. неск. пакетами). Выстр. дерево зависимостей. |
- | Тут есть такой момент: есть некое | + | Тут есть такой момент: есть некое прогр. средство, оно делает некую вещь, у него есть собственно библиотека, консольный интерфейс и интерфейс на kde. В некоторых дистрибутивах это сваливают в один пакет. С другой стороны, если дроби тьочень мелко, то будет очень мелко, то это трудно ментейнить. |
- | Пакет --- это не вещь в себе, а часть системы. Это не просто | + | Пакет --- это не вещь в себе, а часть системы. Это не просто прогр. продукт, а прогр. продукт, адаптированнй для работы в сост. дистриюубитва. Он должен исп. инфраструктуру, предост. дистрибутив, и не противоречить каким-то правилам, которые ... например, есть неск. инстр., которые делают примерно одно и то же, и созда1тся инфраструктура, у которой отдельные элементы можно менять, |
- | Debian policy --- это то, что позволило выжить дебиану, как дистрибутиву. Он достаточно полно описывает | + | Debian policy --- это то, что позволило выжить дебиану, как дистрибутиву. Он достаточно полно описывает арзитектуру дистрибутивы, описывает устройство бин. паеты, каким тркбованиям должн соотв. исх. пакеты, требования к скриптам установки, огромное количество системных политик (FHS и его уточнения)/ Rfrbv j,h/ ecnh/ штше? rfr jceo/ hf,jnf c rjya/ afqkfvb/. |
- | Есть | + | Есть различ. дополнительные пакеты. |
- | Или же, например, есть задача пакетирования | + | Или же, например, есть задача пакетирования инстр. на питоне, у него есть собст. взгляд, как надо уст. инстр. на питоне, там используется каким-то обр. стандартная питоновская обвзяка, но также исп. свои собств. инстр. |
- | Благодаря полиси | + | Благодаря полиси дистр. дебиан такой вкусный,красивый и удобный. |
- | В частности, для всякого нетривиального | + | В частности, для всякого нетривиального случае в /usr/share/doc есть README.debian, где написано, как использовать инструмент. |
- | Формат | + | Формат бин. пакета: архив ar, жатый gz или bz2. |
- | Пакет | + | Пакет исх. текстов сост из архива ПО от автора (обычно тарбол, но бывают разные случаи), diff.gz, где хранится метаинф. для дистр., правила сборки, изменения в целях интеграции и испр. ошибок. |
Сборка пакета | Сборка пакета | ||
- | В чём состоит сборка | + | В чём состоит сборка бин. пакета: у нас есть некий расп. прогр. продукт, нам из него надо сделать бин. пакет. Если делать всё руками, то мы его его компилируем, раскл. эти файлы в некоем соотв. с иерархией катологой (делаем это в отд. подкаталоге), после это получившееся берём и сжимаем, добавл. некую доп. инф. Для этого была утилита dpkg-deb |
- | + | Прогр. продуктов много, и есть идея добавлять каталог debian, где хранится метаинформация. | |
- | + | Впосл. появился более высокоуровневый инструмент, dpkg-buildpackage | |
- | В пакете | + | В пакете нах. файл debian/control, где нах. всякая |
- | В debian/copyright --- указаны, какие лицензии у каких файлов. Есть license-check, который по хитрым регекспам вытягивает лицензии и | + | В debian/copyright --- указаны, какие лицензии у каких файлов. Есть license-check, который по хитрым регекспам вытягивает лицензии и расст. копирайты. |
В debian/changelog хранится вся история пакета | В debian/changelog хранится вся история пакета | ||
Строка 93: | Строка 93: | ||
debian/rules --- на самом деле, мейкфайл, который | debian/rules --- на самом деле, мейкфайл, который | ||
- | + | Tcntcndtyyj? gbcfnm dc` herfvb ckj;tj? gj'njve tcсть раздияные инструменты для автоматизации. | |
- | Базовая система, с помощью которой написано | + | Базовая система, с помощью которой написано подавл. количество debian/rules --- debhelper. Например, нам нужно сделать configure-make-make install, после чего распихать файлы по неск. пакетам. Для этогоо опис. простенький файл и натравливаются разл. утилиты debhelper. Их выхов надо явно прописывать. Неудобно, makefile большой. Для этого решили сделать более высокоуровневое, например "наш проект собирается autoconf", тогда нужно сказать configure с нужным префиксом, и так далее. Для этого был придума cdbs -- common debian build system, его мекфайл очень короткий, простой, но не очень понятно, что он там делает внутри. |
- | Дальше, есть у нас diff.gz, там хранятся помимо каталога debian, | + | Дальше, есть у нас diff.gz, там хранятся помимо каталога debian, изм., зранящиеся в самих файлах апстрима. Но все изм. зранятся в одном диффе, что неудобно. Логично вынести в отдельные патчи, и прописать первым правилом "применить все патчи вот оттуда". Для этого есть quilt и dpatch. Второй реализует ровно то, что сказано, первый умеет применять стеково (например, если не применился патч в середине, то, верятно, надо что-то поправить). |
- | Также, как и в альте, сборка должна проходить в чистом окружении, а на рабочей машине у нас нечистое окружение. Поэтому надо поставить чрут, и в нём что-то собрать. | + | Также, как и в альте, сборка должна проходить в чистом окружении, а на рабочей машине у нас нечистое окружение. Поэтому надо поставить чрут, и в нём что-то собрать. Дляэ того есть pbuilder, он работает не совсем так, как хэшер, он достаточно простой. Для начала, нужно развернуть базовую систему (которая сначала создаётся, а потом targz до лучших времён), можно в неё сделать чрут, разворач. пакет, вытягиваются и ставятся сбор. зависимости, собирается пакет, |
- | Есть | + | Есть инстр. для проверки пакетов: lintian, который проверяет на соотв. поличи и на стандартные ошибки. Автоматизированная проверка скриптов --- puiparts. |
- | + | След. момент --- если мы пакетируем ПО, особенно, совместно, то хорошо бы это хранить в VCS. Кроме того, это позв. авт. генерировать ченджлог и прочие задачи интеграции. Такие системы есть для cvs, svn, git. | |
- | + | Rfr ecnh/ gfrtn b tuj cj,bhf.n? gjyznyj? f djn xnj lfkmit ghjbc[? ghj 'nj to` ybxtuj yt hfccr/ | |
- | В отличие от многих | + | В отличие от многих дистр. где приняты time-based releases, дебиан появляется тогда, когда он готов. |
- | * Есть репозиторий, куда кладут пакеты. В какой-то момент | + | * Есть репозиторий, куда кладут пакеты. В какой-то момент обхявляется фриз. |
** Проблема 1. Репозиторий нестабилен | ** Проблема 1. Репозиторий нестабилен | ||
** Проблема 2. Разработка не оканчивается. | ** Проблема 2. Разработка не оканчивается. | ||
- | * | + | * Соотв., двухуровневая модель тут начинает не очень приятно работать. Поэтому в дебиане году в 2000 предложена трёхуровневая модель, когда есть unstable, куда кладут пакеты, и он там живёт. Если в течение 10 дней там не обнаружено release-criticalбагов, то его можно перенести в testing. Естественно, тут требование, что все зависимости тоже должны быть в testing. |
- | Эта | + | Эта трёхуровн. модель в дебиане работает очень удобно. |
- | После попадании пакета в stable | + | После попадании пакета в stable изм. версии пакета происх. не должно. Кроме двух случаев: |
- | * | + | * Уядвимость по безопасности. При этом версия не меняется. |
Как участвовать в проекте: | Как участвовать в проекте: |