Date: Sat, 12 Jul 2014 14:08:49 +0000 (UTC) From: Sergey Kandaurov <pluknet@FreeBSD.org> To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r45256 - in head/ru_RU.KOI8-R/books/porters-handbook: . appendices keeping-up makefiles new-port pkg-files plist porting-dads porting-samplem porting-why quick-porting security slow-por... Message-ID: <201407121408.s6CE8nU6020959@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: pluknet Date: Sat Jul 12 14:08:49 2014 New Revision: 45256 URL: http://svnweb.freebsd.org/changeset/doc/45256 Log: Whitespace fixes after PH split. Modified: head/ru_RU.KOI8-R/books/porters-handbook/appendices/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/keeping-up/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/makefiles/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/new-port/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/pkg-files/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/plist/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/porting-dads/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/porting-samplem/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/porting-why/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/quick-porting/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/security/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/slow-porting/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/special/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/testing/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/upgrading/chapter.xml head/ru_RU.KOI8-R/books/porters-handbook/uses.xml head/ru_RU.KOI8-R/books/porters-handbook/versions.xml Modified: head/ru_RU.KOI8-R/books/porters-handbook/appendices/chapter.xml ============================================================================== --- head/ru_RU.KOI8-R/books/porters-handbook/appendices/chapter.xml Sat Jul 12 09:14:48 2014 (r45255) +++ head/ru_RU.KOI8-R/books/porters-handbook/appendices/chapter.xml Sat Jul 12 14:08:49 2014 (r45256) @@ -7,67 +7,70 @@ Original revision: r43844 --> -<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="appendices"> +<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink= + "http://www.w3.org/1999/xlink" version="5.0" xml:id="appendices"> - <title>Приложения</title> + <title>Приложения</title> - <sect1 xml:id="uses-values"> - <title>Значения <varname>USES</varname></title> + <sect1 xml:id="uses-values"> + <title>Значения <varname>USES</varname></title> - <table> - <title>Значения <varname>USES</varname></title> + <table> + <title>Значения <varname>USES</varname></title> - <tgroup cols="3"> - <thead> - <row> - <entry>Наименование</entry> - <entry>Аргументы</entry> - <entry>Описание</entry> - </row> - </thead> - <tbody valign="top"> - &values.uses; - </tbody> - </tgroup> - </table> - </sect1> + <tgroup cols="3"> + <thead> + <row> + <entry>Наименование</entry> + <entry>Аргументы</entry> + <entry>Описание</entry> + </row> + </thead> + + <tbody valign="top"> + &values.uses; + </tbody> + </tgroup> + </table> + </sect1> + + <sect1 xml:id="freebsd-versions"> + <title>Значения <literal>__FreeBSD_version</literal></title> + + <para>Ниже для справки приводится перечень значений + <literal>__FreeBSD_version</literal> в виде, который определён + в <link + xlink:href="http://svnweb.FreeBSD.org/base/head/sys/sys/param.h?view=markup">sys/param.h</link>:</para> - <sect1 xml:id="freebsd-versions"> + <table frame="none"> <title>Значения <literal>__FreeBSD_version</literal></title> - <para>Ниже для справки приводится перечень значений - <literal>__FreeBSD_version</literal> в виде, который определён в - <link xlink:href="http://svnweb.FreeBSD.org/base/head/sys/sys/param.h?view=markup">sys/param.h</link>:</para> - - <table frame="none"> - <title>Значения <literal>__FreeBSD_version</literal></title> - - <tgroup cols="3"> - <thead> - <row> - <entry>Значение</entry> - <entry>Дата</entry> - <entry>Релиз</entry> - </row> - </thead> - - <tbody> - &values.versions; - </tbody> - </tgroup> - </table> - - <note> - <para>Заметьте, что 2.2-STABLE иногда идентифицирует себя как - <quote>2.2.5-STABLE</quote> после 2.2.5-RELEASE. Такой принцип - использовался год и месяц, но мы решили изменить его на более - однозначную систему нумерации старший/младший, начиная с версии - 2.2. Это объясняется тем, что параллельная разработка в нескольких - ветках делает непрактичным идентификацию релизов просто по их - реальным датам выпуска. Если вы сейчас делаете порт, вам не стоит - заботиться о старых версиях -CURRENT; они перечислены здесь просто - в информационных целях.</para> - </note> - </sect1> - </chapter> - + <tgroup cols="3"> + <thead> + <row> + <entry>Значение</entry> + <entry>Дата</entry> + <entry>Релиз</entry> + </row> + </thead> + + <tbody> + &values.versions; + </tbody> + </tgroup> + </table> + + <note> + <para>Заметьте, что 2.2-STABLE иногда идентифицирует себя как + <quote>2.2.5-STABLE</quote> после 2.2.5-RELEASE. Такой + принцип использовался год и месяц, но мы решили изменить его + на более однозначную систему нумерации старший/младший, + начиная с версии 2.2. Это объясняется тем, что параллельная + разработка в нескольких ветках делает непрактичным + идентификацию релизов просто по их реальным датам выпуска. + Если вы сейчас делаете порт, вам не стоит заботиться о старых + версиях -CURRENT; они перечислены здесь просто в + информационных целях.</para> + </note> + </sect1> +</chapter> Modified: head/ru_RU.KOI8-R/books/porters-handbook/keeping-up/chapter.xml ============================================================================== --- head/ru_RU.KOI8-R/books/porters-handbook/keeping-up/chapter.xml Sat Jul 12 09:14:48 2014 (r45255) +++ head/ru_RU.KOI8-R/books/porters-handbook/keeping-up/chapter.xml Sat Jul 12 14:08:49 2014 (r45256) @@ -7,149 +7,161 @@ Original revision: r43840 --> -<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="keeping-up"> +<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink= + "http://www.w3.org/1999/xlink" version="5.0" xml:id="keeping-up"> - <title>Актуализация</title> - - <para>Коллекция Портов &os; постоянно изменяется. Здесь находится - некоторая информация о том, как поддерживать её в актуальном - состоянии.</para> - - <sect1 xml:id="freshports"> - <title>FreshPorts</title> - - <para>Самым простым способом отслеживать уже произошедшие обновления - является подписка на <link xlink:href="http://www.FreshPorts.org/"> - FreshPorts</link>. Для мониторинга вы можете выбрать несколько - портов. Мейнтейнерам настоятельно рекомендуется подписаться здесь, - потому что они будут получать уведомления не только о собственных - изменениях, но и об изменениях, сделанных любым другим коммиттером - &os;. (Это часто необходимо для синхронизации с изменениями на более - низком технологическом уровне—хотя более корректным было бы - получение предупреждений от тех, кто вносит подобные изменения, - иногда этот этап пропускается или он просто непрактичен. Кроме того, - в некоторых случаях изменения по своей природе весьма незначительны. - Мы полагаем, что любой разработчик в таких ситуациях будет - руководствоваться здравым смыслом).</para> - - <para>Если вы хотите использовать FreshPorts, то вам нужна только - учётная запись. Если регистрационный адрес вашей электронной почты - будет иметь вид <literal>@FreeBSD.org</literal>, то справа на - Web-страницах вы увидите дополнительную ссылку. Для тех из вас, кто - уже получил учётную запись FreshPorts, но не использовал собственный - адрес электронной почты <literal>@FreeBSD.org</literal>, достаточно - сменить адрес на <literal>@FreeBSD.org</literal>, подписаться, а - затем сменить его обратно.</para> - - <para>Во FreshPorts имеется также функция проверки правильности, - которая автоматически проверяет каждое изменение, внесённое в дерево - портов &os;. Если вы подпишетесь на эту услугу, то будете - оповещаться обо всех ошибках, обнаруженных FreshPorts при проверке - внесённых вами изменений.</para> - </sect1> - - <sect1 xml:id="svnweb"> - <title>Web-интерфейс к хранилищу исходных текстов</title> - - <para>Файлы в хранилище исходных текстов можно просматривать при помощи - Web-интерфейса. Изменения, которые касаются в целом всей системы - портов, теперь документируются в файле <link xlink:href="http://svnweb.FreeBSD.org/ports/head/CHANGES">CHANGES</link>. - Изменения, касающиеся отдельных портов, отражаются теперь в - файле <link xlink:href="http://svnweb.FreeBSD.org/ports/head/UPDATING">UPDATING</link>. - Однако однозначный ответ на любой вопрос можно найти, только - прочитав исходных код <link xlink:href="http://svnweb.FreeBSD.org/ports/head/Mk/bsd.port.mk">bsd.port.mk</link> - и связанных с ним файлов.</para> - </sect1> - - <sect1 xml:id="ports-mailing-list"> - <title>Список рассылки &os;, посвящённый портам</title> - - <para>Если вы поддерживаете порты, то должны следить за &a.ports;. - О важных изменениях, отражающихся на работе портов, будет сообщаться - здесь, а затем они переносятся в <filename>CHANGES</filename>.</para> - - <para>Если данный список рассылки слишком загружен сообщениями, - вы можете отслеживать &a.ports-announce.name;, который модерируется - и не является местом для дискуссий.</para> - </sect1> - - <sect1 xml:id="build-cluster"> - <title>Кластер построения портов &os;</title> - - <para>Одной из наименее известных сильных сторон &os; является тот - факт, что для непрерывного построения Коллекции Портов для каждого - из основных релизов ОС для каждой архитектуры уровня поддержки - Tier-1 выделен целый кластер машин.</para> - - <para>Отдельные порты собираются, если они специально не помечены как - <varname>IGNORE</varname>. Для портов, помеченных как - <varname>BROKEN</varname>, попытки будут продолжены для того, - чтобы увидеть, если основная проблема была решена. (Это сделано - через использование переменной <varname>TRYBROKEN</varname> для - <filename>Makefile</filename> порта.)</para> - - </sect1> - - <sect1 xml:id="distfile-survey"> - <title>Portscout: сканер дистрибутивных файлов портов &os;</title> - - <para>Кластер построения выделен для выполнения самого последнего - релиза каждого из портов, дистрибутивные файлы которых уже были - сгружены. Однако из-за постоянных изменений в Internet - дистрибутивные файлы могут быстро исчезать. <link xlink:href="http://portscout.FreeBSD.org">Portscout</link>, средство - сканирования дистрибутивных файлов &os; пытается опросить - каждый из сайтов, доступных для сгрузки каждого из портов, - для определения того, доступны ли ещё дистрибутивные файлы. - <application>Portscout</application> может готовить отчёты - в <acronym>HTML</acronym> и рассылать электронные письма об - имеющихся обновлениях для портов тем, кто это запрашивает. - Мейнтейнеры периодически запрашивают наличие изменений, либо - вручную, либо используя ленту <acronym>RSS</acronym>.</para> - - <para>Главная страница <application>Portscout</application> - отображает email мейнтейнера порта, количество портов, за - которые ответственен мейнтейнер, количество портов с новыми - дистрибутивными файлами и процент устаревших портов. Функция - поиска выполняет поиск мейнтейнера по адресу электронной почты - и позволяет выбирать между всеми портами или только - устаревшими.</para> - - <para>При щелчке по адресу электронной почты мейнтейнера - отображается список всех его портов, разделённых по категориям, - вместе с текущим номером версии, информацией о наличии новой - версии, временем последнего обновления порта и временем его - последней проверки. Функция поиска на этой странице позволяет - пользователю выполнять поиск конкретного порта.</para> - - <para>По щелчку на название порта в списке отображается информация - о порте <link xlink:href="http://freshports.org">FreshPorts</link>.</para> - </sect1> - - <sect1 xml:id="portsmon"> - <title>Система мониторинга портов &os;</title> - - <para>Другим полезным ресурсом является - <link xlink:href="http://portsmon.FreeBSD.org">Система мониторинга - портов &os;</link> (известная также как <literal>portsmon</literal>). - Система представляет собой базу данных, обрабатывающую информацию из - нескольких источников и позволяющую просматривать их при помощи - Web-интерфейса. На данный момент задействованы база сообщений об - ошибках (PR), протоколы ошибок кластера построения и отдельные файлы - из коллекции портов. В будущем в этот список будет добавлена система - проверки дистрибутивных файлов и другие ресурсы.</para> - - <para>Для начала вы можете просмотреть всю информацию о некотором порте - при помощи средства <link xlink:href="http://portsmon.FreeBSD.org/portoverview.py">Обзор - отдельного порта</link>.</para> - - <para>На момент написания это единственный доступный ресурс, который - для имени порта ставит в соответствие записи PR GNATS. - (Отправители PR не всегда добавляют в название имя порта, хотя - мы предпочитаем, чтобы они это делали.) Таким образом, - <literal>portsmon</literal> это хорошее место для начала, если вы - хотите найти присланные PR и/или ошибки построения для существующего - порта; либо поискать, был ли уже прислан новый порт, который вы - подумывали создать сами.</para> - </sect1> - </chapter> + <title>Актуализация</title> + <para>Коллекция Портов &os; постоянно изменяется. Здесь находится + некоторая информация о том, как поддерживать её в актуальном + состоянии.</para> + + <sect1 xml:id="freshports"> + <title>FreshPorts</title> + + <para>Самым простым способом отслеживать уже произошедшие + обновления является подписка на <link xlink:href= + "http://www.FreshPorts.org/">FreshPorts</link>. Для + мониторинга вы можете выбрать несколько портов. Мейнтейнерам + настоятельно рекомендуется подписаться здесь, потому что они + будут получать уведомления не только о собственных изменениях, + но и об изменениях, сделанных любым другим коммиттером &os;. + (Это часто необходимо для синхронизации с изменениями на более + низком технологическом уровне—хотя более корректным было + бы получение предупреждений от тех, кто вносит подобные + изменения, иногда этот этап пропускается или он просто + непрактичен. Кроме того, в некоторых случаях изменения по + своей природе весьма незначительны. Мы полагаем, что любой + разработчик в таких ситуациях будет руководствоваться здравым + смыслом).</para> + + <para>Если вы хотите использовать FreshPorts, то вам нужна только + учётная запись. Если регистрационный адрес вашей электронной + почты будет иметь вид <literal>@FreeBSD.org</literal>, то + справа на Web-страницах вы увидите дополнительную ссылку. Для + тех из вас, кто уже получил учётную запись FreshPorts, но не + использовал собственный адрес электронной почты + <literal>@FreeBSD.org</literal>, достаточно сменить адрес на + <literal>@FreeBSD.org</literal>, подписаться, а затем сменить + его обратно.</para> + + <para>Во FreshPorts имеется также функция проверки правильности, + которая автоматически проверяет каждое изменение, внесённое в + дерево портов &os;. Если вы подпишетесь на эту услугу, то + будете оповещаться обо всех ошибках, обнаруженных FreshPorts + при проверке внесённых вами изменений.</para> + </sect1> + + <sect1 xml:id="svnweb"> + <title>Web-интерфейс к хранилищу исходных текстов</title> + + <para>Файлы в хранилище исходных текстов можно просматривать при + помощи Web-интерфейса. Изменения, которые касаются в целом + всей системы портов, теперь документируются в файле <link + xlink:href="http://svnweb.FreeBSD.org/ports/head/CHANGES">CHANGES</link>. + Изменения, касающиеся отдельных портов, отражаются теперь в + файле <link + xlink:href="http://svnweb.FreeBSD.org/ports/head/UPDATING">UPDATING</link>. + Однако однозначный ответ на любой вопрос можно найти, только + прочитав исходных код <link + xlink:href="http://svnweb.FreeBSD.org/ports/head/Mk/bsd.port.mk">bsd.port.mk</link> + и связанных с ним файлов.</para> + </sect1> + + <sect1 xml:id="ports-mailing-list"> + <title>Список рассылки &os;, посвящённый портам</title> + + <para>Если вы поддерживаете порты, то должны следить за + &a.ports;. О важных изменениях, отражающихся на работе портов, + будет сообщаться здесь, а затем они переносятся в + <filename>CHANGES</filename>.</para> + + <para>Если данный список рассылки слишком загружен сообщениями, + вы можете отслеживать &a.ports-announce.name;, который + модерируется и не является местом для дискуссий.</para> + </sect1> + + <sect1 xml:id="build-cluster"> + <title>Кластер построения портов &os;</title> + + <para>Одной из наименее известных сильных сторон &os; является + тот факт, что для непрерывного построения Коллекции Портов для + каждого из основных релизов ОС для каждой архитектуры уровня + поддержки Tier-1 выделен целый кластер машин.</para> + + <para>Отдельные порты собираются, если они специально не помечены + как <varname>IGNORE</varname>. Для портов, помеченных как + <varname>BROKEN</varname>, попытки будут продолжены для того, + чтобы увидеть, если основная проблема была решена. (Это + сделано через использование переменной + <varname>TRYBROKEN</varname> для <filename>Makefile</filename> + порта.)</para> + </sect1> + + <sect1 xml:id="distfile-survey"> + <title>Portscout: сканер дистрибутивных файлов портов + &os;</title> + + <para>Кластер построения выделен для выполнения самого последнего + релиза каждого из портов, дистрибутивные файлы которых уже были + сгружены. Однако из-за постоянных изменений в Internet + дистрибутивные файлы могут быстро исчезать. <link + xlink:href="http://portscout.FreeBSD.org">Portscout</link>, + средство сканирования дистрибутивных файлов &os; пытается + опросить каждый из сайтов, доступных для сгрузки каждого из + портов, для определения того, доступны ли ещё дистрибутивные + файлы. <application>Portscout</application> может готовить + отчёты в <acronym>HTML</acronym> и рассылать электронные письма + об имеющихся обновлениях для портов тем, кто это запрашивает. + Мейнтейнеры периодически запрашивают наличие изменений, либо + вручную, либо используя ленту <acronym>RSS</acronym>.</para> + + <para>Главная страница <application>Portscout</application> + отображает email мейнтейнера порта, количество портов, за + которые ответственен мейнтейнер, количество портов с новыми + дистрибутивными файлами и процент устаревших портов. Функция + поиска выполняет поиск мейнтейнера по адресу электронной почты + и позволяет выбирать между всеми портами или только + устаревшими.</para> + + <para>При щелчке по адресу электронной почты мейнтейнера + отображается список всех его портов, разделённых по категориям, + вместе с текущим номером версии, информацией о наличии новой + версии, временем последнего обновления порта и временем его + последней проверки. Функция поиска на этой странице позволяет + пользователю выполнять поиск конкретного порта.</para> + + <para>По щелчку на название порта в списке отображается информация + о порте <link + xlink:href="http://freshports.org">FreshPorts</link>.</para> + </sect1> + + <sect1 xml:id="portsmon"> + <title>Система мониторинга портов &os;</title> + + <para>Другим полезным ресурсом является <link + xlink:href="http://portsmon.FreeBSD.org">Система мониторинга + портов &os;</link> (известная также как + <literal>portsmon</literal>). Система представляет собой базу + данных, обрабатывающую информацию из нескольких источников и + позволяющую просматривать их при помощи Web-интерфейса. На + данный момент задействованы база сообщений об ошибках (PR), + протоколы ошибок кластера построения и отдельные файлы из + коллекции портов. В будущем в этот список будет добавлена + система проверки дистрибутивных файлов и другие ресурсы.</para> + + <para>Для начала вы можете просмотреть всю информацию о некотором + порте при помощи средства <link + xlink:href="http://portsmon.FreeBSD.org/portoverview.py">Обзор + отдельного порта</link>.</para> + + <para>На момент написания это единственный доступный ресурс, + который для имени порта ставит в соответствие записи PR GNATS. + (Отправители PR не всегда добавляют в название имя порта, хотя + мы предпочитаем, чтобы они это делали.) Таким образом, + <literal>portsmon</literal> это хорошее место для начала, если + вы хотите найти присланные PR и/или ошибки построения для + существующего порта; либо поискать, был ли уже прислан новый + порт, который вы подумывали создать сами.</para> + </sect1> +</chapter> Modified: head/ru_RU.KOI8-R/books/porters-handbook/makefiles/chapter.xml ============================================================================== --- head/ru_RU.KOI8-R/books/porters-handbook/makefiles/chapter.xml Sat Jul 12 09:14:48 2014 (r45255) +++ head/ru_RU.KOI8-R/books/porters-handbook/makefiles/chapter.xml Sat Jul 12 14:08:49 2014 (r45256) @@ -7,3028 +7,3209 @@ Original revision: r43840 --> -<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="makefiles"> +<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink= + "http://www.w3.org/1999/xlink" version="5.0" xml:id="makefiles"> - <title>Настройка файла Makefile</title> + <title>Настройка файла Makefile</title> - <para>Настройка файла <filename>Makefile</filename> достаточно проста, и - мы снова предполагаем, что перед тем, как начать, вы посмотрите на - существующие примеры. К тому же в этом руководстве имеется <link linkend="porting-samplem">примерный Makefile</link>, так что взгляните - на него и, пожалуйста, следуйте порядку переменных и разделов в этом - образце, чтобы облегчить чтение вашего порта другими людьми.</para> - - <para>Итак, расположим решаемые задачи в порядке их возникновения при - создании вашего нового файла <filename>Makefile</filename>:</para> - - <sect1 xml:id="makefile-source"> - <title>Оригинальные исходный код</title> - - <para>Находится ли он в каталоге <varname>DISTDIR</varname> в виде - стандартного упакованного архиватором <command>gzip</command> - tar-архива с именем типа - <filename>foozolix-1.2.tar.gz</filename>? Если это так, - можно перейти к следующему шагу. Если нет, то вы должны попытаться - переопределить некоторые из переменных - <varname>DISTVERSION</varname>, <varname>DISTNAME</varname>, - <varname>EXTRACT_CMD</varname>, - <varname>EXTRACT_BEFORE_ARGS</varname>, - <varname>EXTRACT_AFTER_ARGS</varname>, - <varname>EXTRACT_SUFX</varname> или <varname>DISTFILES</varname> в - зависимости от того, насколько необычен формат дистрибутивного - файла.</para> - - <para>В худшем случае вы можете просто определить свою собственную цель - <buildtarget>do-extract</buildtarget> для переопределения действий по - умолчанию, хотя к этому нужно будет прибегать в очень редких случаях, - если вообще придётся.</para> - </sect1> - - <sect1 xml:id="makefile-naming"> - <title>Именование</title> - - <para>В первой части <filename>Makefile</filename> порта ему даётся - название, указывается его номер версии и принадлежность к правильной - категории.</para> - - <sect2> - <title><varname>PORTNAME</varname> и - <varname>PORTVERSION</varname></title> - - <para>В переменной <varname>PORTNAME</varname> вы должны указать - основную часть имени вашего порта, а в переменной - <varname>PORTVERSION</varname> - номер версии.</para> - </sect2> - - <sect2 xml:id="makefile-naming-revepoch"> - <title><varname>PORTREVISION</varname> и - <varname>PORTEPOCH</varname></title> - - <sect3> - <title><varname>PORTREVISION</varname></title> - - <para>Переменная <varname>PORTREVISION</varname> представляет собой - монотонно увеличивающееся число, которое обнуляется при каждом - увеличении значения переменной <varname>PORTVERSION</varname> (то - есть каждый раз, когда создателями выпускается новый официальный - релиз), и добавляется к имени пакета, если оно не равно нулю. - Изменения в <varname>PORTREVISION</varname> используются - автоматизированными инструментами (например, - <command>pkg version</command>, см. &man.pkg-version.8;) - для определения факта появления нового пакета.</para> - - <para>Значение <varname>PORTREVISION</varname> должно увеличиваться - каждый раз, когда в порте FreeBSD делаются изменения, которые - как-либо меняют получаемый пакет. Сюда относятся только - изменения, затрагивающие построение пакета с <link - linkend="makefile-options">параметрами</link> по - умолчанию.</para> - - <para>Примеры случаев, когда значение <varname>PORTREVISION</varname> - должно быть увеличено:</para> - - <itemizedlist> - <listitem> - <para>Добавление патчей для исправления уязвимостей, - ошибок, или добавления новой функциональности в порт.</para> - </listitem> - - <listitem> - <para>Изменения в файле <filename>Makefile</filename> порта для - включения и выключения параметров, определяемых при компиляции - пакета.</para> - </listitem> - - <listitem> - <para>Изменения в списке упаковки или в поведении пакета во - время его установки (например, изменение скрипта, генерирующего - начальные данные для пакета, такие, как ssh-ключи для - хоста).</para> - </listitem> - - <listitem> - <para>Увеличение версии динамической библиотеки, от которой - зависит порт (в этом случае тот, кто попытается установить - старый пакет после установки более новой версии библиотеки, - не сможет этого сделать, потому что при этом будет делаться - поиск старой библиотеки libfoo.x, а не libfoo.(x+1)).</para> - </listitem> - - <listitem> - <para>Большие функциональные изменения в дистрибутивном файле - порта, происходящие без объявлений, и приводящие к большим - изменениям, то есть изменения в дистрибутиве требуют - корректировки файла <filename>distinfo</filename> без - соответствующего изменения <varname>PORTVERSION</varname>, - когда как команда <command>diff -ru</command> между новой - и старой версиями показывает нетривиальные изменения в - коде.</para> - </listitem> - </itemizedlist> - - <para>Примеры изменений, которые не требуют увеличения переменной - <varname>PORTREVISION</varname>:</para> - - <itemizedlist> - <listitem> - <para>Изменения стиля в скелете порта без функциональных изменений - в пакете.</para> - </listitem> - - <listitem> - <para>Изменения в переменной <varname>MASTER_SITES</varname> или - другие функциональные изменения порта, которые не затрагивают - получающегося пакета.</para> - </listitem> - - <listitem> - <para>Тривиальные патчи к дистрибутивному файлу, такие, как - исправления опечаток, которые не так уж важны, что пользователи - пакета должны озаботиться обновлением.</para> - </listitem> - - <listitem> - <para>Исправления, касающиеся этапа построения, которые делают - возможным построение пакета, если ранее это было невозможно - сделать (пока изменения не приводят к изменению работы на любых - других платформах, на которых порт ранее строился). Так как - <varname>PORTREVISION</varname> отражает содержимое пакета, - то, если ранее пакет не строился, то нет нужды увеличивать - <varname>PORTREVISION</varname> для отметки изменения.</para> - </listitem> - </itemizedlist> - - <para>Правило, которому нужно приблизительно следовать, заключается в - том, что нужно спрашивать себя, является ли вносимое в порт - изменение таким, что от него выиграют все (в виде - усовершенствования, исправления или благодаря тому, что новый - пакет будет вообще работоспособным), и примите во внимание тот - факт, что при этом все, кто регулярно обновляют своё дерево портов, - будут обязаны это сделать. Если это так, то переменная - <varname>PORTREVISION</varname> должна быть увеличена.</para> - </sect3> - - <sect3> - <title><varname>PORTEPOCH</varname></title> - - <para>Время от времени разработчик программного обеспечения или - создатель порта &os; делают что-то не так и выпускают версию - программы, номер которой меньше предыдущей версии. Примером этого - является порт, название которого меняется с foo-20000801 на foo-1.0 - (изначально это не считалось бы более новой версией, так как - 20000801 численно больше, чем 1).</para> - - <tip> - <para>Результат сравнения номера версии не всегда очевиден. - Для выполнения сравнения двух строк с номером версии можно - использовать <command>pkg version</command> - (см. &man.pkg-version.8;). Например:</para> - - <screen>&prompt.user; <userinput>pkg_version -t 0.031 0.29</userinput> -></screen> - - <para>Для пользователей <application>pkgng</application>:</para> + <para>Настройка файла <filename>Makefile</filename> достаточно + проста, и мы снова предполагаем, что перед тем, как начать, вы + посмотрите на существующие примеры. К тому же в этом руководстве + имеется <link linkend="porting-samplem">примерный + Makefile</link>, так что взгляните на него и, пожалуйста, + следуйте порядку переменных и разделов в этом образце, чтобы + облегчить чтение вашего порта другими людьми.</para> + + <para>Итак, расположим решаемые задачи в порядке их возникновения + при создании вашего нового файла + <filename>Makefile</filename>:</para> + + <sect1 xml:id="makefile-source"> + <title>Оригинальные исходный код</title> + + <para>Находится ли он в каталоге <varname>DISTDIR</varname> в + виде стандартного упакованного архиватором + <command>gzip</command> tar-архива с именем типа + <filename>foozolix-1.2.tar.gz</filename>? Если это так, можно + перейти к следующему шагу. Если нет, то вы должны попытаться + переопределить некоторые из переменных + <varname>DISTVERSION</varname>, <varname>DISTNAME</varname>, + <varname>EXTRACT_CMD</varname>, + <varname>EXTRACT_BEFORE_ARGS</varname>, + <varname>EXTRACT_AFTER_ARGS</varname>, + <varname>EXTRACT_SUFX</varname> или + <varname>DISTFILES</varname> в зависимости от того, насколько + необычен формат дистрибутивного файла.</para> + + <para>В худшем случае вы можете просто определить свою + собственную цель <buildtarget>do-extract</buildtarget> для + переопределения действий по умолчанию, хотя к этому нужно будет + прибегать в очень редких случаях, если вообще придётся.</para> + </sect1> - <screen>&prompt.user; <userinput>pkg version -t 0.031 0.29</userinput> -></screen> + <sect1 xml:id="makefile-naming"> + <title>Именование</title> - <para>Строка <literal>></literal> в выводе команды означает, - что версия 0.031 считается выше, чем версия 0.29, что может - быть не очевидно для того, кто выполняет портирование.</para> - </tip> + <para>В первой части <filename>Makefile</filename> порта ему + даётся название, указывается его номер версии и принадлежность + к правильной категории.</para> + + <sect2> + <title><varname>PORTNAME</varname> и + <varname>PORTVERSION</varname></title> + + <para>В переменной <varname>PORTNAME</varname> вы должны + указать основную часть имени вашего порта, а в переменной + <varname>PORTVERSION</varname> - номер версии.</para> + </sect2> + + <sect2 xml:id="makefile-naming-revepoch"> + <title><varname>PORTREVISION</varname> и + <varname>PORTEPOCH</varname></title> + + <sect3> + <title><varname>PORTREVISION</varname></title> + + <para>Переменная <varname>PORTREVISION</varname> представляет + собой монотонно увеличивающееся число, которое обнуляется + при каждом увеличении значения переменной + <varname>PORTVERSION</varname> (то есть каждый раз, когда + создателями выпускается новый официальный релиз), и + добавляется к имени пакета, если оно не равно нулю. + Изменения в <varname>PORTREVISION</varname> используются + автоматизированными инструментами (например, + <command>pkg version</command>, см. &man.pkg-version.8;) + для определения факта появления нового пакета.</para> + + <para>Значение <varname>PORTREVISION</varname> должно + увеличиваться каждый раз, когда в порте FreeBSD делаются + изменения, которые как-либо меняют получаемый пакет. Сюда + относятся только изменения, затрагивающие построение пакета + с <link linkend="makefile-options">параметрами</link> по + умолчанию.</para> + + <para>Примеры случаев, когда значение + <varname>PORTREVISION</varname> должно быть + увеличено:</para> - <para>В ситуациях, подобных этой, должно быть увеличено значение - <varname>PORTEPOCH</varname>. Если значение - <varname>PORTEPOCH</varname> не равно нулю, то оно добавляется к - имени пакета, как описано в разделе выше. Значение - <varname>PORTEPOCH</varname> никогда не должно уменьшаться или - сбрасываться в ноль, потому что это приведёт к ошибке сравнения с - пакетом с меньшим номером эпохи (то есть то, что пакет устарел, - обнаружено не будет): номер новой версии (например, - <literal>1.0,1</literal> в примере выше) останется меньше, чем - номер предыдущей версии (20000801), однако суффикс - <literal>,1</literal> интерпретируется различными - автоматизированными утилитами особым образом, и окажется больше, - чем предполагаемый суффикс <literal>,0</literal> более раннего - пакета).</para> - - <para>Некорректное уменьшение или сброс <varname>PORTEPOCH</varname> - приводит к печальным последствиям; если вы не поняли, о чём шла - речь ранее, пожалуйста, всё же разберитесь с этим, либо спросите - в списках рассылки.</para> - - <para>Предполагается, что в большинстве портов переменная - <varname>PORTEPOCH</varname> использоваться не будет, но при - корректном использовании <varname>PORTVERSION</varname> может - появиться необходимость её иметь, если в будущих релизах - программное обеспечение должно изменить структуру номера версии. - Однако создателям портов для &os; нужно быть внимательными, когда - разработчик выпускает релиз без официального номера версии — - эдакие <quote>промежуточные</quote> релизы. Имеется соблазн - пометить релиз датой его выхода, что может вызвать проблемы, как и - в примере выше, когда будет выпущен новый - <quote>официальный</quote> релиз.</para> - - <para>Например, если промежуточный релиз помечен датой 20000917, а - предыдущая версия программного обеспечения имела номер 1.2, то - промежуточному релизу должно быть поставлено в соответствие - значение <varname>PORTVERSION</varname>, равное 1.2.20000917 или - что-то похожее, но не 20000917, так как последующий релиз, скажем, - 1.3, должен иметь численно большее значение.</para> - </sect3> - - <sect3> - <title>Пример использования переменных - <varname>PORTREVISION</varname> и - <varname>PORTEPOCH</varname></title> - - <para>Выполнен коммит порта <literal>gtkmumble</literal>, версии - <literal>0.10</literal>, в коллекцию портов.</para> - - <programlisting>PORTNAME= gtkmumble -PORTVERSION= 0.10</programlisting> - - <para>Значение <varname>PKGNAME</varname> станет равным - <literal>gtkmumble-0.10</literal>.</para> - - <para>Обнаружена брешь в безопасности, исправление которой - потребовало создания - локального патча для &os;. Соответственно было увеличено - значение переменной <varname>PORTREVISION</varname>.</para> - - <programlisting>PORTNAME= gtkmumble -PORTVERSION= 0.10 -PORTREVISION= 1</programlisting> - - <para><varname>PKGNAME</varname> принимает значение - <literal>gtkmumble-0.10_1</literal></para> - - <para>Разработчиком выпущена новая версия с номером - <literal>0.2</literal> (оказалось, что под номером - <literal>0.10</literal> автор имел в виду - <literal>0.1.0</literal>, а не <quote>то, что будет выпущено после - версии 0.9</quote> - извините, теперь уже поздно). Так как новый - младший номер версии <literal>2</literal> по значению меньше, чем - номер предыдущей версии <literal>10</literal>, то должно быть - увеличено значение <varname>PORTEPOCH</varname> для того, чтобы - заставить распознавать вновь создаваемый пакет как <quote>более - новый</quote>. Так как это новый релиз программы, то - <varname>PORTREVISION</varname> обнуляется (или удаляется из - файла <filename>Makefile</filename>).</para> - - <programlisting>PORTNAME= gtkmumble -PORTVERSION= 0.2 -PORTEPOCH= 1</programlisting> - - <para><varname>PKGNAME</varname> принимает значение - <literal>gtkmumble-0.2,1</literal></para> - - <para>Следующий релиз имеет номер версии 0.3. Так как значение - переменной <varname>PORTEPOCH</varname> никогда не уменьшается, что - переменные, определяющие версии, теперь выглядят так:</para> - - <programlisting>PORTNAME= gtkmumble -PORTVERSION= 0.3 -PORTEPOCH= 1</programlisting> - - <para><varname>PKGNAME</varname> принимает значение - <literal>gtkmumble-0.3,1</literal></para> - - <note> - <para>Если значение <varname>PORTEPOCH</varname> этим обновлением - было бы сброшено в <literal>0</literal>, то кто-нибудь, имеющий - установленный пакет <literal>gtkmumble-0.10_1</literal>, не - смог бы опознать пакет <literal>gtkmumble-0.3</literal> как - более новый, так как <literal>3</literal> было бы меньше, чем - <literal>10</literal>. Помните, что в первую очередь это - касается <varname>PORTEPOCH</varname>.</para> - </note> - </sect3> - </sect2> - - <sect2> - <title>Переменные <varname>PKGNAMEPREFIX</varname> - и <varname>PKGNAMESUFFIX</varname></title> - - <para>Две необязательные переменные, <varname>PKGNAMEPREFIX</varname> и - <varname>PKGNAMESUFFIX</varname>, объединяются со значениями - <varname>PORTNAME</varname> и - <varname>PORTVERSION</varname> для формирования - <varname>PKGNAME</varname> в форме - <literal>${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}</literal>. - Добейтесь того, чтобы это соответствовало нашим <link linkend="porting-pkgname">рекомендациям по правильному выбору - названий для пакетов</link>. В частности, в переменной - <varname>PORTVERSION</varname> <emphasis>не разрешается</emphasis> - использование дефиса (<literal>-</literal>). Кроме того, если в - имени пакета присутствует часть <replaceable>language-</replaceable> - или <replaceable>-compiled.specifics</replaceable> (смотрите ниже), - то используйте переменные <varname>PKGNAMEPREFIX</varname> и - <varname>PKGNAMESUFFIX</varname>, соответственно. Не делайте их - частью значения переменной <varname>PORTNAME</varname>.</para> - </sect2> - - <sect2 xml:id="porting-pkgname"> - <title>Соглашения по именованию пакетов</title> - - <para>Далее описаны некоторые соглашения, которым вы должны следовать - в именовании ваших пакетов. Они были разработаны для облегчения - просмотра каталога, так как имеется уже тысячи пакетов, а - пользователи отвернутся от нас, если список не понравится их - взору!</para> - - <para>Имя пакета должно иметь вид - <filename>language_region-name-compiled.specifics-version.numbers</filename>.</para> - - <para>Имя пакета определяется как - <literal>${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}</literal>. - Вы должны задавать значения переменных в соответствии с этим - форматом.</para> - - <orderedlist> - <listitem> - <para>&os; пытается поддерживать языки, на которых разговаривают - её пользователи. Часть <replaceable>language-</replaceable> - должна быть двухсимвольным сокращением от названия языка по - стандарту ISO-639, если порт специфичен для конкретного языка. - Примерами являются <literal>ja</literal> для японского, - <literal>ru</literal> для русского, <literal>vi</literal> для - вьетнамского, <literal>zh</literal> для китайского, - <literal>ko</literal> для корейского и <literal>de</literal> для - немецкого языков.</para> - - <para>Если ваш порт специфичен для конкретного региона внутри - области использования языка, добавьте также двухсимвольный код - страны. Примерами являются <literal>en_US</literal> для US - English и <literal>fr_CH</literal> для Swiss French.</para> - - <para>Часть <replaceable>language-</replaceable> должна задаваться - в переменной <varname>PKGNAMEPREFIX</varname>.</para> - </listitem> - - <listitem> - <para>Первая буква части <filename>name</filename> должна быть в - нижнем регистре. (Оставшаяся часть названия может содержать - буквы в верхнем регистре, так что принимайте решение сами, когда - преобразуете имя программного пакета, содержащего в имени - некоторое количество заглавных букв.) Существует традиция - именовать модули для <literal>Perl 5</literal>, добавляя впереди - <literal>p5-</literal> и преобразуя пару двоеточий в - дефис; например, модуль <literal>Data::Dumper</literal> будет - именоваться <literal>p5-Data-Dumper</literal>.</para> + <itemizedlist> + <listitem> + <para>Добавление патчей для исправления уязвимостей, + ошибок, или добавления новой функциональности в + порт.</para> </listitem> <listitem> - <para>Убедитесь, что имя порта и версия четко отделены и - размещаются в переменных <varname>PORTNAME</varname> и - <varname>PORTVERSION</varname>. Единственная причина, по - которой <varname>PORTNAME</varname> содержит версионную часть, - это если полученный дистрибутив сам назван таким образом, как - это сделано для портов <filename>textproc/libxml2</filename> - или <filename>japanese/kinput2-freewnn</filename>. В противном - случае <varname>PORTNAME</varname> не должен содержать никакой - информации, указывающей на версию. То, что некоторые порты - имеют одинаковый <varname>PORTNAME</varname>, является вполне - нормальным, как для портов <filename>www/apache*</filename>; - в этом случае различные версии (и различные записи в индексе) - отличаются по значениям <varname>PKGNAMEPREFIX</varname> - и <varname>PKGNAMESUFFIX</varname>.</para> - </listitem> - - <listitem> - <para>Если порт может быть построен с различными <link linkend="makefile-masterdir">статически заданными значениями по - умолчанию</link> (обычно это часть имени каталога в семействе - портов), то часть <replaceable>-compiled.specifics</replaceable> - должна определять вкомпилированные значения по умолчанию (дефис - не обязателен). Примерами являются размеры бумаги и - шрифтов.</para> - - <para>Часть <replaceable>-compiled.specifics</replaceable> должна - задаваться в переменной <varname>PKGNAMESUFFIX</varname>.</para> - </listitem> - - <listitem> - <para>Строка с номером версии должна следовать за дефисом - (<literal>-</literal>) и являться списком разделенных двоеточием - чисел и букв в нижнем регистре. В частности, не разрешается - иметь еще один дефис внутри строки с обозначением номера версии. - Единственным исключением является строчка <literal>pl</literal> - (означающая <quote>patchlevel</quote>), которая может - использоваться <emphasis>только</emphasis> тогда, когда у - программного обеспечения нет старшего и младшего номера версии. - Если в номер версии программного обеспечения включена строчка - типа <quote>alpha</quote>, <quote>beta</quote>, - <quote>rc</quote> или <quote>pre</quote>, возьмите из неё первую - букву и поставьте её непосредственно после точки. Если после - таких строк номер версии ещё продолжается, то после буквы должно - следовать число без дополнительной разделяющей точки.</para> - - <para>Смысл такого формата заключается в удобстве сортировки портов - по номеру версии. В частности, следите за тем, чтобы компоненты - номера версии разделялись точкой, и если там присутствует дата, - то используйте формат - <literal>0.0.yyyy.mm.dd</literal>, но не - <literal>dd.mm.yyyy</literal> - или не совместимый с проблемой Y2K - <literal>yy.mm.dd</literal>. - Добавление к версии префикса <literal>0.0.</literal> является - важным, в случае если выпущен релиз с присвоением настоящей - версии, которая в числовом представлении, конечно же, будет - ниже, чем - <literal>yyyy</literal>.</para> - </listitem> - </orderedlist> - - <para>Вот несколько (реальных) примеров того, как преобразовать имя из - оригинального, придуманного авторами, к подходящему для имени - пакета:</para> - - <informaltable frame="none" pgwide="1"> - <tgroup cols="6"> - <thead> - <row> - <entry>Имя дистрибутива</entry> - - <entry><varname>PKGNAMEPREFIX</varname></entry> - - <entry><varname>PORTNAME</varname></entry> - - <entry><varname>PKGNAMESUFFIX</varname></entry> - - <entry><varname>PORTVERSION</varname></entry> - - <entry>Обоснование</entry> - </row> - </thead> - - <tbody> - <row> - <entry>mule-2.2.2</entry> - <entry>(пусто)</entry> - <entry>mule</entry> - <entry>(пусто)</entry> - <entry>2.2.2</entry> - <entry>Изменений не потребовалось</entry> - </row> - - <row> - <entry>EmiClock-1.0.2</entry> - <entry>(пусто)</entry> - <entry>emiclock</entry> - <entry>(пусто)</entry> - <entry>1.0.2</entry> - <entry>Для отдельных программ имена с заглавными буквами - запрещены</entry> - </row> *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201407121408.s6CE8nU6020959>