diff options
author | Sergey Kandaurov <pluknet@FreeBSD.org> | 2014-02-22 10:29:12 +0000 |
---|---|---|
committer | Sergey Kandaurov <pluknet@FreeBSD.org> | 2014-02-22 10:29:12 +0000 |
commit | 94539e819780363aa08d9796dcefa80ad228490a (patch) | |
tree | 90c23c4e00b9d13e682e96e8294b122312faf961 /ru_RU.KOI8-R | |
parent | 35a022c67c9bdf5850fc9020c76dc90e23cfb31e (diff) | |
download | doc-94539e819780363aa08d9796dcefa80ad228490a.tar.gz doc-94539e819780363aa08d9796dcefa80ad228490a.zip |
MFen up to before splitting porters-handbook.
book.xml r42833 -> r43827
uses.xml r43006 -> r43793
versions.xml r42930 -> r43967
Notes
Notes:
svn path=/head/; revision=44027
Diffstat (limited to 'ru_RU.KOI8-R')
-rw-r--r-- | ru_RU.KOI8-R/books/porters-handbook/book.xml | 1860 | ||||
-rw-r--r-- | ru_RU.KOI8-R/books/porters-handbook/uses.xml | 764 | ||||
-rw-r--r-- | ru_RU.KOI8-R/books/porters-handbook/versions.xml | 182 |
3 files changed, 1960 insertions, 846 deletions
diff --git a/ru_RU.KOI8-R/books/porters-handbook/book.xml b/ru_RU.KOI8-R/books/porters-handbook/book.xml index 444be85ed9..50339b5cbf 100644 --- a/ru_RU.KOI8-R/books/porters-handbook/book.xml +++ b/ru_RU.KOI8-R/books/porters-handbook/book.xml @@ -10,14 +10,20 @@ $FreeBSD$ $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/porters-handbook/book.xml,v 1.136 2006/10/20 09:25:00 marck Exp $ - Original revision: r42833 + Original revision: r43827 --> -<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru"> - <info><title>Руководство FreeBSD по созданию портов</title> - + +<book xmlns="http://docbook.org/ns/docbook" + xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" + xml:lang="ru"> + + <info> + <title>Руководство &os; по созданию портов</title> <authorgroup> - <author><orgname>The FreeBSD Documentation Project</orgname></author> + <author> + <orgname>The &os; Documentation Project</orgname> + </author> </authorgroup> <pubdate>$FreeBSD$</pubdate> @@ -37,27 +43,32 @@ <year>2011</year> <year>2012</year> <year>2013</year> - <holder role="mailto:doc@FreeBSD.org"> - The FreeBSD Documentation Project</holder> + <holder role="mailto:doc@FreeBSD.org">The &os; Documentation + Project</holder> </copyright> - &trademarks; - &legalnotice; + <legalnotice xml:id="trademarks" role="trademarks"> + &tm-attrib.freebsd; + &tm-attrib.unix; + &tm-attrib.sun; + &tm-attrib.general; + </legalnotice> + <releaseinfo>$FreeBSD$</releaseinfo> </info> <chapter xml:id="why-port"> <title>Введение</title> - <para>Коллекция портов FreeBSD является способом, используемым - практически каждым для установки приложений ("портов") на FreeBSD. - Как и почти всё остальное во FreeBSD, эта система в основном является + <para>Коллекция портов &os; является способом, используемым + практически каждым для установки приложений ("портов") на &os;. + Как и почти всё остальное во &os;, эта система в основном является добровольно поддерживаемым начинанием. Важно иметь это в виду при чтении данного документа.</para> - <para>Во FreeBSD любой может прислать новый порт либо изъявить желание + <para>Во &os; каждый может прислать новый порт либо изъявить желание поддерживать существующий порт, если его никто ещё никто не поддерживает—вам не нужно иметь никаких особых привилегий на внесение изменений, чтобы это делать.</para> @@ -70,7 +81,7 @@ обновить существующий? Великолепно!</para> <para>Ниже находятся некоторые указания по созданию нового порта для - FreeBSD. Если вы хотите обновить существующий порт, вы должны + &os;. Если вы хотите обновить существующий порт, вы должны прочесть их, а затем <xref linkend="port-upgrading"/>.</para> <para>Если этот документ недостаточно подробен, вы должны обратиться к @@ -114,11 +125,24 @@ <note> <para>Здесь предполагается, что программное обеспечение компилируется без проблем как есть, то есть для работы приложения на вашей системе - FreeBSD не потребовалось абсолютно никаких изменений. Если + &os; не потребовалось абсолютно никаких изменений. Если требовалось что-то изменить, то вам придется обратиться также и к следующему разделу.</para> </note> + <note> + <para>Перед началом портирования рекомендуется установить + переменную &man.make.1; <varname>DEVELOPER</varname> в + <filename>/etc/make.conf</filename>.</para> + + <screen>&prompt.root; <userinput>echo DEVELOPER=yes >> /etc/make.conf</userinput></screen> + + <para>Эта настройка включает <quote>режим разработчика</quote>, + в котором отображаются предупреждения при использовании + устаревших конструкций и задействуются некоторые дополнительные + проверки при вызове команды <command>make</command>.</para> + </note> + <sect1 xml:id="porting-makefile"> <title>Создание файла <filename>Makefile</filename></title> @@ -132,12 +156,9 @@ PORTVERSION= 1.1b CATEGORIES= games MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/ -MAINTAINER= asami@FreeBSD.org +MAINTAINER= youremail@example.com COMMENT= Cat chasing a mouse all over the screen -MAN1= oneko.1 -MANCOMPRESSED= yes - .include <bsd.port.mk></programlisting> <note> @@ -150,7 +171,8 @@ MANCOMPRESSED= yes <para>Посмотрим, сможете ли вы его понять. Не обращайте внимание на содержимое строчки <literal>$FreeBSD$</literal>, она - будет заполнена автоматически системой SVN, когда порт будет + будет заполнена автоматически системой + <application>Subversion</application>, когда порт будет импортирован в наше дерево портов. Вы можете найти более подробный пример в разделе <link linkend="porting-samplem">пример Makefile</link>.</para> @@ -178,8 +200,8 @@ MANCOMPRESSED= yes из <filename>README</filename> или страниц справочника</emphasis>; слишком часто они не являются кратким описанием порта или имеют неудобный формат (например, страницы - справочника выровнены пробелами, поскольку это выглядит в - особенности плохо с моноширинными шрифтами).</para> + справочника выровнены пробелами, что особенно плохо + смотрится с моноширинными шрифтами).</para> </note> <para>Хорошо составленный <filename>pkg-descr</filename> @@ -225,16 +247,14 @@ WWW: http://www.oneko.org/</programlisting> пакет генерируется упаковкой файлов, которые здесь указаны. Имена путей указываются относительно установочного префикса (обычно <filename>/usr/local</filename>). - Если вы используете переменные - <varname>MAN<replaceable>n</replaceable></varname> (а вы должны - это делать), то указывать страницы справочника здесь не - нужно. Если порт во время установки создает каталоги, убедитесь, - что добавили строку <literal>@dirrm</literal> для удаления + Если порт во время установки создает каталоги, убедитесь, + что добавлены строки <literal>@dirrm</literal> для удаления каталогов при удалении пакета.</para> <para>Вот маленький пример:</para> <programlisting>bin/oneko +man/man1/oneko.1.gz lib/X11/app-defaults/Oneko lib/X11/oneko/cat1.xpm lib/X11/oneko/cat2.xpm @@ -242,7 +262,7 @@ lib/X11/oneko/mouse.xpm @dirrm lib/X11/oneko</programlisting> <para>Обратитесь к странице справочной системы по команде - &man.pkg.create.1; с подробным описанием формата списка + &man.pkg-create.8; с подробным описанием формата списка упаковки.</para> <note> @@ -270,6 +290,7 @@ lib/X11/oneko/mouse.xpm <filename>Makefile</filename>:</para> <programlisting>PLIST_FILES= bin/oneko \ + man/man1/oneko.1.gz \ lib/X11/app-defaults/Oneko \ lib/X11/oneko/cat1.xpm \ lib/X11/oneko/cat2.xpm \ @@ -293,7 +314,7 @@ PLIST_DIRS= lib/X11/oneko</programlisting> <para>Обратной стороной такого способа перечисления файлов и каталогов порта является невозможность использования - последовательностей команд, описанных в &man.pkg.create.1;. + последовательностей команд, описанных в &man.pkg-create.8;. Поэтому он подходит для простых портов, что делает их ещё более простыми. Одновременно с этим положительным моментом является уменьшение количества файлов в коллекции портов. Пожалуйста, @@ -333,22 +354,34 @@ PLIST_DIRS= lib/X11/oneko</programlisting> <itemizedlist> <listitem> <para><filename>pkg-plist</filename> не содержит ничего сверх того, - что устанавливается вашим портом</para> + что устанавливается портом</para> </listitem> <listitem> <para><filename>pkg-plist</filename> содержит абсолютно все, что - устанавливается вашим портом</para> + устанавливается портом</para> </listitem> <listitem> - <para>Ваш порт может быть переустановлен множество раз с помощью - указания цели <buildtarget>reinstall</buildtarget></para> + <para>Порт может быть установлен с помощью + указания цели <buildtarget>install</buildtarget>. Это + позволяет убедиться в правильной работе сценария + установки.</para> </listitem> <listitem> - <para>Ваш порт <link linkend="plist-cleaning">подчищает</link> - за собой после своего удаления</para> + <para>Порт может быть правильным образом удалён с помощью + указания цели <buildtarget>deinstall</buildtarget>. Это + позволяет убедиться в правильной работе сценария + удаления.</para> + </listitem> + + <listitem> + <para>Следует убедиться, что <command>make package</command> + можно запустить из-под обычного пользователя (то есть, + не из-под <systemitem class="username">root</systemitem>). + Если это не так, в <filename>Makefile</filename> порта + должно быть добавлено <literal>NEED_ROOT=yes</literal>.</para> </listitem> </itemizedlist> @@ -356,20 +389,19 @@ PLIST_DIRS= lib/X11/oneko</programlisting> <title>Рекомендуемый порядок проверки</title> <step> - <para><command>make install</command></para> + <para><command>make stage</command></para> </step> <step> - <para><command>make package</command></para> + <para><command>make check-orphans</command></para> </step> <step> - <para><command>make deinstall</command></para> + <para><command>make package</command></para> </step> <step> - <para><command>pkg_add package-name - </command></para> + <para><command>make install</command></para> </step> <step> @@ -377,31 +409,25 @@ PLIST_DIRS= lib/X11/oneko</programlisting> </step> <step> - <para><command>make reinstall</command></para> + <para><command>pkg add package-filename</command></para> </step> <step> - <para><command>make package</command></para> - </step> - - <step> - <para><command>make readme</command></para> + <para><command>make package</command> (из-под + пользователя)</para> </step> </procedure> - <para>Проверьте, что ни на шаге <buildtarget>package</buildtarget>, ни на - шаге <buildtarget>deinstall</buildtarget> не выдается никаких - предупреждений. После выполнения шага 3 проверьте, что все новые - каталоги были успешно удалены. Также попробуйте запустить - программное обеспечение после выполнения шага 4, чтобы убедиться, что - оно работает правильно при установке из пакета.</para> - - <para>Наиболее основательным способом автоматизации этих шагов является - установка <application>ports tinderbox</application>. Это - обеспечивает <literal>jails</literal>, в которых вы можете проверять - все вышеуказанные шаги без изменения состояния в вашей основной - системе. Для получения дополнительной информации смотрите - <filename>ports/ports-mgmt/tinderbox</filename>.</para> + <para>Убедитесь, что на любом из этапов не выдается никаких + предупреждений.</para> + + <para>Основательное автоматизированное тестирование может быть + выполнено при помощи + <package role="port">ports-mgmt/tinderbox</package> или + <package role="port">ports-mgmt/poudriere</package> из Коллекции + Портов. Эти приложения используют <literal>jails</literal>, + в которых проверяются все перечисленные выше этапы без + изменения состояния основной системы.</para> </sect1> <sect1 xml:id="porting-portlint"> @@ -410,7 +436,7 @@ PLIST_DIRS= lib/X11/oneko</programlisting> <para>Будьте добры, пользуйтесь утилитой <command>portlint</command> для проверки того, что ваш порт соответствует нашим рекомендациям. - Программа <package>ports-mgmt/portlint</package> + Программа <package role="port">ports-mgmt/portlint</package> является частью Коллекции Портов. В частности, вы можете захотеть проверить, правильно ли сформирован файл <link linkend="porting-samplem">Makefile</link> и @@ -420,38 +446,45 @@ PLIST_DIRS= lib/X11/oneko</programlisting> <sect1 xml:id="porting-submitting"> <title>Посылка нового порта</title> - <para>Перед посылкой нового порта удостоверьтесь, что вы прочитали - раздел о том, что <link linkend="porting-dads">можно и нельзя</link> делать.</para> + <para>Перед посылкой нового порта прочитайте раздел о том, что + <link linkend="porting-dads">можно и нельзя</link> делать.</para> - <para>Теперь, когда вы счастливы от своего первого порта, единственное, + <para>Когда вы наконец довольны своим первым портом, единственное, что осталось сделать, это включить его в основное дерево портов - &os; и осчастливить этим всех остальных. Нам не нужен ни ваш + &os; и осчастливить этим всех остальных. Нам не нужен ни каталог <filename>work</filename>, ни пакет - <filename>pkgname.tgz</filename>, так что удалите их прямо сейчас. - Затем (предположим, что ваш порт зовут oneko) перейдите в каталог - выше, там, где находится каталог <literal>oneko</literal>, и наберите - следующее: <command>shar `find oneko` > oneko.shar</command></para> - - <para>Включите ваш файл <literal>oneko.shar</literal> - в сообщение об ошибке и пошлите - его с помощью программы &man.send-pr.1; (обратитесь к разделу <link xlink:href="&url.articles.contributing;/contrib-how.html#CONTRIB-GENERAL"> - Сообщения об ошибках и общие замечания</link> для получения подробной - информации о программе &man.send-pr.1;). Не забудьте - указать в сообщении категорию <literal>ports</literal> и класс - <literal>change-request</literal> (Не указывайте, что сообщение - имеет статус <literal>confidential</literal>!). Добавьте также - краткое описание программы, порт которой вы создали, в раздел - <quote>Description</quote> отправляемого PR (например, содержимое - <varname>COMMENT</varname> в сокращенном виде) и сам файл в виде архива - shar, поместив его в раздел <quote>Fix</quote>.</para> + <filename>pkgname.tgz</filename>, так что удалите их прямо + сейчас.</para> + + <para>Затем получите файл &man.shar.1;. Предполагая, что порт + называется oneko, перейдите в каталог выше, где находится + каталог <literal>oneko</literal>, и наберите: + <command>shar `find oneko` > oneko.shar</command></para> + + <para>Включите <filename>oneko.shar</filename> в сообщение об + ошибке и пошлите его с помощью &man.send-pr.1;. Обратитесь к + разделу <link + xlink:href="&url.articles.contributing;/contrib-how.html#CONTRIB-GENERAL"> + Сообщения об ошибках и общие замечания</link> для получения + подробной информации о &man.send-pr.1;).</para> + + <para>Укажите в сообщении категорию <literal>ports</literal> и + класс <literal>change-request</literal>. + <emphasis>Не</emphasis> указывайте, что сообщение имеет статус + <literal>confidential</literal>! Добавьте краткое описание + программы в поле <quote>Description</quote> отправляемого PR + (например, содержимое <varname>COMMENT</varname> в сокращённом + варианте) и сам файл в виде архива <filename>.shar</filename> + в поле <quote>Fix</quote>.</para> <note> - <para>Вы можете значительно облегчить нашу работу, если в тему - сообщения о проблеме поместите хорошее описание. Мы рекомендуем - нечто вроде <quote>New port: <категория>/<название - порта> <краткое описание порта></quote> для новых портов. - Если вы следуете этой схеме, то шансы на то, что на ваше PR вскоре - кто-то взглянет, гораздо выше.</para> + <para>Хорошее описание в заголовке сообщения о проблеме + значительно облегчает работу коммиттеров портов. Для новых + портов мы предпочитаем нечто вроде <quote>New port: + <категория>/<название порта> <краткое + описание порта></quote>. Следование этой схеме + упрощает и ускоряет начало работы по добавлению нового + порта.</para> </note> <para>Повторим ещё раз, что <emphasis>не нужно включать ни оригинальный @@ -460,16 +493,17 @@ PLIST_DIRS= lib/X11/oneko</programlisting> <command>make package</command></emphasis>; для новых портов используйте &man.shar.1;, но не &man.diff.1;.</para> - <para>После того как вы послали порт, пожалуйста, потерпите. - Иногда включение нового порта во &os; может занять до нескольких - месяцев, а иногда всего несколько дней. <link xlink:href="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?category=ports"> - Здесь</link> вы можете найти список PR для портов ожидающих своей - очереди для включения во &os;.</para> - - <para>Мы рассмотрим ваш порт, при необходимости вернём его обратно, а - затем включим порт в наше дерево. Ваше имя также будет добавлено - в список <link xlink:href="&url.articles.contributors;/contrib-additional.html"> - Дополнительных контрибуторов проекта FreeBSD</link> и другие + <para>После отправки порта, пожалуйста, потерпите. Время, + необходимое для включения нового порта во &os;, может занимать + от нескольких дней до нескольких месяцев. <link + xlink:href="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?category=ports"> + Здесь</link> можно увидеть список ожидающих PR для портов.</para> + + <para>После рассмотрения нового порта мы при необходимости вам + ответим, а затем включим порт в наше дерево. Ваше имя также + будет добавлено в список <link + xlink:href="&url.articles.contributors;/contrib-additional.html"> + Дополнительных контрибуторов проекта &os;</link> и другие файлы.</para> </sect1> </chapter> @@ -502,10 +536,9 @@ PLIST_DIRS= lib/X11/oneko</programlisting> текстов имеется в наличии локально в каталоге <varname>DISTDIR</varname>. Если цель <buildtarget>fetch</buildtarget> не может найти требуемые файлы в - каталоге <varname>DISTDIR</varname>, то он будет искаться по + каталоге <varname>DISTDIR</varname>, то они будут искаться по указателю URL <varname>MASTER_SITES</varname>, который - устанавливается в Makefile, а также на нашем основном FTP-сервере - по адресу <uri xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/">ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/</uri>, + устанавливается в Makefile, а также на наших FTP зеркалах, куда мы по возможности помещаем дистрибутивные файлы для архива. Затем она попытается сгрузить указанный файл с помощью <varname>FETCH</varname>, полагая, что запрашивающая машина имеет @@ -558,11 +591,22 @@ PLIST_DIRS= lib/X11/oneko</programlisting> <step> <para>Выполняется цель <buildtarget>build</buildtarget>. Она отвечает за переход в собственный рабочий каталог порта - (<varname>WRKSRC</varname>) и его построение. Если задана - переменная <varname>USES= gmake</varname>, будет использоваться - GNU-версия утилиты <command>make</command>, в противном случае - будет использована системная утилита - <command>make</command>.</para> + (<varname>WRKSRC</varname>) и его построение.</para> + </step> + + <step> + <para>Выполняется цель <buildtarget>stage</buildtarget>. + Конечный набор построенных файлов помещается во временный + каталог (<varname>STAGEDIR</varname>, смотрите + <xref linkend="staging"/>). Иерархия этого + каталога отражает иерархию каталогов системы, в которую + данный пакет будет устанавливаться.</para> + </step> + + <step> + <para>Выполняется цель <buildtarget>install</buildtarget>. + В систему копируются файлы, перечисленные в pkg-plist + порта.</para> </step> </procedure> @@ -608,8 +652,9 @@ PLIST_DIRS= lib/X11/oneko</programlisting> и не выполняется инфраструктурой портов.</para> </note> - <para>Теперь вы представляете, что происходит, когда пользователь - набирает команду <command>make</command>, теперь давайте пройдемся + <para>Теперь, когда вы представляете, что происходит, когда + пользователь набирает команду <command>make install</command>, + давайте пройдемся через шаги, рекомендуемые для создания настоящего порта.</para> </sect1> @@ -706,22 +751,44 @@ PLIST_DIRS= lib/X11/oneko</programlisting> <title>Создание патчей</title> <para>Файлы, которые добавлялись или изменялись в процессе создания - порта, могут быть выявлены вызовом программы &man.diff.1;, + порта, могут быть выявлены программой &man.diff.1;, а результат работы этой программы может быть в дальнейшем передан - программе &man.patch.1;. Каждый патч, который вы собираетесь - применить, должен быть сохранен в файл с именем + программе &man.patch.1;. Такое действие с обычным файлом + подразумевает сохранение копии файла с первоначальным содержимым + перед внесением каких-либо изменений.</para> + + <screen>&prompt.user; <userinput>cp <replaceable>file</replaceable> <replaceable>file</replaceable>.orig</userinput></screen> + + <para>Патчи сохраняются в виде файлов с именем <filename>patch-*</filename>, где - <replaceable>*</replaceable> обозначает путь к файлу, к которому - применяется патч, такой как + <replaceable>*</replaceable> обозначает путь к файлу, + к которому применяется патч, такой как <filename>patch-Imakefile</filename> или - <filename>patch-src-config.h</filename>. Эти файлы должны находиться в + <filename>patch-src-config.h</filename>.</para> + + <para>После того как файл был изменён, используется &man.diff.1; + для получения разницы между первоначальной и изменённой + версиями. Параметр <option>-u</option> указывает &man.diff.1; + выводить разницу в <quote>унифицированном</quote> формате, + который также является предпочтительным.</para> + + <screen>&prompt.user; <userinput>diff -u <replaceable>file</replaceable>.orig <replaceable>file</replaceable> > patch-<replaceable>pathname-file</replaceable></userinput></screen> + + <para>Для порождении патчей для новых добавляемых файлов + используется параметр <option>-N</option>, который заставляет + &man.diff.1; трактовать несуществующие прежде файлы как если + бы они существовали, но имели пустое содержимое:</para> + + <screen>&prompt.user; <userinput>diff -u -N <replaceable>newfile</replaceable>.orig <replaceable>newfile</replaceable> > patch-<replaceable>pathname-newfile</replaceable></userinput></screen> + + <para>Файлы с патчами помещаются в каталоге <varname>PATCHDIR</varname> - (как правило, это <filename>files/</filename>), + (как правило, это <filename class="directory">files/</filename>), откуда они будут взяты автоматически. Все патчи обязаны быть сделаны относительно каталога <varname>WRKSRC</varname> (как правило, это каталог, в который распаковывается исходный архив и где будет выполняться построение). Для упрощения внесения изменений и - обновлений вы должны избегать наличия более чем одного патча для + обновлений избегайте наличия более чем одного патча для одного и того же файла (например, патчей <filename>patch-file</filename> и <filename>patch-file2</filename>, оба меняющих файл <filename>WRKSRC/foobar.c</filename>). @@ -732,14 +799,23 @@ PLIST_DIRS= lib/X11/oneko</programlisting> соответствующий патч следует назвать <filename>patch-src-freeglut__joystick.c</filename>.</para> - <para>Пожалуйста, используйте для именования ваших патчей только символы + <para>Пожалуйста, используйте для именования патчей только символы <literal>[-+._a-zA-Z0-9]</literal>. Не используйте любые другие - символы, кроме этих. Не называйте ваши патчи как - <filename>patch-aa</filename> или <filename>patch-ab</filename> и - так далее, всегда ссылайтесь на путь и название файла в названиях + символы, кроме этих. Не называйте патчи как + <filename>patch-aa</filename> или <filename>patch-ab</filename>, + всегда ссылайтесь на путь и название файла в названиях самих патчей.</para> - <para>Не помещайте строки RCS в патчи. SVN будет изменять их при + <para>Существует альтернативный упрощённый способ создания + патчей для существующих файлов. Первые шаги те же самые: + создание копии неизменённого файла с расширением + <filename>.orig</filename> и внесение изменений. После этого + используйте <command>make makepatch</command>, чтобы обновить + файлы с патчами в каталоге <filename>files</filename> данного + порта.</para> + + <para>Не помещайте строки RCS в патчи. + <application>Subversion</application> будет изменять их при помещении файлов в дерево портов, и когда мы будем их оттуда извлекать, они будут уже другие, поэтому применение патчей окончится неудачей. Строчки RCS предваряются знаком доллара @@ -754,65 +830,72 @@ PLIST_DIRS= lib/X11/oneko</programlisting> резервными копиями файлов, файлы <filename>Makefile</filename>, когда как порт использует <command>Imake</command> или GNU-версию программы <command>configure</command>, и так далее, - не нужны, и должны быть удалены. Если вы отредактировали файл - <filename>configure.in</filename> и запустили - <command>autoconf</command> для перегенерации + не нужны, и должны быть удалены. Если было необходимо + отредактировать файл <filename>configure.in</filename> и + запустить <command>autoconf</command> для перегенерации <command>configure</command>, не нужно включать файлы diff для <command>configure</command> (они частенько вырастают до нескольких - тысяч строк!); задайте <literal>USE_AUTOTOOLS=autoconf:261</literal> и + тысяч строк!). Вместо этого задайте + <literal>USE_AUTOTOOLS=autoconf:261</literal> и включите diff-файл для <filename>configure.in</filename>.</para> - <para>Также постарайтесь минимизировать в ваших патчах объем + <para>Старайтесь минимизировать в патчах объём нефункциональных изменений с пустыми символами. В мире Открытого Исходного Кода является распространенным совместное использование проектами больших объемов кодовой базы, но с различными стилями - и правилами отступов. Если вы берете работающую функциональную - часть из одного проекта для исправления похожей области в другом, - то будьте аккуратны, пожалуйста: получаемый однострочный патч - может быть полон нефункциональных изменений. Это не только - увеличивает размер репозитория SVN, но также усложняет поиск того, - что конкретно вызвало проблему и что вы вообще изменили.</para> - - <para>Если вам нужно удалить файл, то вы можете сделать это при - выполнении цели <buildtarget>post-extract</buildtarget> вместо того, - чтобы оформлять это как часть патча.</para> + и правилами отступов. При копировании работающей функциональной + части из одного проекта для исправления похожей области в другом, + будьте аккуратны, пожалуйста: получаемый однострочный патч + может указаться полон нефункциональных изменений. Это не только + увеличивает размер репозитория <application>Subversion</application>, + но также усложняет поиск того, + что конкретно вызвало проблему и что вообще поменялось.</para> + + <para>Если нужно удалить файл, сделайте это при выполнении цели + <buildtarget>post-extract</buildtarget>, вместо того чтобы + оформлять это как часть патча.</para> <para>Простые перемещения могут быть выполнены непосредственно из <filename>Makefile</filename> порта с использованием &man.sed.1; в - режиме in-place. Это очень удобно, когда вам нужно применить патч - на значение переменной. Пример:</para> + режиме in-place. Это удобно, когда при изменении используется + значение переменной:</para> <programlisting>post-patch: @${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README</programlisting> - <para>Довольно часто бывают ситуации, когда портируемое программное - обеспечение, особенно если основной платформой разработки является - &windows;, использует конвенцию CR/LF для большинства своих исходных - файлов. Это может быть причиной проблем с дальнейшей упаковкой, - предупреждениями компилятора, выполнением скриптов - (<command>/bin/sh^M</command> not found) и так далее. Для быстрой + <para>Довольно часто в исходных файлах портируемого программного + обеспечения используется конвенция CR/LF. Это может стать + причиной проблем с дальнейшей упаковкой, предупреждениями + компилятора или выполнением скриптов (таких как + <literal>/bin/sh^M not found</literal>). Для быстрого преобразования всех файлов из CR/LF просто в LF добавьте - <literal>USE_DOS2UNIX=yes</literal> в <filename>Makefile</filename> - порта. Может быть указан перечень преобразуемых файлов:</para> + в <filename>Makefile</filename> порта эту запись:</para> + + <programlisting>USES= dos2unix</programlisting> + + <para>Может быть задан точный список преобразуемых файлов:</para> - <programlisting>USE_DOS2UNIX= util.c util.h</programlisting> + <programlisting>USES= dos2unix +DOS2UNIX_FILES= util.c util.h</programlisting> - <para>Если вы хотите преобразовать группу файлов в разных подкаталогах, - то для этого можно использовать <varname>DOS2UNIX_REGEX</varname>. + <para>Используйте <varname>DOS2UNIX_REGEX</varname>, чтобы + преобразовать группу файлов в разных подкаталогах. Его параметром является регулярное выражение, совместимое с - <command>find</command>. Подробнее о формате в &man.re.format.7;. - Эта опция используется для преобразования всех файлов заданного - расширения, к примеру всех исходных файлов, не затрагивая двоичные - файлы:</para> - - <programlisting>USE_DOS2UNIX= yes -DOS2UNIX_REGEX= .*\.(c|cpp|h)</programlisting> - - <para>Если вы хотите создать патч на основе существующего файла, то вы - можете его скопировать с расширением <filename>.orig</filename>, а - затем изменить исходный. Цель<buildtarget>makepatch</buildtarget> - запишет соответствующий файл с патчем в каталог - <filename>files</filename> данного порта.</para> + &man.find.1;. Подробнее о формате в &man.re.format.7;. + Такой вариант удобен для преобразования всех файлов заданного + расширения. Для примера, преобразуем все исходные файлы, + не затрагивая двоичные файлы:</para> + + <programlisting>USES= dos2unix +DOS2UNIX_REGEX= .*\.([ch]|cpp)</programlisting> + + <para>Другим вариантом является использование + <varname>DOS2UNIX_GLOB</varname>, который вызывает + <command>find</command> для каждого из перечисленных в нём + элементов.</para> + + <programlisting>USES= dos2unix +DOS2UNIX_GLOB= *.c *.cpp *.h</programlisting> </sect1> <sect1 xml:id="slow-configure"> @@ -913,13 +996,16 @@ DOS2UNIX_REGEX= .*\.(c|cpp|h)</programlisting> есть каждый раз, когда создателями выпускается новый официальный релиз), и добавляется к имени пакета, если оно не равно нулю. Изменения в <varname>PORTREVISION</varname> используются - автоматизированными инструментами (например, &man.pkg.version.1;) + автоматизированными инструментами (например, + <command>pkg version</command>, см. &man.pkg-version.8;) для определения факта появления нового пакета.</para> <para>Значение <varname>PORTREVISION</varname> должно увеличиваться каждый раз, когда в порте FreeBSD делаются изменения, которые - достаточно сильно затрагивают содержимое или структуру - соответствующего пакета.</para> + как-либо меняют получаемый пакет. Сюда относятся только + изменения, затрагивающие построение пакета с <link + linkend="makefile-options">параметрами</link> по + умолчанию.</para> <para>Примеры случаев, когда значение <varname>PORTREVISION</varname> должно быть увеличено:</para> @@ -1009,7 +1095,7 @@ DOS2UNIX_REGEX= .*\.(c|cpp|h)</programlisting> <title><varname>PORTEPOCH</varname></title> <para>Время от времени разработчик программного обеспечения или - создатель порта FreeBSD делают что-то не так и выпускают версию + создатель порта &os; делают что-то не так и выпускают версию программы, номер которой меньше предыдущей версии. Примером этого является порт, название которого меняется с foo-20000801 на foo-1.0 (изначально это не считалось бы более новой версией, так как @@ -1018,9 +1104,8 @@ DOS2UNIX_REGEX= .*\.(c|cpp|h)</programlisting> <tip> <para>Результат сравнения номера версии не всегда очевиден. Для выполнения сравнения двух строк с номером версии можно - использовать &man.pkg.version.1;. Эквивалентом в - <application>pkgng</application> является - <command>pkg version -t</command>. Например:</para> + использовать <command>pkg version</command> + (см. &man.pkg-version.8;). Например:</para> <screen>&prompt.user; <userinput>pkg_version -t 0.031 0.29</userinput> ></screen> @@ -1060,7 +1145,7 @@ DOS2UNIX_REGEX= .*\.(c|cpp|h)</programlisting> корректном использовании <varname>PORTVERSION</varname> может появиться необходимость её иметь, если в будущих релизах программное обеспечение должно изменить структуру номера версии. - Однако создателям портов нужно быть внимательными, когда + Однако создателям портов для &os; нужно быть внимательными, когда разработчик выпускает релиз без официального номера версии — эдакие <quote>промежуточные</quote> релизы. Имеется соблазн пометить релиз датой его выхода, что может вызвать проблемы, как и @@ -1091,7 +1176,7 @@ PORTVERSION= 0.10</programlisting> <para>Обнаружена брешь в безопасности, исправление которой потребовало создания - локального патча для FreeBSD. Соответственно было увеличено + локального патча для &os;. Соответственно было увеличено значение переменной <varname>PORTREVISION</varname>.</para> <programlisting>PORTNAME= gtkmumble @@ -1165,40 +1250,6 @@ PORTEPOCH= 1</programlisting> частью значения переменной <varname>PORTNAME</varname>.</para> </sect2> - <sect2> - <title><varname>LATEST_LINK</varname></title> - - <para><varname>LATEST_LINK</varname> задает в процессе построения - пакета короткое имя ссылки, которые могут использоваться при - выполнении команды <command>pkg_add -r</command>. Это позволяет, - к примеру, установить последнюю версию perl, используя - <command>pkg_add -r perl</command>, без знания точного номера - версии. Такое имя должно быть уникальным и очевидным для - пользователей.</para> - - <para>В некоторых случаях в коллекции портов может присутствовать - несколько версий программы одновременно. Обе системы, построения - индексов и построения пакетов, нуждаются в способности их видеть - как разные, независимые порты, хотя все они могут иметь схожее - значение для <varname>PORTNAME</varname>, - <varname>PKGNAMEPREFIX</varname> и даже - <varname>PKGNAMESUFFIX</varname>. В этих случаях для всех портов - кроме <quote>главного</quote> следует присвоить различные значения для - необязательной переменной <varname>LATEST_LINK</varname> — - чтобы получить пример ее использования, смотрите порты - <filename>lang/gcc46</filename> и <filename>lang/gcc</filename>, - а также семейство <filename>www/apache*</filename>. При установке - <varname>NO_LATEST_LINK</varname> ссылки не создаются; эта - необязательная переменная может быть указана во всех версиях, - кроме <quote>главной</quote>. Обратите - внимание, как выбирать <quote>главную</quote> версию — - <quote>самую популярную</quote>, <quote>самую поддерживаемую</quote>, - <quote>с наименьшими изменениями</quote> и так далее — это - выходит за рамки рекомендаций этого руководства; мы всего лишь - сообщаем вам, как указывать версии других портов после того, как - вы выбрали <quote>главный</quote>.</para> - </sect2> - <sect2 xml:id="porting-pkgname"> <title>Соглашения по именованию пакетов</title> @@ -1218,7 +1269,7 @@ PORTEPOCH= 1</programlisting> <orderedlist> <listitem> - <para>FreeBSD пытается поддерживать языки, на которых разговаривают + <para>&os; пытается поддерживать языки, на которых разговаривают её пользователи. Часть <replaceable>language-</replaceable> должна быть двухсимвольным сокращением от названия языка по стандарту ISO-639, если порт специфичен для конкретного языка. @@ -1262,9 +1313,8 @@ PORTEPOCH= 1</programlisting> имеют одинаковый <varname>PORTNAME</varname>, является вполне нормальным, как для портов <filename>www/apache*</filename>; в этом случае различные версии (и различные записи в индексе) - отличаются по значениям <varname>PKGNAMEPREFIX</varname>, - <varname>PKGNAMESUFFIX</varname> и - <varname>LATEST_LINK</varname>.</para> + отличаются по значениям <varname>PKGNAMEPREFIX</varname> + и <varname>PKGNAMESUFFIX</varname>.</para> </listitem> <listitem> @@ -1613,7 +1663,7 @@ PORTEPOCH= 1</programlisting> <row> <entry><filename>docs*</filename></entry> - <entry>Мета-порты для документации FreeBSD.</entry> + <entry>Мета-порты для документации &os;.</entry> <entry/> </row> @@ -1902,7 +1952,7 @@ PORTEPOCH= 1</programlisting> <row> <entry><filename>ports-mgmt</filename></entry> <entry>Порты для управления, установки и разработки - портов и пакетов FreeBSD.</entry> + портов и пакетов &os;.</entry> <entry/> </row> @@ -2158,7 +2208,9 @@ PORTEPOCH= 1</programlisting> <listitem> <para>Порты, устанавливающие загружаемые модули ядра, должны содержать виртуальную категорию <filename>kld</filename> в - строке <varname>CATEGORIES</varname>. + строке <varname>CATEGORIES</varname>. Это одно из действий, + выполняемых автоматически с добавлением + <literal>kmod</literal> в строке <varname>USES</varname>. </para> </listitem> @@ -2694,7 +2746,7 @@ EXTRACT_ONLY= source.tar.gz</programlisting> на сеть, которую это даёт.</para> <para>В последующих разделах информация будет даваться вместе с - реализацией этой идеи во FreeBSD. Мы несколько улучшили концепцию + реализацией этой идеи во &os;. Мы несколько улучшили концепцию OpenBSD.</para> <sect3> @@ -3358,9 +3410,9 @@ ALWAYS_KEEP_DISTFILES= yes <orderedlist> <listitem> <para>Старайтесь делать строку COMMENT длиной не больше, чем 70 - символов, так как эта строка будет использована программой - &man.pkg.info.1; для отображения однострочного описания - порта;</para> + символов, так как эта строка будет использована командой + <command>pkg info</command> (см. &man.pkg-info.8;) для + отображения однострочного описания порта;</para> </listitem> <listitem> @@ -3442,7 +3494,7 @@ ALWAYS_KEEP_DISTFILES= yes <para>Когда URL, в которых указаны доступные версии, отличаются от URL их загрузки. Например, чтобы привязать проверку новых версий дистрибутивных файлов к странице загрузки для порта - <package>databases/pgtune</package>, + <package role="port">databases/pgtune</package>, добавьте:</para> <programlisting>PORTSCOUT= site:http://pgfoundry.org/frs/?group_id=1000416</programlisting> @@ -3482,9 +3534,10 @@ ALWAYS_KEEP_DISTFILES= yes отсутствует.</para> <para>Зависимость проверяется дважды, один раз внутри цели - <buildtarget>extract</buildtarget>, а затем из цели + <buildtarget>build</buildtarget>, а затем из цели <buildtarget>install</buildtarget>. Кроме того, имя зависимости - помещается в пакет, так что &man.pkg.add.1; будет + помещается в пакет, так что <command>pkg install</command> + (см. &man.pkg-install.8;) будет автоматически её устанавливать, если её нет на пользовательской системе.</para> </sect2> @@ -3537,7 +3590,8 @@ ALWAYS_KEEP_DISTFILES= yes <para>Зависимость проверяется внутри цели <buildtarget>install</buildtarget>. Кроме того, имя зависимости - помещается в пакет, так что программа &man.pkg.add.1; + помещается в пакет, так что <command>pkg install</command> + (см. &man.pkg-install.8;) будет автоматически его устанавливать, если он не будет найден в пользовательской системе. Часть <replaceable>target</replaceable> может быть опущена, если она @@ -3562,7 +3616,7 @@ ALWAYS_KEEP_DISTFILES= yes которые обрабатываются в <filename>ports/Mk/bsd.*.mk</filename> для пополнения первоначальных зависимостей построения. Например, <literal>USES= gmake</literal> добавляет - <package>devel/gmake</package> в + <package role="port">devel/gmake</package> в <varname>BUILD_DEPENDS</varname>. Для предотвращения загрязнения <varname>RUN_DEPENDS</varname> подобными дополнительными зависимостями проявляйте осторожность с присвоением с раскрытием, @@ -3675,15 +3729,15 @@ ALWAYS_KEEP_DISTFILES= yes <sect2 xml:id="uses"> <title><varname>USES</varname></title> - <para>Существует несколько параметров для определения различных - видов характерных особенностей и зависимостей, которыми - обладает рассматриваемый порт. Они могут быть указаны путём - добавления следующей строки в <filename>Makefile</filename> - порта:</para> + <para>Могут быть добавлены параметры для определения различных + характерных особенностей и зависимостей, которыми + обладает данный порт. Они указываются путём добавления + в <filename>Makefile</filename> этой строки:</para> <programlisting>USES= feature[:arguments]</programlisting> - <para>Для получения полного списка значений смотрите <xref linkend="uses-values"/>.</para> + <para>Для получения полного списка значений смотрите + <xref linkend="uses-values"/>.</para> <warning> <para>Значение <varname>USES</varname> нельзя присваивать @@ -3855,7 +3909,7 @@ ALWAYS_KEEP_DISTFILES= yes <para>Технология построения портов не защищена от зацикленных зависимостей. Если вы создадите такую, то у кого-нибудь и - где-нибудь установка FreeBSD будет немедленно сломана, а у остальных + где-нибудь установка &os; будет немедленно сломана, а у остальных сломается несколько позже. Это на самом деле очень трудно распознать; если вы сомневаетесь, то перед внесением изменений проверьте, что выполнили следующее: <command>cd /usr/ports; make @@ -3880,7 +3934,7 @@ ALWAYS_KEEP_DISTFILES= yes <programlisting>.include <bsd.port.pre.mk> .if exists(${LOCALBASE}/bin/foo) -LIB_DEPENDS= bar:${PORTSDIR}/foo/bar +LIB_DEPENDS= libbar.so:${PORTSDIR}/foo/bar .endif</programlisting> </example> @@ -3904,7 +3958,7 @@ BAR_DESC= Bar support .include <bsd.port.options.mk> .if ${PORT_OPTIONS:MBAR} -LIB_DEPENDS= bar:${PORTSDIR}/foo/bar +LIB_DEPENDS= libbar.so:${PORTSDIR}/foo/bar .endif</programlisting> </example> @@ -3936,7 +3990,8 @@ LIB_DEPENDS= bar:${PORTSDIR}/foo/bar <para>В некоторых случаях для большего контроля над зависимостями используются переменные <varname>WANT_</varname>, которые позволяют указывать требования в более точной форме. - Например, взгляните на порт <package>mail/squirrelmail</package>. Этому порту + Например, взгляните на порт + <package role="port">mail/squirrelmail</package>. Этому порту нужны несколько модулей PHP, которые перечислены в переменной <varname>USE_PHP</varname>:</para> @@ -3948,8 +4003,8 @@ LIB_DEPENDS= bar:${PORTSDIR}/foo/bar <programlisting>WANT_PHP_WEB= yes</programlisting> <para>Имеющиеся переменные <varname>USE_</varname> и - <varname>WANT_</varname> определены в файлах - <filename>/usr/ports/Mk</filename>.</para> + <varname>WANT_</varname> определены в файлах в + <filename class="directory">/usr/ports/Mk</filename>.</para> </sect2> </sect1> @@ -3989,7 +4044,7 @@ RESOLUTION?= 300 .endif </programlisting> - <para>Порт <package>japanese/xdvi300</package> содержит + <para>Порт <package role="port">japanese/xdvi300</package> содержит также все обычные патчи, файлы для пакета и так далее. Если вы введете здесь команду <command>make</command>, она возьмет в качестве разрешения значение по умолчанию (300) и построит порт обычным образом.</para> @@ -4017,98 +4072,14 @@ MASTERDIR= ${.CURDIR}/../xdvi300 <sect1 xml:id="makefile-manpages"> <title>Страницы Справочника</title> - <para>Переменные <varname>MAN[1-9LN]</varname> автоматически добавят любые - страницы Справочника к файлу <filename>pkg-plist</filename> (это - означает, что вам <emphasis>не нужно</emphasis> указывать страницы - Справочника в файле <filename>pkg-plist</filename>—обратитесь к - главе о <link linkend="plist-sub">генерации файла PLIST</link> для - получения более подробной информации). Это также позволяет на этапе - установки автоматически упаковывать и распаковывать страницы - Справочника в зависимости от значения переменной - <varname>NO_MANCOMPRESS</varname> в файле - <filename>/etc/make.conf</filename>.</para> - - <para>Если ваш порт пытается задать несколько имен для страниц - Справочника при помощи символических или жестких ссылок, то вы должны - использовать переменную <varname>MLINKS</varname>, чтобы указать на - это. Ссылка, установленная вашим портом, будет уничтожена и создана - заново сценарием <filename>bsd.port.mk</filename> для проверки того, - что она указывает на правильный файл. Любые страницы Справочника, - перечисленные в переменной MLINKS, не должны фигурировать в файле - <filename>pkg-plist</filename>.</para> - - <para>Для указания того, что страницы Справочника нужно сжимать во - время установки, используйте переменную - <varname>MANCOMPRESSED</varname>. Эта переменная может принимать три - значения - <literal>yes</literal>, <literal>no</literal> и - <literal>maybe</literal>. <literal>yes</literal> означает, что - страницы Справочника устанавливаются уже сжатыми, <literal>no</literal> - означает, что они не сжимаются и <literal>maybe</literal> означает, что - программное обеспечение принимает во внимание значение переменной - <varname>NO_MANCOMPRESS</varname>, так что сценарию - <filename>bsd.port.mk</filename> ничего дополнительно делать не - нужно.</para> - <para>Если ваш порт определяет корнем для файлов Справочника каталог, отличный от <varname>PREFIX</varname>, вы можете использовать - переменную <varname>MANPREFIX</varname>, чтобы задать его явно. Кроме - того, если страницы только некоторых разделов помещаются в - нестандартное место, например, в случае портов модулей языка - <literal>perl</literal> Perl, вы можете установить маршруты к справочным - страницам индивидуально, при помощи - <varname>MAN<replaceable>sect</replaceable>PREFIX</varname> (где - <replaceable>sect</replaceable> принимает значения - <literal>1-9</literal>, <literal>L</literal> или - <literal>N</literal>).</para> - - <para>Если страницы Справочника помещаются в подкаталоги, соответствующие - некоторому языку, то задайте название языка языка в переменной - <varname>MANLANG</varname>. Значение этой переменной по умолчанию - равно <literal>""</literal> (то есть только английский язык).</para> - - <para>Вот пример, в котором приводятся все случаи.</para> - - <programlisting> -MAN1= foo.1 -MAN3= bar.3 -MAN4= baz.4 -MLINKS= foo.1 alt-name.8 -MANLANG= "" ja -MAN3PREFIX= ${PREFIX}/share/foobar -MANCOMPRESSED= yes - </programlisting> - - <para>Здесь указано, что этот порт устанавливает 6 файлов:</para> - - <programlisting>${MANPREFIX}/man/man1/foo.1.gz -${MANPREFIX}/man/ja/man1/foo.1.gz -${PREFIX}/share/foobar/man/man3/bar.3.gz -${PREFIX}/share/foobar/man/ja/man3/bar.3.gz -${MANPREFIX}/man/man4/baz.4.gz -${MANPREFIX}/man/ja/man4/baz.4.gz</programlisting> - - <para>Кроме того, файл - <filename>${MANPREFIX}/man/man8/alt-name.8.gz</filename> может быть, а - может и не быть установлен вашим портом. В любом случае будет создана - символическая ссылка для объединения страниц Справочника foo(1) и - alt-name(8).</para> - - <para>Если переведена только часть страниц справочника, вы можете - использовать некоторые переменные, созданные динамически из - содержимого <varname>MANLANG</varname>:</para> - - <programlisting>MANLANG= "" de ja -MAN1= foo.1 -MAN1_EN= bar.1 -MAN3_DE= baz.3</programlisting> - - <para>Что переводится в такой список файлов:</para> - - <programlisting>${MANPREFIX}/man/man1/foo.1.gz -${MANPREFIX}/man/de/man1/foo.1.gz -${MANPREFIX}/man/ja/man1/foo.1.gz -${MANPREFIX}/man/man1/bar.1.gz -${MANPREFIX}/man/de/man3/baz.3.gz</programlisting> + переменную <varname>MANDIRS</varname>, чтобы указать эти каталоги. + Обратите внимание, что файлы страниц справочника следует размещать + в <filename>pkg-plist</filename> наряду с остальными файлами. + <varname>MANDIRS</varname> предназначена для автоматического + сжатия страниц справочника, так чтобы имена файлов оканчивались + на <filename>.gz</filename>.</para> </sect1> <sect1 xml:id="makefile-info"> @@ -4123,7 +4094,7 @@ ${MANPREFIX}/man/de/man3/baz.3.gz</programlisting> использует другое место для размещения. Однако, это не рекомендуется делать. Эти записи всего лишь содержат путь относительно <filename>PREFIX/INFO_PATH</filename>. - Например, <package>lang/gcc34</package> устанавливает + Например, <package role="port">lang/gcc34</package> устанавливает файлы info в <filename>PREFIX/INFO_PATH/gcc34</filename>, и в <varname>INFO</varname> будет что-то вроде этого:</para> @@ -4205,7 +4176,7 @@ ${MANPREFIX}/man/de/man3/baz.3.gz</programlisting> <entry><varname>WITH_OPENSSL_PORT</varname></entry> <entry>Устанавливает версию OpenSSL из - <package>security/openssl</package>, + <package role="port">security/openssl</package>, даже если в базовой системе последняя версия.</entry> </row> </tbody> @@ -4417,7 +4388,7 @@ CONFIGURE_ARGS+= --without-postgres .endif .if ${PORT_OPTIONS:MICU} -LIB_DEPENDS+= icuuc:${PORTSDIR}/devel/icu +LIB_DEPENDS+= libicuuc.so:${PORTSDIR}/devel/icu .endif .if ! ${PORT_OPTIONS:MEXAMPLES} @@ -4752,6 +4723,24 @@ USES+= gmake CFLAGS+= -DTEST .endif</programlisting> + <para>Если установлена <varname>X_ABOVEVARIABLE_OFF</varname>, + то флаг <literal>ABOVEVARIABLE</literal> будет автоматически + выставлен при выключенном параметре <literal>X</literal>. + Например:</para> + + <programlisting>OPTIONS_DEFINE= OPT1 +OPT1_USES_OFF=gmake</programlisting> + + <para>соответствует:</para> + + <programlisting>OPTIONS_DEFINE= OPT1 + +.include <bsd.port.options.mk> + +.if ! ${PORT_OPTIONS:MOPT1} +USES+= gmake +.endif</programlisting> + <para>Для любого из следующих типов зависимости:</para> <itemizedlist> @@ -4801,6 +4790,24 @@ OPT1_LIB_DEPENDS= liba.so:${PORTSDIR}/devel/a</programlisting> .if ${PORT_OPTIONS:MOPT1} LIB_DEPENDS+= liba.so:${PORTSDIR}/devel/a .endif</programlisting> + + <para>Если установлена <varname>X_ABOVEVARIABLE_OFF</varname>, + то зависимость типа <literal>ABOVEVARIABLE</literal> будет + добавлена при выключенном параметре <literal>X</literal>. + Например:</para> + + <programlisting>OPTIONS_DEFINE= OPT1 +OPT1_LIB_DEPENDS_OFF= liba.so:${PORTSDIR}/devel/a</programlisting> + + <para>соответствует:</para> + + <programlisting>OPTIONS_DEFINE= OPT1 + +.include <bsd.port.options.mk> + +. if ! ${PORT_OPTIONS:MOPT1} +LIB_DEPENDS+= liba.so:${PORTSDIR}/devel/a +.endif</programlisting> </sect2> </sect1> @@ -4924,8 +4931,15 @@ PORTVERSION= 1.0</programlisting> <para>Используйте макросы, которые есть в файле <filename>bsd.port.mk</filename> для обеспечения правильных прав - доступа и владения файлов в своих целях - <buildtarget>*-install</buildtarget>.</para> + доступа файлов в целях <buildtarget>*-install</buildtarget> + порта. Устанавливайте права владения напрямую в + <filename>pkg-plist</filename> через соответствующие записи + <literal>@owner owner</literal> и + <literal>@group group</literal>. Эти операторы работают до + момента их переопределения или до конца + <filename>pkg-plist</filename>, поэтому не забывайте их + сбрасывать, когда они больше не нужны. По умолчанию владение + устанавливается для <literal>root:wheel</literal>.</para> <itemizedlist> <listitem> @@ -4987,23 +5001,35 @@ PORTVERSION= 1.0</programlisting> <literal>post-install</literal>. К примеру:</para> <programlisting>post-install: - ${STRIP_CMD} ${PREFIX}/bin/xdl</programlisting> + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/xdl</programlisting> + + <para>Удаление отладочной информации из нескольких + файлов:</para> + + <programlisting>post-install: + .for l in geometry media body track world + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}-${l}.so.0 + .endfor</programlisting> <para>Для проверки того, удалена ли отладочная информация из - установленного выполнимого файла, выполните команду &man.file.1;. - Если утилита не выдаст строку <literal>not stripped</literal>, то - файл уже обработан. Кроме того, &man.strip.1; не будет обрабатывать - программу, отладочная информация из которой уже удалена; вместо этого - утилита просто завершит свою работу.</para> + файла, используйте &man.file.1;. Для двоичных файлов + &man.file.1; печатает <literal>stripped</literal> или + <literal>not stripped</literal>. Кроме того, &man.strip.1; + определяет, была ли уже удалена из программы отладочная + информация, и в этом случае просто завершает свою работу.</para> </sect2> <sect2 xml:id="install-copytree"> <title>Установка целого дерева файлов</title> - <para>Иногда существует необходимость в установке большого количества - файлов с сохранением их иерархической организации, т.е. в копировании + <para>Иногда должно быть установлено большое количество файлов + с сохранением их иерархической организации. Например, копирование дерева каталогов целиком из <varname>WRKSRC</varname> в целевой - каталог внутри <varname>PREFIX</varname>.</para> + каталог внутри <varname>PREFIX</varname>. Обратите внимание, + что <varname>PREFIX</varname>, <varname>EXAMPLESDIR</varname>, + <varname>DATADIR</varname> и другие переменные пути всегда + должны предваряться <varname>STAGEDIR</varname>, чтобы не + ломать staging (смотрите <xref linkend="staging"/>).</para> <para>Для этой ситуации существует два макроса. Преимущество от использования этих макросов вместо команды <command>cp</command> @@ -5017,16 +5043,16 @@ PORTVERSION= 1.0</programlisting> <filename>PREFIX/share</filename>.</para> <programlisting>post-install: - ${MKDIR} ${EXAMPLESDIR} - (cd ${WRKSRC}/examples && ${COPYTREE_SHARE} . ${EXAMPLESDIR})</programlisting> + ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} + (cd ${WRKSRC}/examples && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR})</programlisting> <para>В этом примере устанавливается содержимое каталога <filename>examples</filename> из установочных файлов производителя в надлежащее место для примеров вашего порта.</para> <programlisting>post-install: - ${MKDIR} ${DATADIR}/summer - (cd ${WRKSRC}/temperatures && ${COPYTREE_SHARE} "June July August" ${DATADIR}/summer)</programlisting> + ${MKDIR} ${STAGEDIR}${DATADIR}/summer + (cd ${WRKSRC}/temperatures && ${COPYTREE_SHARE} "June July August" ${STAGEDIR}${DATADIR}/summer)</programlisting> <para>А в этом примере будут установлены данные летних месяцев в подкаталог <filename>summer</filename> каталога @@ -5039,14 +5065,19 @@ PORTVERSION= 1.0</programlisting> использовать следующую команду.</para> <programlisting>post-install: - ${MKDIR} ${EXAMPLESDIR} + ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} (cd ${WRKSRC}/examples && \ - ${COPYTREE_SHARE} . ${EXAMPLESDIR} "! -name Makefile")</programlisting> - - <para>Обратите внимание, что эти макросы не производят добавление - устанавливаемых файлов в <filename>pkg-plist</filename>. Вам все - еще нужно их перечислить.</para> - + ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR} "! -name Makefile")</programlisting> + + <para>Эти макросы не производят добавление устанавливаемых + файлов в <filename>pkg-plist</filename>. Они должны быть + добавлены туда вручную. Необязательные файлы документации + (<varname>PORTDOCS</varname>, смотрите + <xref linkend="install-documentation"/>) и примеров + (<varname>PORTEXAMPLES</varname>) всегда должны предваряться + в <filename>pkg-plist</filename> префиксами + <literal>%%PORTDOCS%%</literal> или + <literal>%%PORTEXAMPLES%%</literal>.</para> </sect2> <sect2 xml:id="install-documentation"> @@ -5067,16 +5098,17 @@ PORTVERSION= 1.0</programlisting> установленные одновременно, то вы можете использовать полное имя <varname>PKGNAME</varname>.</para> - <para>Сделайте установку документации зависящей от параметра - <literal>DOCS</literal> для того, чтобы пользователи могли - выключить это в файле <filename>/etc/make.conf</filename>, как - здесь:</para> + <para>Поскольку устанавливаются только файлы, перечисленные в + <filename>pkg-plist</filename>, безопасным способом будет + устанавливать документацию в <varname>STAGEDIR</varname> + всегда (смотрите <xref linkend="staging"/>). Следовательно, + блоки <literal>.if</literal> нужны только для файлов + достаточно большого размера, установка которых влечёт + значительные накладные расходы на операции ввода/вывода.</para> <programlisting>post-install: -.if ${PORT_OPTIONS:MDOCS} - ${MKDIR} ${DOCSDIR} - ${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${DOCSDIR} - .endif</programlisting> + ${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${STAGEDIR}${DOCSDIR}</programlisting> <para>Вот несколько полезных переменных и то, как они преобразуются по умолчанию при использовании в <filename>Makefile</filename>:</para> @@ -5166,10 +5198,10 @@ PORTVERSION= 1.0</programlisting> <varname>EXAMPLESDIR</varname> являются <varname>PORTDATA</varname> и <varname>PORTEXAMPLES</varname> соответственно.</para> - <para>Кроме того, вы можете использовать файл - <filename>pkg-message</filename> для вывода сообщений во - время установки. За подробной информацией обратитесь к <link linkend="porting-message">разделу об использовании - <filename>pkg-message</filename></link>. + <para>Во время установки выводится содержимое + <filename>pkg-message</filename>. За подробной информацией + обратитесь к <link linkend="porting-message">разделу об + использовании <filename>pkg-message</filename></link>. Файл <filename>pkg-message</filename> не нужно добавлять в <filename>pkg-plist</filename>.</para> </note> @@ -5212,6 +5244,72 @@ PORTVERSION= 1.0</programlisting> создании порта. Этот раздел описывает наиболее часто встречающиеся из них.</para> + <sect1 xml:id="staging"> + <title>Staging</title> + + <para><filename>bsd.port.mk</filename> ожидает от портов работу + с <quote>каталогом сборки</quote>. Это означает, что порт + должен устанавливать файлы не напрямую в назначенные каталоги + (то есть, например, под <varname>PREFIX</varname>), а в + отдельный каталог, из которого затем собирается пакет. + Во многих случаях привилегии root для этого не требуются, + что делает возможным сборку пакетов из-под непривилегированного + пользователя. В режиме staging порт собирается и устанавливается + в каталог сборки <varname>STAGEDIR</varname>. Пакет создается + из каталога сборки и затем устанавливается в систему. + В инструментарии automake такая концепция именуется + <varname>DESTDIR</varname>; в прочем, в &os; + <varname>DESTDIR</varname> имеет собственное значение + (смотрите <xref linkend="porting-prefix"/>).</para> + + <para>Если для порта всё ещё требуются системные привилегии при + выполнении цели <buildtarget>package</buildtarget>, то в + <filename>Makefile</filename> должна быть добавлена следующая + строка:</para> + + <programlisting>NEED_ROOT= yes</programlisting> + + <para>Метапорты, то есть порты, которые не устанавливают файлы + непосредственно, а только зависят от других портов, должны + по возможности избегать распаковки &man.mtree.8; в каталог + сборки. Это основная иерархия каталогов пакета, и эти пустые + каталоги будут выглядеть лишними. Для предотвращения + распаковки &man.mtree.8; добавьте эту строку:</para> + + <programlisting>NO_MTREE= yes</programlisting> + + <para>Staging задействуется посредством добавления переменной + <varname>STAGEDIR</varname> слева от путей, которые используются + в целях <buildtarget>pre-install</buildtarget>, + <buildtarget>do-install</buildtarget> и + <buildtarget>post-install</buildtarget> (смотрите примеры + в книге). Обычно сюда относятся + <varname>PREFIX</varname>, <varname>ETCDIR</varname>, + <varname>DATADIR</varname>, <varname>EXAMPLESDIR</varname>, + <varname>MANPREFIX</varname>, <varname>DOCSDIR</varname> и + так далее. Каталоги должны создаваться при выполнении цели + <buildtarget>post-install</buildtarget>. Избегайте + использования абсолютных путей, когда это возможно.</para> + + <para>При создании символический ссылки <varname>STAGEDIR</varname> + должен ставиться только для пути назначения. Например:</para> + + <programlisting>${LN} -sf libfoo.so.42 ${STAGEDIR}${PREFIX}/lib/libfoo.so</programlisting> + + <para>Первоначальный путь + <filename>${PREFIX}/lib/libfoo.so.42</filename> выглядит + нормально, но по факту может быть неправильным. Абсолютные + пути могут указывать на неподходящее место, например, когда + удалённая файловая система смонтирована по + <acronym>NFS</acronym> как непривилегированная точка + монтирования. Относительные пути реже подвержены проблемам + и часто намного короче.</para> + + <para>Порты, устанавливающие модули ядра, должны предварять путь + установки (по умолчанию <filename>/boot/modules</filename>) + переменной <varname>STAGEDIR</varname>.</para> + </sect1> + <sect1 xml:id="porting-shlibs"> <title>Динамические библиотеки</title> @@ -5248,10 +5346,10 @@ PORTVERSION= 1.0</programlisting> добры перепроверить, т.к. часто это вовсе не является необходимым и может быть решено иначе с помощью <literal>-rpath</literal> или установки <envar>LD_RUN_PATH</envar> во время компоновки (для - примера смотрите <package>lang/moscow_ml</package>), + примера смотрите <package role="port">lang/moscow_ml</package>), или с помощью сценария-обёртки, который выставляет <varname>LD_LIBRARY_PATH</varname> перед запуском исполняемого файла - как это делает <package>www/seamonkey</package>.</para> + как это делает <package role="port">www/seamonkey</package>.</para> <para>При установке 32-разрядных библиотек на 64-разрядной системе используйте вместо этого <varname>USE_LDCONFIG32</varname>.</para> @@ -5268,7 +5366,8 @@ PORTVERSION= 1.0</programlisting> </sect1> <sect1 xml:id="porting-restrictions"> - <title>Порты с ограничениями на распространение</title> + <title>Порты с ограничениями на распространение или с + правовым обременением</title> <para>Лицензии бывают разных видов, и некоторые накладывают ограничение на то, как приложение может быть оформлено в виде пакета, может ли @@ -5277,7 +5376,7 @@ PORTVERSION= 1.0</programlisting> <important> <para>На вас, как на человека, портирующего приложение, ложится обязанность прочесть лицензионные соглашения на программное - обеспечение и удостовериться, что проект FreeBSD не будет являться + обеспечение и удостовериться, что проект &os; не будет являться их нарушителем, если будет заниматься распространением исходного кода или в бинарном виде по FTP/HTTP или на CD-ROM. Если у вас возникли сомнения, то, пожалуйста, обратитесь в @@ -5375,14 +5474,33 @@ PORTVERSION= 1.0</programlisting> противном случае она пуста. Если ограничены в распространении лишь некоторые из дистрибутивных файлов, то в этой переменной задаётся их список.</para> + </sect2> - <para>Обратите внимание, что при включении порта в дерево исходных - текстов системы коммиттер должен добавить запись в файл - <filename>/usr/ports/LEGAL</filename> для каждого из перечисленных - файлов, в точности описав, что подразумевают ограничения.</para> + <sect2> + <title><varname>LEGAL_TEXT</varname></title> + + <para>Если порт имеет правовое обременение, которое не + покрывается перечисленными выше переменными, то переменной + <varname>LEGAL_TEXT</varname> следует присвоить строку с + описанием данного обременения. Например, если было получено + особое разрешение для &os; на распространение двоичного + файла, то эта переменная должна содержать соответствующее + указание.</para> </sect2> <sect2> + <title><filename>/usr/ports/LEGAL</filename> и + <varname>LEGAL</varname></title> + + <para>Порт, содержащий любую из перечисленных выше переменных, + также должен быть добавлен в <filename>/usr/ports/LEGAL</filename>. + Первый столбец содержит шаблон совпадения с дистрибутивными + файлами, имеющими ограничения на распространение. Второй + столбец содержит корень порта. Третий столбец содержит + вывод <command>make -VLEGAL</command>.</para> + </sect2> + + <sect2> <title>Примеры использования</title> <para>Предпочтительным способом реализации утверждения "архивы @@ -5415,20 +5533,14 @@ IGNORE= may not be redistributed because of licensing reasons. Please vi <acronym>CPU</acronym>, тем самым делая построение портов более быстрым и эффективным.</para> - <para>Это достигается путем передачи флага <varname>-jX</varname> - команде &man.make.1;. К сожалению, не все порты поддерживают - параллельную сборку достаточно хорошо. Поэтому требуется включать - этот механизм явным образом путем добавления строки - <literal>MAKE_JOBS_SAFE=yes</literal> в <filename>Makefile</filename> - где-нибудь после раздела с объявлениями зависимостей.</para> - - <para>Другой опцией управления этим механизмом с точки зрения - сопровождающего является <varname>MAKE_JOBS_UNSAFE=yes</varname>. + <para>Это достигается путём передачи флага <varname>-jX</varname> + команде &man.make.1;. Такое построение портов является + поведением по умолчанию. К сожалению, не все порты поддерживают + параллельную сборку достаточно хорошо, и поэтому может + потребоваться выключить этот механизм явным образом путём + добавления переменной <literal>MAKE_JOBS_UNSAFE=yes</literal>. Эта переменная используется в случае, когда известно, что порт - ломается с <varname>-jX</varname>, и пользователь форсирует - использование многопроцессорной компиляции для всех портов с - переменной <literal>FORCE_MAKE_JOBS=yes</literal> в - <filename>/etc/make.conf</filename>.</para> + ломается с <varname>-jX</varname>.</para> </sect2> <sect2 xml:id="using-make"> @@ -5613,6 +5725,38 @@ IGNORE= may not be redistributed because of licensing reasons. Please vi </tgroup> </table> + <table frame="none"> + <title>Переменные построения <command>cmake</command>, + устанавливаемые пользователем</title> + + <tgroup cols="2"> + <thead> + <row> + <entry>Переменная</entry> + <entry>Значение</entry> + </row> + </thead> + + <tbody> + <row> + <entry><varname>CMAKE_VERBOSE</varname></entry> + <entry>Разрешает подробный вывод сообщений при + построении. Значение по умолчанию не задано, + если не заданы <varname>BATCH</varname> или + <varname>PACKAGE_BUILDING</varname>.</entry> + </row> + + <row> + <entry><varname>CMAKE_NOCOLOR</varname></entry> + <entry>Запрещает цветной вывод сообщений при + построении. Значение по умолчанию не задано, + если не заданы <varname>BATCH</varname> или + <varname>PACKAGE_BUILDING</varname>.</entry> + </row> + </tbody> + </tgroup> + </table> + <para><application>CMake</application> поддерживает следующие профили построения: <literal>Debug</literal>, <literal>Release</literal>, @@ -5628,7 +5772,8 @@ IGNORE= may not be redistributed because of licensing reasons. Please vi в нижнем регистре в <varname>PLIST_SUB</varname> и должно использоваться, если порт устанавливает файлы <literal>*.cmake</literal> в зависимости от типа построения - (для примера посмотрите на <package>deskutils/strigi</package>). Следует + (для примера посмотрите на + <package role="port">deskutils/strigi</package>). Следует учитывать, что некоторые проекты могут определять собственные профили построения и/или форсировать конкретный тип построения через установку <literal>CMAKE_BUILD_TYPE</literal> в файлах @@ -5917,7 +6062,7 @@ CMAKE_SOURCE_PATH= ${WRKSRC}/subproject</programlisting> <para>Если для вашего порта требуется <literal>gettext</literal>, добавьте <literal>USES= gettext</literal>, и ваш порт - унаследует зависимость от <package>devel/gettext</package>. + унаследует зависимость от <package role="port">devel/gettext</package>. <xref linkend="uses-values"/> содержит перечень других значений для использования <literal>gettext</literal>.</para> @@ -6002,7 +6147,8 @@ PLIST_SUB+= NLS="@comment " перечисленные в <filename>PORTSDIR/Templates/BSD.local.dist</filename>. Каталоги для - множества других языков управляются с помощью порта <package>devel/gettext</package>. Обратите внимание + множества других языков управляются с помощью порта + <package role="port">devel/gettext</package>. Обратите внимание на его <filename>pkg-plist</filename> и посмотрите, куда данный порт собирается установить файлы каталогов сообщений для единственного в своем роде языка.</para> @@ -6170,6 +6316,18 @@ PLIST_SUB+= NLS="@comment " <programlisting>p5-IO-Tee>=0.64:${PORTSDIR}/devel/p5-IO-Tee</programlisting> </example> + + <para>Для портов Perl, которые устанавливают страницы справочника, + в <filename>pkg-plist</filename> можно использовать макрос + <varname>PERL5_MAN<replaceable>x</replaceable></varname> (где + <replaceable>x</replaceable> принимает значение от + <literal>1</literal> до <literal>9</literal>). Например,</para> + + <programlisting>lib/perl5/5.14/man/man3/AnyEvent::I3.3.gz</programlisting> + + <para>можно заменить на</para> + + <programlisting>%%PERL5_MAN3%%/AnyEvent::I3.3.gz</programlisting> </sect1> <sect1 xml:id="using-x11"> @@ -6250,9 +6408,9 @@ USE_XORG= x11 xpm</programlisting> <para>Если вашему порту требуется Motif, задайте переменную <varname>USES= motif</varname> в файле <filename>Makefile</filename>. Реализация Motif, используемая по умолчанию, находится в - <package>x11-toolkits/open-motif</package>. + <package role="port">x11-toolkits/open-motif</package>. Пользователи вместо этого могут выбрать - <package>x11-toolkits/lesstif</package> через + <package role="port">x11-toolkits/lesstif</package> через установку переменной <varname>WANT_LESSTIF</varname>.</para> <para>Переменная <varname>MOTIFLIB</varname> будет установлена в @@ -6392,9 +6550,9 @@ USE_XORG= x11 xpm</programlisting> <title>Использование GNOME</title> <para>Для задания того, какие компоненты GNOME использует конкретный - порт, проект FreeBSD/GNOME использует собственный набор переменных. - На странице проекта FreeBSD/GNOME - размещён <link xlink:href="http://www.FreeBSD.org/gnome/docs/porting.html"> + порт, проект &os;/GNOME использует собственный набор переменных. + На странице проекта &os;/GNOME размещён + <link xlink:href="http://www.FreeBSD.org/gnome/docs/porting.html"> исчерпывающий список этих переменных</link>.</para> </sect1> @@ -6411,16 +6569,6 @@ USE_XORG= x11 xpm</programlisting> <tgroup cols="2"> <tbody> <row> - <entry><varname>USE_QT_VER</varname></entry> - - <entry>Порт использует инструментальный пакет Qt. - Единственным возможным значением является - <literal>3</literal>. Соответствующие - параметры передаются в сценарий <command>configure</command> - и <command>make</command>.</entry> - </row> - - <row> <entry><varname>USE_QT4</varname></entry> <entry>Указывает инструменты и библиотеки в качестве @@ -6536,19 +6684,6 @@ USE_XORG= x11 xpm</programlisting> </tgroup> </table> - <para>Когда переменная <varname>USE_QT_VER</varname> определена - со значением <literal>3</literal>, - сценарию <command>configure</command> можно передавать некоторые - полезные настройки:</para> - - <programlisting>CONFIGURE_ARGS+= --with-qt-includes=${QT_PREFIX}/include \ - --with-qt-libraries=${QT_PREFIX}/lib \ - --with-extra-libs=${LOCALBASE}/lib \ - --with-extra-includes=${LOCALBASE}/include -CONFIGURE_ENV+= MOC="${MOC}" LIBS="${QTCFGLIBS}" \ - QTDIR="${QT_PREFIX}" KDEDIR="${KDE_PREFIX}" -CPPFLAGS+= ${QTCPPFLAGS}</programlisting> - <para>При заданной переменной <varname>USE_QT4</varname> применяются следующие настройки:</para> @@ -6566,7 +6701,7 @@ PLIST_SUB+= QT_INCDIR_REL=${QT_INCDIR_REL} \ </sect2> <sect2 xml:id="qt4-components"> - <title>Выбор компонентов (только для Qt 4.x)</title> + <title>Выбор компонентов</title> <para>В переменной <varname>USE_QT4</varname> должны указываться зависимости от отдельных инструментов и библиотек Qt 4. К каждому @@ -6737,27 +6872,61 @@ PLIST_SUB+= QT_INCDIR_REL=${QT_INCDIR_REL} \ </example> </sect2> - <sect2 xml:id="qt-additional"> - <title>Прочие соображения</title> + <sect2 xml:id="using-qmake"> + <title>Использование <command>qmake</command></title> + + <table frame="none"> + <title>Переменные для портов, использующих + <command>qmake</command></title> + + <tgroup cols="2"> + <thead> + <row> + <entry>Название</entry> + <entry>Описание</entry> + </row> + </thead> + + <tbody> + <row> + <entry><varname>QMAKE_ARGS</varname></entry> + <entry>Спефицичные для порта флаги + <application>QMake</application> для передачи + программе <command>qmake</command>.</entry> + </row> - <para>Если вместе с приложением вместо <filename>configure</filename> + <row> + <entry><varname>QMAKE_ENV</varname></entry> + <entry>Переменные окружения, устанавливаемые для + программы <command>qmake</command>. По умолчанию + соответствует значению + <literal>${CONFIGURE_ENV}</literal>.</entry> + </row> + + <row> + <entry><varname>QMAKE_PRO</varname></entry> + <entry>Название файла проекта <filename>.pro</filename>. + По умолчанию принимает пустое значение (с + использованием автоопределения).</entry> + </row> + </tbody> + </tgroup> + </table> + + <para>Если вместе с приложением вместо <filename>configure</filename> поставляется файл <filename>.pro</filename>, вы можете использовать следующее:</para> - <programlisting>HAS_CONFIGURE= yes + <programlisting>USES= qmake +USE_QT4= qmake_build</programlisting> -do-configure: - @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \ - ${QMAKE} ${QMAKEFLAGS} PREFIX=${PREFIX} texmaker.pro</programlisting> - - <para>Обратите внимание на сходство со строкой <command>qmake</command> - из прилагаемого сценария <filename>BUILD.sh</filename>. Передача - <varname>CONFIGURE_ENV</varname> обеспечивает видимость переменной - <varname>QMAKESPEC</varname> для <command>qmake</command>, без - которой команда не может работать. <command>qmake</command> - порождает стандартные Makefile, и, таким образом, отпадает - необходимость в написании своих собственных целей - <buildtarget>build</buildtarget>.</para> + <para><literal>USES=qmake</literal> указывает порту на + использование <command>qmake</command> в процессе + конфигурации. Обратите внимание, что + <literal>USES=qmake</literal> не подразумевает зависимость + от Qt 4 <command>qmake</command>. Для этого в значении + <literal>USE_QT4</literal> должен присутствовать компонент + <literal>qmake_build</literal>.</para> <para>Приложения Qt часто пишутся в кроссплатформенной манере, и X11/Unix часто не является для них платформой разработки, что в @@ -6774,8 +6943,8 @@ do-configure: добавила каталоги в пути поиска заголовочных файлов и библиотек через командную строку. К примеру:</para> - <programlisting>${QMAKE} ${QMAKEFLAGS} PREFIX=${PREFIX} INCLUDEPATH+=${LOCALBASE}/include \ - LIBS+=-L${LOCALBASE}/lib sillyapp.pro</programlisting> + <programlisting>QMAKE_ARGS+= INCLUDEPATH+=${LOCALBASE}/include \ + LIBS+=-L${LOCALBASE}/lib</programlisting> </listitem> <listitem> @@ -6783,7 +6952,7 @@ do-configure: Иногда данные, такие как иконки и файлы .desktop, устанавливаются по умолчанию в каталоги, которые не просматриваются XDG-совместимыми приложениями. Примером - является <package>editors/texmaker</package> - + является <package role="port">editors/texmaker</package> - взгляните на <filename>patch-texmaker.pro</filename> из каталога <filename>files</filename> этого порта, который можно взять в качестве шаблона исправления этого непосредственно в файле @@ -6951,7 +7120,7 @@ do-configure: </row> <row> - <entry>smokekde<literal/></entry> + <entry><literal>smokekde</literal></entry> <entry>Библиотеки KDE SMOKE</entry> </row> @@ -7006,7 +7175,8 @@ USE_QT4= moc_build qmake_build rcc_build uic_build</programlisting> <para>В Коллекции Портов присутствуют несколько JDK различных разработчиков и разных версий. Если ваш порт должен использовать одну из этих версий, то вы должны указать, какую именно. Самой - последней версией и версией по умолчанию является <package>java/openjdk6</package>.</para> + последней версией и версией по умолчанию является + <package role="port">java/openjdk6</package>.</para> <table frame="none"> <title>Переменные, которые которые могут задаваться портами, @@ -7321,8 +7491,35 @@ USE_QT4= moc_build qmake_build rcc_build uic_build</programlisting> использовать уже установленные (из каталога <filename>${JAVAJARDIR}</filename>).</para> + <para>При портировании приложения &java;, для запуска сервиса + которого требуется сервер приложений, такой как + <package role="port">www/tomcat7</package>, для производителя + в порядке вещей является распространение файла + <filename>.war</filename>. Файл <filename>.war</filename> + — это Веб-приложение АРхивированное и оно распаковывается + при вызове данным приложением. Избегайте добавлять файлы + <filename>.war</filename> в <filename>pkg-plist</filename>. + Это не является наилучшим решением. Сервер приложений + производит расширение архива <filename>war</filename> без + должной его очистки при удалении порта. Более подходящим + способом работы с этим файлом будет распаковать архив, + установить файлы и добавить их в + <filename>pkg-plist</filename>.</para> + + <programlisting>TOMCATDIR= ${LOCALBASE}/apache-tomcat-7.0 +WEBAPPDIR= myapplication + +post-extract: + @${MKDIR} ${WRKDIR}/${PORTDIRNAME} + @${TAR} xf ${WRKDIR}/myapplication.war -C ${WRKDIR}/${PORTDIRNAME} + +do-install: + cd ${WRKDIR} && \ + ${INSTALL} -d -o ${WWWOWN} -g ${WWWGRP} ${TOMCATDIR}/webapps/${PORTDIRNAME} + @cd ${WRKDIR}/${PORTDIRNAME} && ${COPYTREE_SHARE} \* ${WEBAPPDIR}/${PORTDIRNAME}</programlisting> + <para>Вне зависимости от типа вашего порта (библиотека это или - приложение), дополнительная документация должна быть устанавливаться + приложение), дополнительная документация должна устанавливаться <link linkend="install-documentation">в тоже самое место</link>, что и для других портов. Известно, что в зависимости от используемой версии JDK утилита JavaDoc генерирует различные наборы файлов. Для @@ -7357,7 +7554,8 @@ USE_QT4= moc_build qmake_build rcc_build uic_build</programlisting> в файле <filename>bsd.java.mk</filename>. Если вы предположите, что вашему порту требуется менее тривиальная поддержка Java, пожалуйста, взгляните сначала на <link xlink:href="http://svnweb.FreeBSD.org/ports/head/Mk/bsd.java.mk?view=markup">журнал - изменений bsd.java.mk в SVN</link>, так как для + изменений bsd.java.mk в + <application>Subversion</application></link>, так как для документирования последних изменений требуется какое-то время. Затем, если вы думаете, что не хватающая вам поддержка окажется полезной для многих других портов Java, обсудите ваш вопрос в @@ -7784,23 +7982,6 @@ _DOCSDIR= . </entry> </row> - <row> - <entry><varname>USE_TWISTED</varname></entry> - - <entry>Добавить зависимость от twistedCore. Перечень требуемых - компонентов может быть указан как значение этой переменной. - Пример: <literal>web lore pair flow</literal></entry> - </row> - - <row> - <entry><varname>USE_ZOPE</varname></entry> - - <entry>Добавить зависимость от Zope, платформы веб приложений. - Изменяет зависимость от Python на Python 2.7. Переменная - <varname>ZOPEBASEDIR</varname> содержит директорию с - установленным Zope.</entry> - </row> - </tbody> </tgroup> </table> @@ -7808,6 +7989,32 @@ _DOCSDIR= . <para>Полный перечень доступных переменных можно найти в <filename>/usr/ports/Mk/bsd.python.mk</filename>.</para> + <para>Некоторые приложения на Python заявляют о поддержке + <varname>DESTDIR</varname> (требуется для staging), которая + не работает (в частности, у Mailman до версии 2.1.16). + Ограничение можно обойти путём перекомпиляции сценариев. + Например, это можно выполнить в цели + <buildtarget>post-build</buildtarget>. С учётом того, что после + установки предполагаемое место размещения сценариев Python + будет находиться в <varname>PYTHONPREFIX_SITELIBDIR</varname>, + можно применить следующее решение:</para> + + <programlisting>(cd ${STAGEDIR}${PREFIX} \ + && ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \ + -d ${PREFIX} -f ${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;})</programlisting> + + <para>Эта команда перекомпилирует исходный текст с заменой путей + на относительные к каталогу сборки, а также дописывает значение + <varname>PREFIX</varname> перед именем файла, записанного в + выходном файле с промежуточным представлением, с использованием + <literal>-d</literal>. <literal>-f</literal> требуется для + безусловной перекомпиляции, а <literal>:S;${PREFIX}/;;</literal> + удаляет префиксы из значения переменной + <varname>PYTHONPREFIX_SITELIBDIR</varname>, чтобы сделать его + относительным к <varname>PREFIX</varname>.</para> + + <para>Для этого требуется Python 2.7 или выше. Это не + работает с Python 2.6.</para> </sect1> <sect1 xml:id="using-tcl"> @@ -8051,65 +8258,113 @@ _DOCSDIR= . <para>Переменная <varname>USE_SDL</varname> используется для автоматической настройки зависимостей для портов, использующих библиотеки на основе SDL, такие как - <package>devel/sdl12</package> или - <package>x11-toolkits/sdl_gui</package>.</para> + <package role="port">devel/sdl12</package> или + <package role="port">graphics/sdl_image</package>.</para> - <para>На данный момент распознаются следующие SDL-библиотеки:</para> + <para>Для версии 1.2 + на данный момент распознаются следующие SDL-библиотеки:</para> <itemizedlist> - <listitem> - <para>sdl: <package>devel/sdl12</package></para> - </listitem> + <listitem> + <para>sdl: <package + role="port">devel/sdl12</package></para> + </listitem> - <listitem> - <para>gfx: <package>graphics/sdl_gfx</package></para> - </listitem> + <listitem> + <para>console: <package + role="port">devel/sdl_console</package></para> + </listitem> - <listitem> - <para>gui: <package>x11-toolkits/sdl_gui</package></para> - </listitem> + <listitem> + <para>gfx: <package + role="port">graphics/sdl_gfx</package></para> + </listitem> - <listitem> - <para>image: <package>graphics/sdl_image</package></para> - </listitem> + <listitem> + <para>image: <package + role="port">graphics/sdl_image</package></para> + </listitem> - <listitem> - <para>ldbad: <package>devel/sdl_ldbad</package></para> - </listitem> + <listitem> + <para>mixer: <package + role="port">audio/sdl_mixer</package></para> + </listitem> - <listitem> - <para>mixer: <package>audio/sdl_mixer</package></para> - </listitem> + <listitem> + <para>mm: <package + role="port">devel/sdlmm</package></para> + </listitem> - <listitem> - <para>mm: <package>devel/sdlmm</package></para> - </listitem> + <listitem> + <para>net: <package + role="port">net/sdl_net</package></para> + </listitem> - <listitem> - <para>net: <package>net/sdl_net</package></para> - </listitem> + <listitem> + <para>pango: <package + role="port">x11-toolkits/sdl_pango</package></para> + </listitem> - <listitem> - <para>sound: <package>audio/sdl_sound</package></para> - </listitem> + <listitem> + <para>sound: <package + role="port">audio/sdl_sound</package></para> + </listitem> - <listitem> - <para>ttf: <package>graphics/sdl_ttf</package></para> - </listitem> + <listitem> + <para>ttf: <package + role="port">graphics/sdl_ttf</package></para> + </listitem> + </itemizedlist> + + <para>Для версии 2.0 + на данный момент распознаются следующие SDL-библиотеки:</para> + + <itemizedlist> + <listitem> + <para>sdl: <package + role="port">devel/sdl20</package></para> + </listitem> + + <listitem> + <para>gfx: <package + role="port">graphics/sdl2_gfx</package></para> + </listitem> + + <listitem> + <para>image: <package + role="port">graphics/sdl2_image</package></para> + </listitem> + + <listitem> + <para>mixer: <package + role="port">audio/sdl2_mixer</package></para> + </listitem> + + <listitem> + <para>net: <package + role="port">net/sdl2_net</package></para> + </listitem> + + <listitem> + <para>ttf: <package + role="port">graphics/sdl2_ttf</package></para> + </listitem> </itemizedlist> <para>Таким образом, если порт имеет зависимость от - <package>net/sdl_net</package> и - <package>audio/sdl_mixer</package>, то строка будет + <package role="port">net/sdl_net</package> и + <package role="port">audio/sdl_mixer</package>, то строка будет следующей:</para> <programlisting>USE_SDL= net mixer</programlisting> - <para>Зависимость от порта <package>devel/sdl12</package>, который требуется для <package>net/sdl_net</package> и <package>audio/sdl_mixer</package> будет также автоматически - добавлен.</para> + <para>Зависимость от порта <package role="port">devel/sdl12</package>, + который требуется для <package role="port">net/sdl_net</package> + и <package role="port">audio/sdl_mixer</package>, будет также + автоматически добавлен.</para> - <para>Если вы используете <varname>USE_SDL</varname>, то - он автоматически:</para> + <para>Если вы используете <varname>USE_SDL</varname> с элементами + SDL 1.2, то он автоматически:</para> <itemizedlist> <listitem> @@ -8129,6 +8384,27 @@ _DOCSDIR= . </listitem> </itemizedlist> + <para>Если вы используете <varname>USE_SDL</varname> с элементами + SDL 2.0, то он автоматически:</para> + + <itemizedlist> + <listitem> + <para>Добавляет зависимость от + <application>sdl2-config</application> к + <varname>BUILD_DEPENDS</varname></para> + </listitem> + + <listitem> + <para>Добавляет переменную <varname>SDL2_CONFIG</varname> к + <varname>CONFIGURE_ENV</varname></para> + </listitem> + + <listitem> + <para>Добавляет зависимости от указанных библиотек к + <varname>LIB_DEPENDS</varname></para> + </listitem> + </itemizedlist> + <para>Для проверки наличия библиотеки SDL вы можете делать это при помощи переменной <varname>WANT_SDL</varname>:</para> @@ -8233,19 +8509,22 @@ USE_SDL+= mixer <row> <entry><literal>2.4</literal></entry> - <entry><package>x11-toolkits/wxgtk24</package></entry> + <entry><package + role="port">x11-toolkits/wxgtk24</package></entry> </row> <row> <entry><literal>2.6</literal></entry> - <entry><package>x11-toolkits/wxgtk26</package></entry> + <entry><package + role="port">x11-toolkits/wxgtk26</package></entry> </row> <row> <entry><literal>2.8</literal></entry> - <entry><package>x11-toolkits/wxgtk28</package></entry> + <entry><package + role="port">x11-toolkits/wxgtk28</package></entry> </row> </tbody> </tgroup> @@ -8845,19 +9124,22 @@ PLIST_SUB+= VERSION="${VER_STR}" <row> <entry><literal>4.0</literal></entry> - <entry><package>lang/lua4</package></entry> + <entry><package + role="port">lang/lua4</package></entry> </row> <row> <entry><literal>5.0</literal></entry> - <entry><package>lang/lua50</package></entry> + <entry><package + role="port">lang/lua50</package></entry> </row> <row> <entry><literal>5.1</literal></entry> - <entry><package>lang/lua</package></entry> + <entry><package + role="port">lang/lua</package></entry> </row> </tbody> </tgroup> @@ -9335,55 +9617,205 @@ CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}" </sect2> </sect1> + <sect1 xml:id="using-iconv"> + <title>Использование <command>iconv</command></title> + + <para>После 10-08-2013 (<revnumber>254273</revnumber>) + в составе &os; 10-CURRENT и более новых версий имеется + собственный <command role="port">iconv</command>. В более + ранних версиях дополнительной зависимостью выступал + <package role="port">converters/libiconv</package>.</para> + + <para>Для программного обеспечения, которому нужен + <command>iconv</command>, определите + <literal>USES=iconv</literal>. Версии &os; до + 10-CURRENT от 13-08-2013 (<revnumber>254273</revnumber>) не + имеют собственного <command>iconv</command>. На этих более + ранных версиях будет автоматически добавлена зависимость от + <package role="port">converters/libiconv</package>.</para> + + <para>Когда порт задаёт <literal>USES=iconv</literal>, становятся + доступными следующие переменные:</para> + + <informaltable frame="none" pgwide="0"> + <tgroup cols="4"> + <thead> + <row> + <entry>Имя переменной</entry> + <entry>Назначение</entry> + <entry>Значение до &os; 10-CURRENT + <revnumber>254273</revnumber> (13-08-2013)</entry> + <entry>Значение после &os; 10-CURRENT + <revnumber>254273</revnumber> (13-08-2013)</entry> + </row> + </thead> + + <tbody> + <row> + <entry><varname>ICONV_CMD</varname></entry> + <entry>Каталог размещения двоичного файла + <command>iconv</command></entry> + <entry><literal>${LOCALBASE}/bin/iconv</literal></entry> + <entry><filename>/usr/bin/iconv</filename></entry> + </row> + + <row> + <entry><varname>ICONV_LIB</varname></entry> + <entry>Аргумент <command>ld</command> для компоновки с + <filename>libiconv</filename> (если нужно)</entry> + <entry><literal>-liconv</literal></entry> + <entry>(пусто)</entry> + </row> + + <row> + <entry><varname>ICONV_PREFIX</varname></entry> + <entry>Каталог размещения реализации + <command>iconv</command> (используется для сценариев + конфигурации)</entry> + <entry><literal>${LOCALBASE}</literal></entry> + <entry><filename>/usr</filename></entry> + </row> + + <row> + <entry><varname>ICONV_CONFIGURE_ARG</varname></entry> + <entry>Параметр предварительно собранной конфигурации + для сценариев конфигурации</entry> + <entry><literal>--with-libiconv-prefix=${LOCALBASE}</literal></entry> + <entry>(пусто)</entry> + </row> + + <row> + <entry><varname>ICONV_CONFIGURE_BASE</varname></entry> + <entry>Параметр предварительно собранной конфигурации + для сценариев конфигурации</entry> + <entry><literal>--with-libiconv=${LOCALBASE}</literal></entry> + <entry>(пусто)</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>В следующих двух примерах демонстрируется автоматическое + присвоение переменным правильных значений для систем, + использующих <package role="port">converters/libiconv</package> + или собственный <command>iconv</command>.</para> + + <example xml:id="iconv-simple-use"> + <title>Простое использование <command>iconv</command></title> + + <programlisting>USES= iconv +LDFLAGS+= -L${LOCALBASE}/lib ${ICONV_LIB}</programlisting> + </example> + + <example xml:id="iconv-configure-use"> + <title>Использование <command>iconv</command> с + <command>configure</command></title> + + <programlisting>USES= iconv +CONFIGURE_ARGS+=${ICONV_CONFIGURE_ARG}</programlisting> + </example> + + <para>Как показано выше, <varname>ICONV_LIB</varname> имеет + пустое значение с собственным <command>iconv</command>. Эту + особенность можно использовать для обнаружения собственного + <command>iconv</command> с соответствующими действиями.</para> + + <para>Иногда в программе параметр <command>ld</command> или путь + поиска жёстко заданы в <filename>Makefile</filename> или + сценарии конфигурации. Для решения этой проблемы можно + использовать следующий подход:</para> + + <example xml:id="iconv-reinplace"> + <title>Исправление жёстко заданного + <literal>-liconv</literal></title> + + <programlisting>USES= iconv + +post-patch: + @${REINPLACE_CMD} -e 's/-liconv/${ICONV_LIB}/' ${WRKSRC}/Makefile</programlisting> + </example> + + <para>В некоторых случаях необходимо установить альтернативные + значения или выполнить операции в случае использования + собственного <command>iconv</command>. Перед проверкой + значения <varname>ICONV_LIB</varname> обязан быть подключён + <filename>bsd.port.pre.mk</filename>:</para> + + <example xml:id="iconv-conditional"> + <title>Проверка доступности собственного + <command>iconv</command></title> + + <programlisting>USES= iconv + +.include <bsd.port.pre.mk> + +post-patch: +.if empty(ICONV_LIB) + # обнаружен собственный iconv + @${REINPLACE_CMD} -e 's|iconv||' ${WRKSRC}/Config.sh +.endif + +.include <bsd.port.post.mk></programlisting> + </example> + </sect1> + <sect1 xml:id="using-xfce"> <title>Использование Xfce</title> <para>Переменная <varname>USE_XFCE</varname> используется для автоматической конфигурации зависимостей для портов, использующих библиотеки или приложения на основе Xfce, такие как - <package>x11-toolkits/libxfce4gui</package> и - <package>x11-wm/xfce4-panel</package>.</para> + <package role="port">x11-toolkits/libxfce4gui</package> и + <package role="port">x11-wm/xfce4-panel</package>.</para> <para>В настоящее время распознаются следующие библиотеки и приложения Xfce:</para> <itemizedlist> <listitem> - <para>libexo: <package>x11/libexo</package></para> + <para>libexo: <package + role="port">x11/libexo</package></para> </listitem> <listitem> - <para>libgui: <package>x11-toolkits/libxfce4gui</package></para> + <para>libgui: <package + role="port">x11-toolkits/libxfce4gui</package></para> </listitem> <listitem> - <para>libutil: <package>x11/libxfce4util</package></para> + <para>libutil: <package + role="port">x11/libxfce4util</package></para> </listitem> <listitem> - <para>libmcs: <package>x11/libxfce4mcs</package></para> + <para>libmcs: <package + role="port">x11/libxfce4mcs</package></para> </listitem> <listitem> - <para>mcsmanager: <package>sysutils/xfce4-mcs-manager</package></para> + <para>mcsmanager: <package + role="port">sysutils/xfce4-mcs-manager</package></para> </listitem> <listitem> - <para>panel: <package>x11-wm/xfce4-panel</package></para> + <para>panel: <package + role="port">x11-wm/xfce4-panel</package></para> </listitem> <listitem> - <para>thunar: <package>x11-fm/thunar</package></para> + <para>thunar: <package + role="port">x11-fm/thunar</package></para> </listitem> <listitem> - <para>wm: <package>x11-wm/xfce4-wm</package></para> + <para>wm: <package + role="port">x11-wm/xfce4-wm</package></para> </listitem> <listitem> - <para>xfdev: <package>dev/xfce4-dev-tools</package></para> + <para>xfdev: <package + role="port">dev/xfce4-dev-tools</package></para> </listitem> - </itemizedlist> <para>Распознаются следующие дополнительные параметры:</para> @@ -9401,7 +9833,7 @@ CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}" </itemizedlist> <para>Следовательно, если у порта имеется зависимость от - <package>sysutils/xfce4-mcs-manager</package>, и + <package role="port">sysutils/xfce4-mcs-manager</package>, и порт требует специальных CPPFLAGS в своем окружении configure, то синтаксис будет следующим:</para> @@ -9512,7 +9944,7 @@ CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}" <entry>Если переменная установлена в <literal>yes</literal>, добавляет зависимость от порта - <package>databases/db41</package>. + <package role="port">databases/db41</package>. Также переменной можно присвоить значения: 2, 3, 40, 41, 42, 43, 44, 46, 47, 48 или 51. Вы можете объявить диапазон принимаемых значений, <varname>USE_BDB</varname>=42+ @@ -9525,7 +9957,7 @@ CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}" <entry>Если переменная установлена в <literal>yes</literal>, добавляет зависимость от порта - <package>databases/mysql55-client</package>. + <package role="port">databases/mysql55-client</package>. Как связанная переменная, <varname>WANT_MYSQL_VER</varname> может быть установлена в значение 323, 40, 41, 50, 51, 52, 55 или 60.</entry> @@ -9535,7 +9967,7 @@ CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}" <entry><varname>USE_PGSQL</varname></entry> <entry>Если установлена в <literal>yes</literal>, добавляет - зависимость от порта <package>databases/postgresql90-client</package>. + зависимость от порта <package role="port">databases/postgresql90-client</package>. Как связанная переменная, <varname>WANT_PGSQL_VER</varname> может быть установлена в значение 83, 84, 90, 91 или 92. Вы можете указать @@ -9549,7 +9981,7 @@ CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}" <entry><varname>USE_SQLITE</varname></entry> <entry>Если переменная имеет значение <literal>yes</literal>, - добавляет зависимость от порта <package>databases/sqlite3</package>. + добавляет зависимость от порта <package role="port">databases/sqlite3</package>. Переменная может принимать значения: 3, 2.</entry> </row> </tbody> @@ -9584,14 +10016,6 @@ CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}" <literal>%%PREFIX%%</literal> и <literal>%%LOCALBASE%%</literal>. Подробнее о <varname>SUB_LIST</varname> в <link linkend="using-sub-files">соответствующей главе</link>.</para> - <para>До &os; 6.1-RELEASE интеграция с &man.rcorder.8; доступна - через использование <varname>USE_RCORDER</varname> вместо - <varname>USE_RC_SUBR</varname>. Однако, использовать этот метод - не нужно, если ваш порт не включает опцию по своей установке в - основную систему или службе не нужно запускаться до выполнения - сценария <filename>FILESYSTEMS</filename> из <filename>rc.d</filename> - основной системы.</para> - <para>Начиная с &os; 6.1-RELEASE локальные сценарии <filename>rc.d</filename> (включая установленные из портов) включены в общий &man.rcorder.8; основной системы.</para> @@ -9672,11 +10096,6 @@ run_rc_command "$1"</programlisting> <literal>_enable</literal> является обязательной; значением по умолчанию должно быть ":".</para> - <note> - <para>Новые сценарии следует добавлять без окончания - <filename>.sh</filename>.</para> - </note> - <sect2> <title>Контрольный список перед внесением изменений</title> @@ -9685,12 +10104,16 @@ run_rc_command "$1"</programlisting> сверьтесь со следующим контрольным списком, чтобы убедиться, что порт для этого готов.</para> + <para>Большинство из этих проверок умеет выполнять порт + <package role="port">devel/rclint</package>, но это не + является заменой надлежащему просмотру.</para> + <procedure> <step> <para>Если это новый файл, заканчивается ли он на <filename>.sh</filename>? Если это так, то имя файла должно быть изменено на <filename>file.in</filename>, поскольку - новые файлы <filename>rc.d</filename> не могут оканчиваться + файлы <filename>rc.d</filename> не могут оканчиваться на такое расширение.</para> </step> @@ -9717,7 +10140,7 @@ run_rc_command "$1"</programlisting> <step> <para>Содержит ли строка <literal>REQUIRE</literal> значение LOGIN? Это условие обязательно для сценариев, работающих не - из под суперпользователя. Если сценарий запускается из-под + из-под суперпользователя. Если сценарий запускается из-под суперпользователя, то стоит ли его запускать до <literal>LOGIN</literal>? Если нет, то его следует запускать после, так чтобы мы могли свободно сгруппировать локальные @@ -9732,7 +10155,7 @@ run_rc_command "$1"</programlisting> <step> <para>Убедитесь в том, что в сценарии отсутствует - <literal>KEYWORD: FreeBSD</literal>. Это перестало быть + <literal>KEYWORD: &os;</literal>. Это перестало быть нужным и нежелательно уже много лет. Это также служит индикатором того, что новый сценарий был скопирован со старого, поэтому особое внимание должно быть уделено при @@ -9855,9 +10278,11 @@ run_rc_command "$1"</programlisting> компиляции нужны файлы с исходными текстами ядра. Ниже указан корректный способ определения, установлены ли они пользователем:</para> - <programlisting>.if !exists(${SRC_BASE}/sys/Makefile) -IGNORE= requires kernel sources to be installed -.endif</programlisting> + <programlisting>USES= kmod</programlisting> + + <para>Кроме этой проверки, <literal>kmod</literal> заботится о + большинстве пунктов, которые должны учитываться в этих + портах.</para> </sect1> </chapter> @@ -9923,7 +10348,7 @@ PLIST_SUB+= X11="@comment " <programlisting>%%X11%%bin/foo-gui</programlisting> - <para>Эта подстановка (также, как и добавление любых <link linkend="makefile-manpages">справочных страниц</link>) будет сделана + <para>Эта подстановка будет сделана между выполнением целей <buildtarget>pre-install</buildtarget> и <buildtarget>do-install</buildtarget>, посредством чтения файла <filename>PLIST</filename> и записью в файл @@ -9990,7 +10415,8 @@ lib/X11/oneko/sounds/cat.au <programlisting>@dirrmtry share/doc/gimp</programlisting> <para>Эта команда не выведет никаких сообщений об ошибках и не вызовет - аварийного завершения работы &man.pkg.delete.1;, даже если + аварийного завершения работы <command>pkg delete</command> + (см. &man.pkg-delete.8;), даже если каталог <filename>${PREFIX}/share/doc/gimp</filename> не пуст из-за того, что другие порты установили сюда какие-то файлы.</para> @@ -10001,7 +10427,8 @@ lib/X11/oneko/sounds/cat.au <para>Пустым каталогам, создаваемым во время установки порта, нужно особое внимание. Они не будут созданы при установке пакета, потому - что пакеты содержат только файлы, а &man.pkg.add.1; создает для них + что пакеты содержат только файлы, а <command>pkg add</command> + и <command>pkg install</command> создают для них каталоги по мере надобности. Чтобы убедиться, что пустой каталог создается при установке пакета, добавьте эту строку в <filename>pkg-plist</filename> перед соответствующей строкой @@ -10019,7 +10446,7 @@ lib/X11/oneko/sounds/cat.au <filename>PREFIX/etc</filename> (или куда-то еще), <emphasis>не</emphasis> делайте их простого перечисления в файле <filename>pkg-plist</filename>. Это приведёт к тому, что по команде - &man.pkg.delete.1; или при новой установке файлы, + <command>pkg delete</command> или при новой установке файлы, тщательно отредактированные и настроенные пользователем, будут уничтожены.</para> @@ -10036,7 +10463,7 @@ lib/X11/oneko/sounds/cat.au <programlisting>post-install: @if [ ! -f ${PREFIX}/etc/orbit.conf ]; then \ - ${CP} -p ${PREFIX}/etc/orbit.conf.sample ${PREFIX}/etc/orbit.conf ; \ + ${CP} -p ${PREFIX}/etc/orbit.conf.sample ${STAGEDIR}${PREFIX}/etc/orbit.conf ; \ fi</programlisting> <para>Добавьте по три строки в <filename>pkg-plist</filename> для @@ -10065,7 +10492,7 @@ etc/orbit.conf.sample <para>Для получения дополнительной инфорации по использованию <literal>%D</literal> и прочих маркеров подстановки обратитесь - к странице Справочника &man.pkg.create.1;.</para> + к странице Справочника &man.pkg-create.8;.</para> <para>Если существует действительно стоящая причина не устанавливать рабочий файл конфигурации по умолчанию, уберите строку @@ -10111,53 +10538,18 @@ etc/orbit.conf.sample которые изменяют список упаковки на основе версии используемого им программного обеспечения (например, порты, которые порождают документы при помощи <application>Javadoc</application>).</para> - - <para>Сопровождающим, которые предпочитают динамические списки - упаковки, рекомендуется добавлять в свои порты новую цель, - которая производит файл <filename>pkg-plist</filename>, чтобы - пользователи могли изучать содержимое.</para> - </sect1> <sect1 xml:id="plist-autoplist"> <title>Автоматическое создание списка упаковки</title> <para>Первым делом убедитесь, что ваш порт практически полностью - завершён и осталось создать только <filename>pkg-plist</filename>.</para> - - <para>Далее создайте временное дерево каталогов, куда может быть - установлен ваш порт, и установите все зависимости.</para> + завершён и осталось создать только <filename>pkg-plist</filename>. + После этого вы можете запустить <command>make makeplist</command> + для автоматического создания <filename>pkg-plist</filename>. + Содержимое этого файла должно быть дважды перепроверено.</para> - <screen>&prompt.root; <userinput>mkdir /var/tmp/`make -V PORTNAME`</userinput> -&prompt.root; <userinput>mtree -U -f `make -V MTREE_FILE` -d -e -p /var/tmp/`make -V PORTNAME`</userinput> -&prompt.root; <userinput>make depends PREFIX=/var/tmp/`make -V PORTNAME`</userinput></screen> - - <para>Сохраните структуру каталогов в новом файле.</para> - - <screen>&prompt.root; <userinput>(cd /var/tmp/`make -V PORTNAME` && find -d * -type d) | sort > OLD-DIRS</userinput></screen> - - <para>Создайте пустой файл <filename>pkg-plist</filename>:</para> - - <screen>&prompt.root; <userinput>:>pkg-plist</userinput></screen> - - <para>Если ваш порт принимает во внимание <varname>PREFIX</varname> (а он - должен это делать), то тогда вы можете установить порт и создать список - упаковки.</para> - - <screen>&prompt.root; <userinput>make install PREFIX=/var/tmp/`make -V PORTNAME`</userinput> -&prompt.root; <userinput>(cd /var/tmp/`make -V PORTNAME` && find -d * \! -type d) | sort > pkg-plist</userinput></screen> - - <para>Кроме того, в список упаковки вы должны добавить все вновь - созданные каталоги.</para> - - <screen>&prompt.root; <userinput>(cd /var/tmp/`make -V PORTNAME` && find -d * -type d) | sort | comm -13 OLD-DIRS - | sort -r | sed -e 's#^#@dirrm #' >> pkg-plist</userinput></screen> - - <para>И наконец, вам нужно вручную отшлифовать список упаковки; его - создание автоматизировано <emphasis>не полностью</emphasis>. Страницы - справочной системы должны быть перечислены в файле - <filename>Makefile</filename> порта в переменных - <varname>MAN<replaceable>n</replaceable></varname>, а не в списке - упаковки. Пользовательские конфигурационные файлы должны быть удалены + <para>Пользовательские конфигурационные файлы должны быть удалены или быть установлены как <filename>filename.sample</filename>. Файл <filename>info/dir</filename> включать в список не нужно, но @@ -10165,33 +10557,6 @@ etc/orbit.conf.sample <filename>install-info</filename>, так, как это описано в разделе о <link linkend="makefile-info">файлах в формате info</link>. Все библиотеки, устанавливаемые портом, должны быть перечислены так, как это описано в разделе о <link linkend="porting-shlibs">динамических библиотеках</link>.</para> - - <para>Как альтернативу, можно использовать скрипт <command>plist</command> - из <filename>/usr/ports/Tools/scripts/</filename> для автоматического - построения списка упаковки. Скрипт <filename>plist</filename> - это - сценарий на <application>Ruby</application>, который автоматизирует - большинство ручных операций, изложенных в предыдущем параграфе.</para> - - <para>Первый шаг такой же как выше: взять - первые три строки, - <command>mkdir</command>, <command>mtree</command> и - <command>make depends</command>. Затем собрать и установить - порт:</para> - - <screen>&prompt.root; <userinput>make install PREFIX=/var/tmp/`make -V PORTNAME`</userinput></screen> - - <para>И позволить <command>plist</command> создать файл - <filename>pkg-plist</filename>:</para> - - <screen>&prompt.root; <userinput>/usr/ports/Tools/scripts/plist -Md -m `make -V MTREE_FILE` /var/tmp/`make -V PORTNAME` > pkg-plist</userinput></screen> - - <para>Список упаковки всё ещё должен быть подчищен вручную как описано - выше.</para> - - <para>Для первоначального создания <filename>pkg-plist</filename> можно - использовать другой инструмент <package>ports-mgmt/genplist</package>. Как и с прочими - автоматизированными инструментами, получаемый <filename>pkg-plist</filename> - следует проверить и при необходимости отредактировать вручную.</para> </sect1> </chapter> @@ -10210,8 +10575,8 @@ etc/orbit.conf.sample приложение, то вы можете поместить сообщение в файл <filename>pkg-message</filename>. Эта возможность часто оказывается полезной для вывода дополнительных шагов установки, которые нужно - предпринять после выполнения команды &man.pkg.add.1;, или - для вывода информации о лицензировании.</para> + предпринять после выполнения команды <command>pkg install</command>, + или для вывода информации о лицензировании.</para> <para>Если должны выводиться некоторые строки о knobs времени построения или предупреждения, используйте <varname>ECHO_MSG</varname>. Файл @@ -10229,10 +10594,7 @@ etc/orbit.conf.sample <note> <para>Файл <filename>pkg-message</filename> не нужно добавлять в - <filename>pkg-plist</filename>. И он не будет автоматически - выводиться, если пользователь использует порт, а не пакет, так что - вы должны будете сами выводить его при выполнении цели - <buildtarget>post-install</buildtarget>.</para> + <filename>pkg-plist</filename>.</para> </note> </sect1> @@ -10240,20 +10602,18 @@ etc/orbit.conf.sample <title><filename>pkg-install</filename></title> <para>Если при установке бинарного пакета по команде - &man.pkg.add.1; вашему порту нужно выполнить какие-то - дополнительные действия или команды, то вы можете сделать это с - помощью скрипта <filename>pkg-install</filename>. Этот скрипт будет - автоматически добавлен к пакету, и будет дважды запускаться по - команде &man.pkg.add.1;: первый раз в виде - <literal>${SH} pkg-install ${PKGNAME} - PRE-INSTALL</literal>, а второй раз как <literal>${SH} {PKGNAME} - POST-INSTALL</literal>. + <command>pkg add</command> или <command>pkg install</command> + вашему порту нужно выполнить какие-то команды, то вы можете + это сделать с помощью скрипта <filename>pkg-install</filename>. + Этот скрипт будет автоматически добавлен к пакету и будет + дважды запускаться командой <command>pkg</command>: первый раз + в виде <literal>${SH} pkg-install ${PKGNAME} + PRE-INSTALL</literal>, а второй раз как + <literal>${SH} {PKGNAME} POST-INSTALL</literal>. Для распознавания того, в каком режиме запущен скрипт, можно использовать параметр <literal>$2</literal>. Переменная окружения <envar>PKG_PREFIX</envar> будет принимать значение, - соответствующее каталогу, в который устанавливается пакет. - Дополнительная информация находится на странице Справочника о - команде &man.pkg.add.1;.</para> + соответствующее каталогу, в который устанавливается пакет.</para> <note> <para>Этот скрипт не запускается автоматически, если вы @@ -10270,30 +10630,14 @@ etc/orbit.conf.sample <para>Этот скрипт вызывается при удалении пакета.</para> - <para>Этот скрипт утилитой &man.pkg.delete.1; будет запускаться - дважды. Первый раз как <literal>${SH} pkg-deinstall + <para>Этот скрипт будет дважды запускаться командой + <command>pkg delete</command>. + Первый раз как <literal>${SH} pkg-deinstall ${PKGNAME} DEINSTALL</literal>, а второй раз как <literal>${SH} pkg-deinstall ${PKGNAME} POST-DEINSTALL</literal>.</para> </sect1> - <sect1 xml:id="pkg-req"> - <title><filename>pkg-req</filename></title> - - <para>Если вашему порту нужно определять, должен ли он устанавливаться - или нет, то вы можете создать скрипт <quote>необходимости</quote> - <filename>pkg-req</filename>. Он будет вызван автоматически - в момент установки/удаления для определения того, должны ли они - реально выполняться.</para> - - <para>Скрипт будет запущен в процессе установки командой - &man.pkg.add.1;, как <literal>pkg-req - ${PKGNAME} INSTALL</literal>. В процессе удаления он - будет запущен командой &man.pkg.delete.1; как - <literal>pkg-req ${PKGNAME} DEINSTALL</literal>.</para> - </sect1> - - <sect1 xml:id="pkg-names"> <title xml:id="porting-pkgfiles">Изменение имён файлов <filename>pkg-*</filename></title> @@ -10341,11 +10685,6 @@ etc/orbit.conf.sample </row> <row> - <entry><varname>PKGREQ</varname></entry> - <entry><literal>${PKGDIR}/pkg-req</literal></entry> - </row> - - <row> <entry><varname>PKGMESSAGE</varname></entry> <entry><literal>${PKGDIR}/pkg-message</literal></entry> </row> @@ -10379,8 +10718,8 @@ etc/orbit.conf.sample качестве значения <varname>USE_RC_SUBR</varname> (или устаревшего <varname>USE_RCORDER</varname>), автоматически добавляются в <varname>SUB_FILES</varname>. Для файлов - <filename>pkg-message</filename>, <filename>pkg-install</filename>, - <filename>pkg-deinstall</filename> и <filename>pkg-req</filename> + <filename>pkg-message</filename>, <filename>pkg-install</filename> + и <filename>pkg-deinstall</filename> устанавливается соответствующая переменная Makefile, указывающая на обработанную версию.</para> @@ -10479,7 +10818,7 @@ as .putsy.conf and edit it.</programlisting> <sect1 xml:id="testing-porttools"> <title>Port Tools</title> - <para>Программа <package>ports-mgmt/porttools</package> + <para>Программа <package role="port">ports-mgmt/porttools</package> входит в состав Коллекции Портов.</para> <para><command>port</command> является сценарием переднего плана, @@ -10541,8 +10880,13 @@ as .putsy.conf and edit it.</programlisting> <varname>PREFIX</varname>, то процесс создания пакета сообщит об отсутствии файлов.</para> - <para>Этот тест не найдет явно указанных путей внутри файлов порта - и не проверит корректность использования <varname>LOCALBASE</varname> + <para>Это также стоит проверить с использованием поддержки + каталога сборки (смотрите <xref linkend="staging"/>):</para> + + <screen>&prompt.root; <userinput>make stage && make check-orphans && make package</userinput></screen> + + <para>Эти проверки не найдут явно указанных путей внутри файлов порта + и не проверят корректность использования <varname>LOCALBASE</varname> в качестве ссылки на файлы из других портов. Порт, временно установленный в <filename>/var/tmp/`make -V PORTNAME`</filename>, следует проверять на работоспособность, чтобы убедиться в отсутствии @@ -10573,15 +10917,28 @@ as .putsy.conf and edit it.</programlisting> <para>Если вы алчный контрибутор портов, то вы можете захотеть взглянуть на <application>Tinderbox</application>. Это мощная - система построения и тестирования портов, основанная на сценариях, - используемых в <link linkend="build-cluster">Pointyhat</link>. + система построения и тестирования портов. <application>Tinderbox</application> можно установить, используя - порт <package>ports-mgmt/tinderbox</package>. + порт <package role="port">ports-mgmt/tinderbox</package>. Обязательно прочитайте поставляемую документацию, поскольку конфигурация не является тривиальной.</para> - <para>Для получения подробностей посетите <link xlink:href="http://tinderbox.marcuscom.com/">вебсайт Tinderbox</link>.</para> + <para>Для получения подробностей посетите + <link xlink:href="http://tinderbox.marcuscom.com/">вебсайт Tinderbox</link>.</para> + </sect1> + + <sect1 xml:id="testing-poudriere"> + <title>Poudriere</title> + + <para>Если вы контрибутор портов, подумайте об установке + <application>poudriere</application>. Это мощная система + для построения и тестирования портов. + <application>Poudriere</application> можно установить из + <package role="port">ports-mgmt/poudriere</package>.</para> + <para>Для получения подробной информации посетите <link + xlink:href="http://fossil.etoilebsd.net/poudriere">вебсайт + Poudriere</link>.</para> </sect1> </chapter> @@ -10610,8 +10967,8 @@ as .putsy.conf and edit it.</programlisting> <para>Однако иногда люди забывают поместить название порта в поле Synopsis в точном виде. В таком случае вы можете воспользоваться - <link linkend="portsmon">Системой мониторинга портов - FreeBSD</link> (которая известна также как + <link linkend="portsmon">Системой мониторинга портов &os;</link> + (которая известна также как <literal>portsmon</literal>). В рамках этой системы делается попытка классифицировать PR, касающиеся портов, по имени порта. Для поиска PR, относящихся к определённому порту, используйте механизм <link xlink:href="http://portsmon.FreeBSD.org/portoverview.py">Просмотра @@ -10688,20 +11045,21 @@ as .putsy.conf and edit it.</programlisting> утилитой uuencode; в противном случае просто включите его как есть в PR.</para> - <para>Прежде чем пользоваться &man.send-pr.1; вы должны просмотреть раздел + <para>Прежде чем пользоваться &man.send-pr.1; просмотрите раздел о <link xlink:href="&url.articles.problem-reports;/pr-writing.html">Написании - сообщений о проблемах</link> в статье о Сообщениях об ошибках; он + сообщений о проблемах</link> в статье о Сообщениях об ошибках. Он содержит гораздо больше информации о том, как писать полезные сообщения о проблемах.</para> <important> - <para>Если ваше обновление вызвано соображениями информационной + <para>Если обновление вызвано соображениями информационной безопасности или наличием серьёзных ошибок в имеющемся порте, пожалуйста, оповестите &a.portmgr; о необходимости немедленного - перепостроения и повторного распространения пакета вашего порта. - В противном случае ничего не подозревающие пользователи &man.pkg.add.1; - будут продолжать устанавливать старую версию по команде - <command>pkg_add -r</command> в течение ещё нескольких недель.</para> + перепостроения и повторного распространения пакета данного порта. + В противном случае ничего не подозревающие пользователи + <command>pkg</command> будут продолжать устанавливать старую + версию по команде <command>pkg install</command> в течение + ещё нескольких недель.</para> </important> <note> @@ -10710,19 +11068,19 @@ as .putsy.conf and edit it.</programlisting> понять коммиттерам портов, что именно было изменено.</para> </note> - <para>Теперь, когда вы проделали всё это, вам может понадобиться - прочесть о том, как поддерживать актуальное состояние, в <xref linkend="keeping-up"/>.</para> + <para>Теперь, когда вы проделали всё это, прочитайте о том, как + поддерживать актуальное состояние, в <xref linkend="keeping-up"/>.</para> <sect1 xml:id="svn-diff"> - <title>Использование <literal>SVN</literal> для создания патчей</title> + <title>Использование <application>Subversion</application> для + создания патчей</title> - <para>По возможности присылайте исправления в формате &man.svn.1; diff; - — в таком виде их проще использовать по сравнению с разницей между - <quote>старым и новым</quote> каталогами. К тому же, вам проще - увидеть ваши изменения и обновить их в случае, если что-нибудь - изменилось в Коллекции Портов с тех пор, как вы начали работу, пока вы - не отправите ваши изменения, либо если коммиттер попросит вас - исправить что-то еще.</para> + <para>По возможности присылайте исправления в формате &man.svn.1; diff. + В таком виде их проще использовать по сравнению с разницей между + <quote>старым и новым</quote> каталогами. Так проще + увидеть изменения и обновить их в случае, если что-нибудь + изменилось в Коллекции Портов с тех пор, как вы начали работу, + либо если коммиттер просит что-то исправить.</para> <screen>&prompt.user; <userinput>cd ~/my_wrkdir</userinput> <co xml:id="my-wrkdir"/> &prompt.user; <userinput>svn co https://svn0.us-west.FreeBSD.org/ports/head/dns/pdnsd</userinput> <co xml:id="svn-FreeBSD-org"/> @@ -10737,7 +11095,8 @@ as .putsy.conf and edit it.</programlisting> <callout arearefs="svn-FreeBSD-org"> <para><link xlink:href="https://svn0.us-west.FreeBSD.org/">svn0.us-west.FreeBSD.org</link> - — это общедоступный <literal>SVN</literal> сервер. + — это общедоступный сервер + <application>Subversion</application>. Выберите ближайшее зеркало и проверьте сертификат зеркалирующего сервера на наличие в перечне <link xlink:href="&url.books.handbook;/svn-mirrors.html">зеркалирующих сайтов Subversion</link>.</para> @@ -10762,7 +11121,7 @@ as .putsy.conf and edit it.</programlisting> <calloutlist> <callout arearefs="svn-update"> <para>Эта команда попытается выполнить слияние различий между - вашим патчем и текущим содержимым в SVN; внимательно проверьте + вашим патчем и текущей версией репозитория; внимательно проверьте полученный вывод. Буква перед названием каждого файла означает тип изменения, сделанного с этим файлом. Для получения полного списка смотрите <xref linkend="table-svn-up"/>.</para> @@ -10770,7 +11129,8 @@ as .putsy.conf and edit it.</programlisting> </calloutlist> <table pgwide="1" frame="none" xml:id="table-svn-up"> - <title>Префиксы файлов для <literal>SVN</literal> update</title> + <title>Префиксы файлов для <application>Subversion</application> + update</title> <tgroup cols="2"> <tbody> @@ -10805,16 +11165,17 @@ as .putsy.conf and edit it.</programlisting> </table> <para>Если в результате выполнения <literal>svn update</literal> - вы получили <literal>C</literal>, то это означает, что что-то - изменилось в репозитории SVN и &man.svn.1; не смогла выполнить - слияние ваших локальных изменений с полученными из репозитория. + отображается <literal>C</literal>, то это означает, что что-то + изменилось в репозитории <application>Subversion</application> + и &man.svn.1; не смогла выполнить + слияние локальных изменений с полученными из репозитория. В любом случае никогда не помешает просмотреть изменения, поскольку &man.svn.1; ничего не знает о том, каким должен быть порт, поэтому эта команда может (и, вероятно, будет) делать слияние тех изменений, которые не имеют смысла.</para> <para>Последним шагом является создание унифицированного &man.diff.1; - для файлов относительно SVN:</para> + для полученных изменений:</para> <screen>&prompt.user; <userinput>svn diff > ../`basename ${PWD}`.diff</userinput></screen> @@ -10973,7 +11334,9 @@ as .putsy.conf and edit it.</programlisting> каждому случаю выпускать бюллетень безопасности без создания флуда и потери внимания сообщества к моменту появления действительно серьезных причин. Поэтому уязвимости безопасности, - обнаруженные в портах, записываются в <link xlink:href="http://vuxml.freebsd.org/">базу данных FreeBSD VuXML</link>. + обнаруженные в портах, записываются в + <link xlink:href="http://vuxml.freebsd.org/">базу данных + &os; VuXML</link>. Члены Команды Офицеров Безопасности также отслеживают её на предмет появления вопросов, требующих их вмешательства.</para> @@ -10983,13 +11346,14 @@ as .putsy.conf and edit it.</programlisting> менее, если вы не являетесь коммиттером или верите, что нашли исключительно серьезную уязвимость, то не задумываясь свяжитесь с Командой Офицеров Безопасности напрямую - как это описано на странице <link xlink:href="http://www.freebsd.org/security/#how">информационной - безопасности FreeBSD</link>.</para> - - <para>База данных VuXML является - документом XML. Его исходный файл <filename>vuln.xml</filename> - содержится прямо внутри порта <package>security/vuxml</package>. Поэтому полное имя - пути к файлу будет + как это описано на странице + <link xlink:href="http://www.freebsd.org/security/#how">информационной + безопасности &os;</link>.</para> + + <para>База данных VuXML является документом <acronym>XML</acronym>. + Его исходный файл <filename>vuln.xml</filename> содержится + прямо внутри порта <package role="port">security/vuxml</package>. + Следовательно, полное имя пути к файлу будет <filename>PORTSDIR/security/vuxml/vuln.xml</filename>. Каждый раз, при обнаружении вами в порте уязвимости безопасности добавьте об этом запись в этот файл. Пока вы не знакомы с VuXML, @@ -11001,8 +11365,8 @@ as .putsy.conf and edit it.</programlisting> <sect2 xml:id="security-notify-vuxml-intro"> <title>Короткое вступление в VuXML</title> - <para>В совокупности XML является очень сложным форматом, и его - описание выходит далеко за рамки + <para>В совокупности <acronym>XML</acronym> является очень + сложным форматом, и его описание выходит далеко за рамки этой книги. Тем не менее, для достижения основного понимания структуры записи VuXML вам понадобится всего лишь понять теги. Имена тегов XML обрамляются в угловые скобки. Каждый открывающий @@ -11188,13 +11552,13 @@ as .putsy.conf and edit it.</programlisting> <callout arearefs="co-vx-fsa"> <para>Это <link xlink:href="http://www.freebsd.org/security/#adv">бюллетень - безопасности FreeBSD</link>.</para> + безопасности &os;</link>.</para> </callout> <callout arearefs="co-vx-fpr"> <para>Это <link xlink:href="http://www.freebsd.org/support.html#gnats">сообщение - об ошибке FreeBSD</link>.</para> + об ошибке &os;</link>.</para> </callout> <callout arearefs="co-vx-cve"> @@ -11258,9 +11622,9 @@ as .putsy.conf and edit it.</programlisting> <para>Прежде всего, вам нужно <emphasis>установить</emphasis> последние версии портов - <package>ports-mgmt/portaudit</package>, - <package>ports-mgmt/portaudit-db</package> и - <package>security/vuxml</package>.</para> + <package role="port">ports-mgmt/portaudit</package>, + <package role="port">ports-mgmt/portaudit-db</package> и + <package role="port">security/vuxml</package>.</para> <note> <para>Для запуска <command>packaudit</command> вы должны обладать @@ -11298,8 +11662,8 @@ as .putsy.conf and edit it.</programlisting> <note> <para>Вам понадобится установить по крайней мере один из следующих - пакетов: <package>textproc/libxml2</package>, - <package>textproc/jade</package>.</para> + пакетов: <package role="port">textproc/libxml2</package>, + <package role="port">textproc/jade</package>.</para> </note> <para>Теперь выполните перепостроение базы данных @@ -11351,8 +11715,9 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 <title>Введение</title> <para>Вот список часто встречающихся действий, которые нужно и которые - нельзя делать во время процесса портирования. Вы должны проверять ваш - порт по этому списку, и вы также можете проверять порты в <link xlink:href="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query">базе + нельзя делать во время процесса портирования. Проверьте + порт по этому списку, и также проверьте порты в + <link xlink:href="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query">базе сообщений PR</link>, которые присланы другими людьми. Присылайте любые комментарии о портах, которые вы проверили, так, как это описано в статье о <link xlink:href="&url.articles.contributing;/contrib-how.html#CONTRIB-GENERAL"> @@ -11401,7 +11766,8 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 Unix он работает. Предпочтительным способом отделения кода для версий &os; является использование макросов <literal>__FreeBSD_version</literal> и - <literal>__FreeBSD__</literal>, определённых в файле <link xlink:href="http://svnweb.freebsd.org/base/head/sys/sys/param.h?view=markup">sys/param.h</link>. + <literal>__FreeBSD__</literal>, определённых в <link + xlink:href="http://svnweb.freebsd.org/base/head/sys/sys/param.h?view=markup">sys/param.h</link>. Если этот файл не подключен, добавьте код</para> <programlisting>#include <sys/param.h></programlisting> @@ -11412,13 +11778,11 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 9.x <literal>__FreeBSD__</literal> определён со значением <literal>9</literal>.</para> - <para> - <programlisting>#if __FreeBSD__ >= 9 + <programlisting>#if __FreeBSD__ >= 9 # if __FreeBSD_version >= 901000 /* здесь особый код для версий 9.1+ */ # endif #endif</programlisting> - </para> </sect1> <sect1 xml:id="dads-after-port-mk"> @@ -11594,8 +11958,8 @@ exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar "$@"</programlisting> <programlisting>CXX= g++</programlisting> - <para>Обе переменные <varname>CC</varname> и <varname>CXX</varname> - могут быть определены в системах FreeBSD в файле + <para>В системах &os; обе переменные <varname>CC</varname> и + <varname>CXX</varname> могут быть определены в файле <filename>/etc/make.conf</filename>. В первом примере задаётся значение, если оно ранее не было определено в <filename>/etc/make.conf</filename>, что сохраняет любые определения, @@ -11633,7 +11997,7 @@ CFLAGS+= -Wall -Werror CFLAGS= -Wall -Werror </programlisting> - <para>В системе FreeBSD переменная <varname>CFLAGS</varname> определена + <para>В системе &os; переменная <varname>CFLAGS</varname> определена в файле <filename>/etc/make.conf</filename>. В первом примере к переменной <varname>CFLAGS</varname> добавляются дополнительные флаги, при этом сохраняются все определения, данные ранее на уровне системы. @@ -11675,7 +12039,7 @@ CFLAGS= -Wall -Werror </sect1> - <sect1 xml:id="dads-freedback"> + <sect1 xml:id="dads-feedback"> <title>Пожелания</title> <para>Посылайте подходящие изменения/патчи авторам/сопровождающему @@ -11686,9 +12050,9 @@ CFLAGS= -Wall -Werror <sect1 xml:id="dads-readme"> <title><filename>README.html</filename></title> - <para>Не включайте сюда файл <filename>README.html</filename>. Этот файл - не является частью дерева SVN, и он генерируется при помощи команды - <command>make readme</command>.</para> + <para><filename>README.html</filename> не является частью порта + и генерируется при помощи <command>make readme</command>. + Не включайте этот файл в патчи или коммиты.</para> <note> <para>Если не удается выполнить <command>make readme</command>, @@ -11763,14 +12127,14 @@ CFLAGS= -Wall -Werror <para><varname>FORBIDDEN</varname> используется для портов, которые содержат уязвимости в информационной безопасности или являются потенциально вредными в плане обеспечения информационной - безопасности системы FreeBSD при установке данного порта + безопасности системы &os; при установке данного порта (например: заведомо небезопасная программа или программа, которая предоставляет легко взламываемые сервисы). Порты должны помечаться как <varname>FORBIDDEN</varname>, как только в конкретном программном обеспечении обнаружилась уязвимость, но обновление выпущено не было. В идеальном случае порты должны обновляться максимально быстро после обнаружения уязвимости, - чтобы уменьшить число уязвимых хостов FreeBSD (нам нравится иметь + чтобы уменьшить число уязвимых хостов &os; (нам нравится иметь репутацию безопасной системы), однако иногда случается значительный временной разрыв между обнаружением уязвимости и выходом обновлённого релиза уязвимого программного обеспечения. @@ -11797,19 +12161,15 @@ CFLAGS= -Wall -Werror </listitem> <listitem> - <para>требует для построения исходные тексты ядра &os;, но - у пользователя в установленном виде они отсутствуют</para> - </listitem> - - <listitem> <para>имеет distfile, который не может быть автоматически извлечен из-за лицензионных ограничений</para> </listitem> <listitem> <para>не работает с каким-либо другим портом, установленным - в настоящее время (например, порт зависит от <package>www/apache20</package>, но установлен - <package>www/apache22</package>) + в настоящее время (например, порт зависит от + <package role="port">www/apache20</package>, но установлен + <package role="port">www/apache22</package>) </para> </listitem> </itemizedlist> @@ -11865,16 +12225,16 @@ CFLAGS= -Wall -Werror Также построение строки должно несколько различаться из-за способа отображения информации пользователю. Примеры:</para> - <programlisting>BROKEN= this port is unsupported on FreeBSD 5.x</programlisting> + <programlisting>BROKEN= fails to link with base -lcrypto</programlisting> - <programlisting>IGNORE= is unsupported on FreeBSD 5.x</programlisting> + <programlisting>IGNORE= unsupported on recent versions</programlisting> <para>получаемые в результате следующего вывода <command>make describe</command>:</para> - <programlisting>===> foobar-0.1 is marked as broken: this port is unsupported on FreeBSD 5.x.</programlisting> + <programlisting>===> foobar-0.1 is marked as broken: fails to link with base -lcrypto.</programlisting> - <programlisting>===> foobar-0.1 is unsupported on FreeBSD 5.x.</programlisting> + <programlisting>===> foobar-0.1 is unsupported on recent versions.</programlisting> </sect2> </sect1> @@ -11927,23 +12287,16 @@ CFLAGS= -Wall -Werror <example xml:id="dot-error-breaks-index"> <title>Как избегать использование <literal>.error</literal></title> - <para>Предположим, что кто-то поместил строку</para> - <programlisting>USE_POINTYHAT=yes</programlisting> + <para>Из следующих двух вариантов строки файла + <filename>Makefile</filename> первый приведёт к неудачному + завершению работы <command>make index</command>, а второй - + нет:</para> - <para>в <filename>make.conf</filename>. Первый из последующих двух - вариантов строк файла <filename>Makefile</filename> приведёт к - неудачному завершению работы <command>make index</command>, а - второй - нет:</para> - <programlisting>.if USE_POINTYHAT -.error "POINTYHAT is not supported" -.endif</programlisting> + <programlisting>.error "option is not supported"</programlisting> - <programlisting>.if USE_POINTYHAT -IGNORE=POINTYHAT is not supported -.endif</programlisting> + <programlisting>IGNORE=option is not supported</programlisting> </example> - </sect1> <sect1 xml:id="dads-sysctl"> @@ -12037,12 +12390,6 @@ IGNORE=POINTYHAT is not supported <para>Список основных <application>bash</application>-измов расположен <link xlink:href="https://wiki.ubuntu.com/DashAsBinSh">здесь</link>.</para> - <para>Не используйте <literal>#include - <stdint.h></literal>, если - достаточно подключить <filename>inttypes.h</filename>. Это - позволит убедиться, что программное обеспечение собирается на - более старых версиях &os;.</para> - <para>Проверьте, что используемые заголовочные файлы включены в <acronym>POSIX</acronym> или список, рекомендуемый страницей справочника, т.к. например, забыть подключить @@ -12127,7 +12474,7 @@ PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz сохранения как можно более высокого качества Коллекции Портов мы больше не принимаем новые порты, назначенные на "ports@FreeBSD.org".] MAINTAINER= asami@FreeBSD.org -COMMENT= A DVI Previewer for the X Window System +COMMENT= DVI Previewer for the X Window System [зависимости -- могут быть пустыми] RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript @@ -12166,6 +12513,7 @@ pre-install: и потом еще кое-что перед установкой, ого [и, наконец, эпилог] + .include <bsd.port.mk> </programlisting> </chapter> @@ -12206,7 +12554,7 @@ pre-install: <para>Во FreshPorts имеется также функция проверки правильности, которая автоматически проверяет каждое изменение, внесённое в дерево - портов FreeBSD. Если вы подпишетесь на эту услугу, то будете + портов &os;. Если вы подпишетесь на эту услугу, то будете оповещаться обо всех ошибках, обнаруженных FreshPorts при проверке внесённых вами изменений.</para> </sect1> @@ -12224,7 +12572,7 @@ pre-install: и связанных с ним файлов.</para> </sect1> - <sect1 xml:id="ports-mailling-list"> + <sect1 xml:id="ports-mailing-list"> <title>Список рассылки &os;, посвящённый портам</title> <para>Если вы поддерживаете порты, то должны следить за &a.ports;. @@ -12237,15 +12585,12 @@ pre-install: </sect1> <sect1 xml:id="build-cluster"> - <title>Кластер построения портов &os; на - <systemitem class="fqdomainname">pointyhat.FreeBSD.org</systemitem></title> + <title>Кластер построения портов &os;</title> <para>Одной из наименее известных сильных сторон &os; является тот факт, что для непрерывного построения Коллекции Портов для каждого из основных релизов ОС для каждой архитектуры уровня поддержки - Tier-1 выделен целый кластер машин. Вы можете увидеть результаты - этих построений в <link xlink:href="http://pointyhat.FreeBSD.org/">протоколах - построения пакетов и обнаруженных ошибок</link>.</para> + Tier-1 выделен целый кластер машин.</para> <para>Отдельные порты собираются, если они специально не помечены как <varname>IGNORE</varname>. Для портов, помеченных как @@ -12294,8 +12639,9 @@ pre-install: <sect1 xml:id="portsmon"> <title>Система мониторинга портов &os;</title> - <para>Другим полезным ресурсом является <link xlink:href="http://portsmon.FreeBSD.org">Система мониторинга портов - FreeBSD</link> (известная также как <literal>portsmon</literal>). + <para>Другим полезным ресурсом является + <link xlink:href="http://portsmon.FreeBSD.org">Система мониторинга + портов &os;</link> (известная также как <literal>portsmon</literal>). Система представляет собой базу данных, обрабатывающую информацию из нескольких источников и позволяющую просматривать их при помощи Web-интерфейса. На данный момент задействованы база сообщений об @@ -12324,7 +12670,7 @@ pre-install: <sect1 xml:id="uses-values"> <title>Значения <varname>USES</varname></title> - <table frame="none"> + <table> <title>Значения <varname>USES</varname></title> <tgroup cols="3"> @@ -12335,7 +12681,7 @@ pre-install: <entry>Описание</entry> </row> </thead> - <tbody> + <tbody valign="top"> &values.uses; </tbody> </tgroup> diff --git a/ru_RU.KOI8-R/books/porters-handbook/uses.xml b/ru_RU.KOI8-R/books/porters-handbook/uses.xml index bffe7dd9c6..fdfd107b54 100644 --- a/ru_RU.KOI8-R/books/porters-handbook/uses.xml +++ b/ru_RU.KOI8-R/books/porters-handbook/uses.xml @@ -5,11 +5,12 @@ $FreeBSD$ - Original revision: r43006 + Original revision: r43793 --> <row> <entry><literal>ada</literal></entry> + <entry>(нет)</entry> <entry>Зависимость от компилятора с поддержкой @@ -19,23 +20,26 @@ <row> <entry><literal>bison</literal></entry> + <entry>(нет), <literal>build</literal>, <literal>run</literal>, <literal>both</literal></entry> - <entry>Подразумевает использование <filename - role="package">devel/bison</filename> тем или иным образом. По - умолчанию, без аргументов или с аргументом <literal>build</literal>, - означает использование <command>bison</command> для сборки, - <literal>run</literal> для выполения, и <literal>both</literal> - для сборки и выполнения.</entry> + + <entry>Использует <package role="port">devel/bison</package>. + По умолчанию, без аргументов или с аргументом + <literal>build</literal>, <command>bison</command> означает + зависимость для сборки, <literal>run</literal> для выполения, + и <literal>both</literal> для сборки и выполнения.</entry> </row> <row> <entry><literal>charsetfix</literal></entry> + <entry>(нет)</entry> + <entry>Предотвращает установку <filename>charset.alias</filename>. - Этот файл должен устанавливаться только совместно с <filename - role="package">converters/libiconv</filename>. Через - <varname>CHARSETFIX_MAKEFILEIN</varname> можно указать другой + Этот файл должен устанавливаться только совместно с + <package role="port">converters/libiconv</package>. Используя + <varname>CHARSETFIX_MAKEFILEIN</varname>, можно указать другой путь относительно <varname>WRKSRC</varname>, если <filename>charset.alias</filename> устанавливается иначе чем через <varname>WRKSRC</varname>/<filename>Makefile.in</filename>.</entry> @@ -43,91 +47,368 @@ <row> <entry><literal>cmake</literal></entry> - <entry>(нет), <literal>outsource</literal></entry> - <entry>Порт будет использовать <application>CMake</application> для + <entry>(нет), <literal>outsource</literal>, + <literal>run</literal></entry> + + <entry>Использует <application>CMake</application> для конфигурации и построения. При использовании аргумента - <literal>outsource</literal> будет произведена сборка вне исходных - текстов (out-of-source). Более подробно смотрите <xref - linkend="using-cmake"/>.</entry> + <literal>outsource</literal> будет произведена сборка вне дерева + исходных текстов (out-of-source). При использовании аргумента + <literal>run</literal> регистрируется как зависимость для + выполнения. Для получения дополнительной информации смотрите + <xref linkend="using-cmake"/>.</entry> +</row> + +<row> + <entry><literal>compiler</literal></entry> + + <entry>(нет), <literal>c++0x</literal>, + <literal>c++11-lang</literal>, + <literal>c++11-lib</literal>, <literal>c11</literal>, + <literal>openmp</literal>, <literal>nestedfct</literal>, + <literal>features</literal></entry> + + <entry>Определяет используемый компилятор с учётом любых пожеланий. + Используйте <literal>c++11-lang</literal>, если для порта нужен + компилятор с поддержкой C++11, и <literal>c++11-lib</literal>, + если для порта также нужна стандартная библиотека C++11. Если + для порта нужен компилятор, понимающий C++0X, C11, OpenMP или + вложенные функции, для этого можно использовать соответствующие + параметры. Используйте <literal>features</literal>, чтобы + запросить список функциональных особенностей, поддерживаемых + компилятором по умолчанию. После подключения + <filename>bsd.port.pre.mk</filename> порт может проверить + результат, используя эти переменные: + + <itemizedlist> + <listitem> + <para><varname>COMPILER_TYPE</varname>: системный компилятор + по умолчанию, gcc или clang</para> + </listitem> + + <listitem> + <para><varname>ALT_COMPILER_TYPE</varname>: альтернативный + системный компилятор, gcc или clang. Значение + устанавливается, только если оба компилятора присутствуют + в основной системе.</para> + </listitem> + + <listitem> + <para><varname>COMPILER_VERSION</varname>: первые две цифры + версии компилятора по умолчанию.</para> + </listitem> + + <listitem> + <para><varname>ALT_COMPILER_VERSION</varname>: первые две + цифры версии альтернативного компилятора, если такой + присутствует.</para> + </listitem> + + <listitem> + <para><varname>CHOSEN_COMPILER_TYPE</varname>: используемый + компилятор, gcc или clang</para> + </listitem> + + <listitem> + <para><varname>COMPILER_FEATURES</varname>: поддерживаемые + возможности компилятора по умолчанию. В настоящее время + здесь указана библиотека C++.</para> + </listitem> + </itemizedlist></entry> +</row> + +<row> + <entry><literal>cran</literal></entry> + + <entry>(нет), <literal>auto-plist</literal></entry> + + <entry>Использует Comprehensive R Archive Network. Используйте + <varname>auto-plist</varname> для автоматического получения + <filename>pkg-plist</filename>.</entry> </row> <row> <entry><literal>desktop-file-utils</literal></entry> + <entry>(нет)</entry> - <entry>Подразумевает использование - <application>update-desktop-database</application> из - <filename role="package">devel/desktop-file-utils</filename>. - Будет включён дополнительный этап post-install без взаимодействия - с уже имеющимися этапами post-install. В plist будут добавлены - строки для запуска <application>update-desktop-database</application> + <entry>Использует <application>update-desktop-database</application> + из <package role="port">devel/desktop-file-utils</package>. Будет + включён дополнительный этап post-install без взаимодействия с уже + имеющимися этапами post-install. В plist будут добавлены строки + для запуска <application>update-desktop-database</application> при установке и удалении пакета.</entry> </row> <row> + <entry><literal>desthack</literal></entry> + + <entry>(нет)</entry> + + <entry>Изменяет поведение GNU configure для правильной поддержки + <varname>DESTDIR</varname>, в случае если программное обеспечение + этого не делает.</entry> +</row> + +<row> + <entry><literal>display</literal></entry> + + <entry>(нет), ARGS</entry> + + <entry>Устанавливает окружение виртуального дисплея. Если переменная + окружения <varname>DISPLAY</varname> не установлена, то + <application>Xvfb</application> добавляется как зависимость для + построения и <varname>CONFIGURE_ENV</varname> дополняется номером + порта текущего запущенного экземпляра <application>Xvfb</application>. + Параметр <literal>ARGS</literal> по умолчанию имеет значение + <literal>install</literal> и управляет фазой, в которой запускается + и останавливается виртуальный дисплей.</entry> +</row> + +<row> + <entry><literal>dos2unix</literal></entry> + + <entry>(нет)</entry> + + <entry>В составе порта имеются файлы с окончанием строк в формате + <acronym>DOS</acronym>, для которых требуется преобразование. + Для управления тем, какие из файлов должны быть преобразованы, + используются три переменные. По умолчанию преобразуются + <emphasis>все</emphasis> файлы, включая двоичные. + + <itemizedlist> + <listitem> + <para><varname>DOS2UNIX_REGEX</varname>: сопоставление с + именем файла с использованием регулярных выражений.</para> + </listitem> + + <listitem> + <para><varname>DOS2UNIX_FILES</varname>: строковое + сопоставление с именем файла.</para> + </listitem> + + <listitem> + <para><varname>DOS2UNIX_GLOB</varname>: сопоставление с + именем файла с использованием шаблонов поиска.</para> + </listitem> + </itemizedlist></entry> +</row> + +<row> + <entry><literal>fam</literal></entry> + + <entry>(нет), fam, gamin</entry> + + <entry>Использует File Alteration Monitor как зависимость от + библиотеки порта <package role="port">devel/fam</package> или + <package role="port">devel/gamin</package>. Пользователи могут + задать WITH_FAM_SYSTEM для указания своего предпочтения.</entry> +</row> + +<row> + <entry><literal>fmake</literal></entry> + + <entry>(нет)</entry> + + <entry>Использует <package role="port">devel/fmake</package> как + зависимость для сборки.</entry> +</row> + +<row> + <entry><literal>fortran</literal></entry> + + <entry><literal>gcc</literal> (default), <literal>ifort</literal></entry> + + <entry>Использует компилятор Fortran от GNU или Intel.</entry> +</row> + +<row> <entry><literal>fuse</literal></entry> + <entry>(нет)</entry> - <entry>Подразумевает использование библиотеки FUSE, а также модуля ядра - в соответствии с версией &os;.</entry> + <entry>Порт будет зависеть от библиотеки FUSE и возможно от модуля + ядра, в соответствии с версией &os;.</entry> </row> <row> <entry><literal>gettext</literal></entry> - <entry>(нет), <literal>lib</literal>, <literal>build</literal>, - <literal>run</literal></entry> - <entry>Подразумевает использование <filename - role="package">devel/gettext</filename> тем или иным образом. - По умолчанию, без аргументов или с аргументом <literal>lib</literal>, - означает использование <command>gettext</command> для сборки - и выполнения, <literal>build</literal> для сборки, и - <literal>run</literal> для выполнения.</entry> + + <entry>(нет), <literal>lib</literal> (по умолчанию), + <literal>build</literal>, <literal>run</literal></entry> + + <entry>Использует <package role="port">devel/gettext</package>. + По умолчанию, без аргументов или с аргументом + <literal>lib</literal>, означает зависимость от библиотеки + <filename>libintl.so</filename>. <literal>build</literal> + и <literal>run</literal> соответственно означают зависимости от + от <filename>xgettext</filename> для сборки и выполнения.</entry> </row> <row> <entry><literal>gmake</literal></entry> + <entry>(нет)</entry> - <entry>Подразумевает использование <filename - role="package">devel/gmake</filename> для сборки.</entry> + + <entry>Использует <package role="port">devel/gmake</package> как + зависимость для сборки и подготавливает окружение для + использования <command>gmake</command> в качестве + <command>make</command> для сборки по умолчанию.</entry> </row> <row> <entry><literal>iconv</literal></entry> - <entry>(нет)</entry> - <entry>Подразумевает использование <filename - role="package">converters/libiconv</filename> для сборки и - выполнения.</entry> + + <entry>(нет), <literal>lib</literal>, <literal>build</literal>, + <literal>patch</literal></entry> + + <entry>Использует функции <command>iconv</command>, из порта + <package role="port">converters/libiconv</package> как зависимость + для сборки и выполнения или же из основной системы на 10-CURRENT после + появления собственного <command>iconv</command> в + <revnumber>254273</revnumber>. По умолчанию, без параметров или + с параметром <literal>lib</literal>, <command>iconv</command> + означает зависимость для сборки и выполнения, + <literal>build</literal> для сборки и <literal>patch</literal> + для использования патчей. Более подробно смотрите + <xref linkend="using-iconv"/>.</entry> </row> <row> <entry><literal>imake</literal></entry> + + <entry>(нет), <literal>env</literal>, + <literal>notall</literal></entry> + + <entry>Использует <package role="port">devel/imake</package> как + зависимость для сборки. С аргументом <literal>env</literal> + всего лишь подготавливает окружение и не задаёт каких-либо целей. + С аргументом <literal>notall</literal> запрещает передачу + <literal>-a</literal> команде <command>xmkmf</command>.</entry> +</row> + +<row> + <entry><literal>kmod</literal></entry> + + <entry>(нет)</entry> + + <entry>Заполняет шаблоны для портов модулей ядра: + + <itemizedlist> + <listitem> + <para>Добавляет <literal>kld</literal> в список + <varname>CATEGORIES</varname>.</para> + </listitem> + + <listitem> + <para>Задаёт <varname>SSP_UNSAFE</varname>.</para> + </listitem> + + <listitem> + <para>Задаёт <varname>IGNORE</varname>, если исходные тексты + ядра не найдены в <varname>SRC_BASE</varname>.</para> + </listitem> + + <listitem> + <para>В качестве значения по умолчанию для + <varname>KMODDIR</varname> устанавливает + <filename class="directory">/boot/modules</filename>, + добавляет его в <varname>PLIST_SUB</varname> и + <varname>MAKE_ENV</varname> и создает на этапе установки. + Если для <varname>KMODDIR</varname> установлено значение + <filename class="directory">/boot/kernel</filename>, оно + будет заменено на + <filename class="directory">/boot/modules</filename>. Это + предотвращает повреждение пакетов вследствие переименования + <filename class="directory">/boot/kernel</filename> в + <filename class="directory">/boot/kernel.old</filename> + в процессе обновления ядра.</para> + </listitem> + + <listitem> + <para>Управляет перекрёстными ссылками модулей ядра во время + установки и удаления.</para> + </listitem> + </itemizedlist></entry> +</row> + +<row> + <entry><literal>libtool</literal></entry> + <entry>(нет)</entry> - <entry>Подразумевает использование <filename - role="package">devel/imake</filename> для сборки.</entry> + + <entry>Применяет исправления для сценариев + <command>libtool</command>. Должно быть добавлено для всех + портов, использующих <command>libtool</command>.</entry> +</row> + +<row> + <entry><literal>lua</literal></entry> + + <entry>(нет), <literal>XY+</literal>, <literal>XY</literal>, + <literal>build</literal>, <literal>run</literal></entry> + + <entry>Добавляет зависимость от <application>Lua</application>. По + умолчанию является зависимостью от библиотеки, если это не + переопределено параметрами <literal>build</literal> или + <literal>run</literal>. Версия по умолчанию 5.2, если не задана + с помощью параметра <literal>XY</literal> (например, + <literal>51</literal> или <literal>52+</literal>).</entry> </row> <row> <entry><literal>motif</literal></entry> + <entry>(нет)</entry> - <entry>Подразумевает использование <filename - role="package">devel/open-motif</filename> в качестве библиотеки. - Конечные пользователи могут задать <varname>WANT_LESSTIF</varname> - для замены <filename role="package">devel/open-motif</filename> на - <filename role="package">devel/lesstif</filename>.</entry> + + <entry>Использует <package + role="port">x11-toolkits/open-motif</package> как зависимость + от библиотеки. Пользователи могут задавать + <varname>WANT_LESSTIF</varname> для использования зависимости + от <package role="port">x11-toolkits/lesstif</package> вместо + <package role="port">x11-toolkits/open-motif</package>.</entry> </row> <row> <entry><literal>ncurses</literal></entry> + <entry>(нет), <literal>base</literal>, <literal>port</literal></entry> - <entry>Подразумевает использование <application>ncurses</application>, + + <entry>Использует <application>ncurses</application>, тем самым задаёт некоторые нужные переменные.</entry> </row> <row> + <entry><literal>ninja</literal></entry> + + <entry>(нет)</entry> + + <entry>Использует <application>ninja</application> для построения + порта. Пользователи могут задать <varname>NINJA_VERBOSE</varname> + для подробного вывода сообщения.</entry> +</row> + +<row> + <entry><literal>openal</literal></entry> + + <entry><literal>al</literal>, <literal>soft</literal> (по умолчанию), + <literal>si</literal>, <literal>alut</literal></entry> + + <entry>Использует <application>OpenAL</application>. Может быть + указан бэкэнд, по умолчанию используется программная реализация. + Пользователь может указать предпочитаемый бэкэнд с использованием + переключателя <varname>WANT_OPENAL</varname>. Правильными + значениями для этого переключателя являются <literal>soft</literal> + (по умолчанию) и <literal>si</literal>.</entry> +</row> + +<row> <entry><literal>pathfix</literal></entry> + <entry>(нет)</entry> + <entry>Исправляет общие пути для их соответствия иерархии &os; в файлах <filename>Makefile.in</filename> и <filename>configure</filename>, принадлежащих исходному коду @@ -135,68 +416,166 @@ </row> <row> + <entry><literal>perl5</literal></entry> + + <entry>(нет)</entry> + + <entry>Зависит от <application>Perl</application>. + Могут быть заданы следующие переменные: + + <itemizedlist> + <listitem> + <para><varname>PERL_VERSION</varname>: Полная версия + <application>Perl</application> для использования; если не + задано, используется значение по умолчанию</para> + </listitem> + + <listitem> + <para><varname>PERL_ARCH</varname>: Имя каталога для + архитектурозависимых библиотек, по умолчанию + <filename class="directory">mach</filename></para> + </listitem> + + <listitem> + <para><varname>PERL_PORT</varname>: Имя порта + <application>Perl</application> для установки; значение по + умолчанию наследуется из + <varname>PERL_VERSION</varname></para> + </listitem> + + <listitem> + <para><varname>SITE_PERL</varname>: Имя каталога для пакетов + <application>Perl</application> со специальным + размещением</para> + </listitem> + + <listitem> + <para><varname>USE_PERL5</varname>: Фазы для использования + <application>Perl</application>, может быть + <literal>extract</literal>, <literal>patch</literal>, + <literal>build</literal>, <literal>install</literal> или + <literal>run</literal>. Также может быть + <literal>configure</literal>, <literal>modbuild</literal> + или <literal>modbuildtiny</literal>, когда требуются + <filename>Makefile.PL</filename>, + <filename>Build.PL</filename> или его вариация + Module::Build::Tiny. По умолчанию + <literal>build run</literal>.</para> + </listitem> + </itemizedlist></entry> +</row> + +<row> + <entry><literal>pgsql</literal></entry> + + <entry>(нет), <literal>X.Y</literal>, <literal>X.Y+</literal>, + <literal>X.Y-</literal></entry> + + <entry> + <para>Обеспечивает поддержку PostgreSQL. Мейнтейнеры могут + задавать требуемую версию. Могут быть указаны минимальная и + максимальная версии; например, 9.0-, 8.4+.</para> + + <para>Добавляет зависимость от компонентов PostgreSQL с + использованием + <literal>WANT_PGSQL=component[:target]</literal>. Например, + <literal>WANT_PGSQL=server:configure pltcl plperl</literal>. + Для получения полного перечня используйте + <command>make -V _USE_PGSQL_DEP</command>.</para></entry> +</row> + +<row> <entry><literal>pkgconfig</literal></entry> - <entry>(нет), <literal>build</literal>, <literal>run</literal>, - <literal>both</literal></entry> + <entry>(нет), <literal>build</literal> (по умолчанию), + <literal>run</literal>, <literal>both</literal></entry> - <entry>Подразумевает использование <filename - role="package">devel/pkgconf</filename> тем или иным образом. - Без аргументов или с аргументом <literal>build</literal> это - означает использование <command>pkg-config</command> для сборки, + <entry>Использует <package role="port">devel/pkgconf</package>. + Без аргументов или с аргументом <literal>build</literal> + <command>pkg-config</command> означает зависимость для сборки, <literal>run</literal> для выполнения и <literal>both</literal> для сборки и выполнения.</entry> </row> <row> <entry><literal>pure</literal></entry> + <entry>(нет), <literal>ffi</literal></entry> - <entry>Подразумевает использование <filename - role="package">lang/pure</filename> тем или иным образом, - но в основном используется для построения портов, относящихся к - pure. С аргументом <literal>ffi</literal> означает использование - <filename role="package">devel/pure-ffi</filename> для + + <entry>Использует <package role="port">lang/pure</package>. + В основном используется для построения портов, относящихся к + <application>pure</application>. С аргументом + <literal>ffi</literal> означает зависимость от + <package role="port">devel/pure-ffi</package> для выполнения.</entry> </row> <row> <entry><literal>qmail</literal></entry> + <entry>(нет), <literal>build</literal>, <literal>run</literal>, <literal>both</literal>, <literal>vars</literal></entry> - <entry>Подразумевает использование <filename - role="package">mail/qmail</filename> тем или иным образом. - С аргументом <literal>build</literal> означает использование - <command>qmail</command> для сборки и <literal>run</literal> для - выполнения. Без аргументов или с аргументом <literal>both</literal> - означает использование <command>qmail</command> для сборки и - выполнения. <literal>vars</literal> задает переменные QMAIL для - нужд порта.</entry> + + <entry>Использует <package role="port">mail/qmail</package>. + С аргументом <literal>build</literal> <command>qmail</command> + означает зависимость для сборки и <literal>run</literal> для + выполнения. Без аргументов или с аргументом + <literal>both</literal> <command>qmail</command> означает + зависимость для сборки и выполнения. <literal>vars</literal> + задает переменные QMAIL для нужд порта.</entry> +</row> + +<row> + <entry><literal>qmake</literal></entry> + + <entry>(нет), <literal>norecursive</literal>, + <literal>outsource</literal></entry> + + <entry>Использует <application>QMake</application> для конфигурации. + Для получения дополнительной информации смотрите + <xref linkend="using-qmake"/>.</entry> </row> <row> <entry><literal>readline</literal></entry> - <entry>(нет), port</entry> - <entry>Подразумевает использование библиотеки - <application>readline</application> и по необходимости устанавливает - переменные <varname>CPPFLAGS</varname> и <varname>LDFLAGS</varname>. - </entry> + + <entry>(нет), <literal>port</literal></entry> + + <entry>Использует <application>readline</application> как + зависимость от библиотеки и по необходимости устанавливает + переменные <varname>CPPFLAGS</varname> и + <varname>LDFLAGS</varname>. При использовании параметра + <literal>port</literal> заставляет использовать + <package role="port">devel/readline</package>.</entry> +</row> + +<row> + <entry><literal>scons</literal></entry> + + <entry>(нет)</entry> + + <entry>Обеспечивает поддержку для использования + <package role="port">devel/scons</package></entry> </row> <row> <entry><literal>shared-mime-info</literal></entry> + <entry>(нет)</entry> - <entry>Подразумевает использование - <application>update-mime-database</application> из - <filename role="package">misc/shared-mime-info</filename>. Это - также добавляет собственный этап post-install и строки в plist для - запуска <application>update-mime-data</application> с подходящими - аргументами во время установки и удаления пакета.</entry> + <entry>Использует <application>update-mime-database</application> + из <package role="port">misc/shared-mime-info</package>. Это + также добавляет собственный этап post-install и строки в plist + для запуска <application>update-mime-data</application> с + подходящими аргументами во время установки и удаления пакета. + </entry> </row> <row> <entry><literal>shebangfix</literal></entry> + <entry>(нет)</entry> + <entry>Во многом программном обеспечении указывается неправильный путь к интерпретатору (shebang), в первую очередь это касается <filename>/usr/bin/perl</filename> и <filename>/bin/bash</filename>. @@ -212,10 +591,237 @@ </row> <row> + <entry><literal>tcl</literal></entry> + + <entry><literal>PORT</literal></entry> + + <entry>Добавляет зависимость от <application>Tcl</application>. + Параметр <literal>PORT</literal> в качестве значения может + принимать <literal>tcl</literal> или <literal>tk</literal>. К + значению может быть добавлена версия или зависимость wrapper с + использованием <literal>PORT:version</literal> или + <literal>PORT:wrapper</literal>. Поле версии может иметь пустое + значение, один или более номеров версии (на данный момент + <literal>84</literal>, <literal>85</literal> или + <literal>86</literal>) или же минимальный номер версии (на данный + момент <literal>84+</literal>, <literal>85+</literal> или + <literal>86+</literal>). Может быть указана зависимость для + сборки или выполнения с использованием <literal>PORT,build</literal> + или <literal>PORT,run</literal>. После подключения + <filename>bsd.port.pre.mk</filename> порт может проверить + результат, используя эти переменные: + + <itemizedlist> + <listitem> + <para><varname>TCL_VER</varname>: используемая старшая.младшая + версия <application>Tcl</application></para> + </listitem> + + <listitem> + <para><varname>TCLSH</varname>: полный путь к интерпретатору + <application>Tcl</application></para> + </listitem> + + <listitem> + <para><varname>TCL_LIBDIR</varname>: путь к библиотекам + <application>Tcl</application></para> + </listitem> + + <listitem> + <para><varname>TCL_INCLUDEDIR</varname>: путь к заголовочным + файлам <application>Tcl</application> на языке Си</para> + </listitem> + + <listitem> + <para><varname>TK_VER</varname>: используемая старшая.младшая + версия <application>Tk</application></para> + </listitem> + + <listitem> + <para><varname>WISH</varname>: полный путь к интерпретатору + <application>Tk</application></para> + </listitem> + + <listitem> + <para><varname>TK_LIBDIR</varname>: путь к библиотекам + <application>Tk</application></para> + </listitem> + + <listitem> + <para><varname>TK_INCLUDEDIR</varname>: путь к заголовочным + файлам <application>Tk</application> на языке Си</para> + </listitem> + </itemizedlist></entry> +</row> + +<row> + <entry><literal>tk</literal></entry> + + <entry>То же, что и для <literal>tcl</literal></entry> + + <entry>Небольшая обёртка при одновременном использовании + <application>Tcl</application> и <application>Tk</application>. + Возвращает те же переменные, что и при использовании + <application>Tcl</application>.</entry> +</row> + +<row> + <entry><literal>twisted</literal></entry> + + <entry>(нет), <literal>ARGS</literal></entry> + + <entry>Добавляет зависимость от <application>twistedCore</application>. + Перечень требуемых компонентов можно указать в качестве значения + этой переменной. <literal>ARGS</literal> может принимать одно из + значений: + + <itemizedlist> + <listitem> + <para><literal>build</literal>: добавляет + <application>twistedCore</application> или любой из указанных + компонентов как зависимость построения.</para> + </listitem> + + <listitem> + <para><literal>run</literal>: добавляет + <application>twistedCore</application> или любой из указанных + компонентов как зависимость запуска.</para> + </listitem> + </itemizedlist> + + Помимо <literal>build</literal> и <literal>run</literal> можно + указать один или несколько поддерживаемых компонентов + <application>twisted</application>. Поддерживаемые значения + перечислены в <filename>Uses/twisted.mk</filename>.</entry> +</row> + +<row> + <entry><literal>uidfix</literal></entry> + + <entry>(нет)</entry> + + <entry>Изменяет некоторое поведение по умолчанию (в основном, + переменные) системы построения для возможности установки этого + порта из-под обычного пользователя. Попробуйте это в вашем порте + перед добавлением <literal>NEED_ROOT=yes</literal>.</entry> +</row> + +<row> + <entry><literal>uniquefiles</literal></entry> + + <entry>(нет), <literal>dirs</literal></entry> + + <entry> + Делает файлы и каталоги 'уникальными' посредством добавления + приставки или окончания. При использовании параметра + <literal>dirs</literal> порт нуждается в приставке (и только в + ней) на основе <varname>UNIQUE_PREFIX</varname> для стандартных + каталогов <varname>DOCSDIR</varname>, + <varname>EXAMPLESDIR</varname>, <varname>DATADIR</varname>, + <varname>WWWDIR</varname>, <varname>ETCDIR</varname>. Для портов + доступны следующие переменные: + + <itemizedlist> + <listitem><para><varname>UNIQUE_PREFIX</varname>: приставка + для использования с каталогами и файлами. По умолчанию + <varname>${PKGNAMEPREFIX}</varname>.</para></listitem> + + <listitem><para><varname>UNIQUE_PREFIX_FILES</varname>: + перечень файлов, для которых нужна приставка. По умолчанию + пустое значение.</para></listitem> + + <listitem><para><varname>UNIQUE_SUFFIX</varname>: окончание + для использования с файлами. По умолчанию + <varname>${PKGNAMESUFFIX}</varname>.</para></listitem> + + <listitem><para><varname>UNIQUE_SUFFIX_FILES</varname>: + перечень файлов, для которых нужно окончание. По умолчанию + пустое значение.</para></listitem> + </itemizedlist></entry> +</row> + +<row> + <entry><literal>webplugin</literal></entry> + + <entry>(нет), <literal>ARGS</literal></entry> + + <entry>Автоматически создаёт и удаляет символические ссылки для + каждого из приложений с поддержкой фреймворка webplugin. + <literal>ARGS</literal> может принимать одно из значений: + + <itemizedlist> + <listitem> + <para><literal>gecko</literal>: поддержка плагинов + Gecko</para> + </listitem> + + <listitem> + <para><literal>native</literal>: поддержка плагинов Gecko, + Opera и WebKit-GTK</para> + </listitem> + + <listitem> + <para><literal>linux</literal>: поддержка плагинов + Linux</para> + </listitem> + + <listitem> + <para><literal>all</literal> (по умолчанию, неявно): + поддержка всех типов плагинов</para> + </listitem> + + <listitem> + <para>(отдельные записи): поддержка только указанных + браузеров</para> + </listitem> + </itemizedlist> + + Следующие переменные могут быть отредактированы: + + <itemizedlist> + <listitem> + <para><varname>WEBPLUGIN_FILES</varname>: Без значения по + умолчанию, должна устанавливаться вручную. + Устанавливаемые файлы плагина.</para> + </listitem> + + <listitem> + <para><varname>WEBPLUGIN_DIR</varname>: Директория для + установки файлов плагина, по умолчанию <filename + class="directory"><replaceable>PREFIX</replaceable>/lib/browser_plugins/<replaceable>WEBPLUGIN_NAME</replaceable></filename>. + Задавайте её, если порт устанавливает файлы плагина за + пределами каталога по умолчанию, для защиты от повреждения + символических ссылок.</para> + </listitem> + + <listitem> + <para><varname>WEBPLUGIN_NAME</varname>: Итоговое имя + каталога для установки файлов плагина, по умолчанию + <varname>PKGBASE</varname>.</para> + </listitem> + </itemizedlist></entry> +</row> + +<row> <entry><literal>zenoss</literal></entry> + <entry>(нет)</entry> - <entry>Подразумевает использование <filename - role="package">net-mgmt/zenoss</filename> тем или иным образом, - но в основном используется для построения портов zenpack, - относящихся к zenoss.</entry> + + <entry>Использует <package role="port">net-mgmt/zenoss</package>. + В основном используется для построения портов + <application>zenoss</application>, относящихся + к <application>zenpack</application>.</entry> +</row> + +<row> + <entry><literal>zope</literal></entry> + + <entry>(нет)</entry> + + <entry>Использует <package role="port">www/zope</package>. + В основном используется для построения портов, относящихся к + <application>zope</application>. <varname>ZOPE_VERSION</varname> + может использоваться портом для указания того, что должна + использоваться определённая версия + <application>zope</application>.</entry> </row> diff --git a/ru_RU.KOI8-R/books/porters-handbook/versions.xml b/ru_RU.KOI8-R/books/porters-handbook/versions.xml index 996f71f87d..8e1e4dc725 100644 --- a/ru_RU.KOI8-R/books/porters-handbook/versions.xml +++ b/ru_RU.KOI8-R/books/porters-handbook/versions.xml @@ -5,7 +5,7 @@ $FreeBSD$ - Original revision: r42930 + Original revision: r43967 --> <row> @@ -4163,6 +4163,44 @@ </row> <row> + <entry>902502</entry> + <entry>26 августа 2013</entry> + <entry>9.2-STABLE после включения флага поиска пути CAM + <literal>PIM_RESCAN</literal> + (рев. <revnumber>254938</revnumber>).</entry> +</row> + +<row> + <entry>902503</entry> + <entry>27 августа 2013</entry> + <entry>9.2-STABLE после включения флага cdev + <literal>SI_UNMAPPED</literal> + (рев. <revnumber>254979</revnumber>).</entry> +</row> + +<row> + <entry>902504</entry> + <entry>22 октября 2013</entry> + <entry>9.2-STABLE после включения поддержки первой загрузки + <quote>first boot</quote> для сценариев &man.rc.8; + (рев. <revnumber>256917</revnumber>).</entry> +</row> + +<row> + <entry>902505</entry> + <entry>December 12, 2013</entry> + <entry>9.2-STABLE after Heimdal encoding fix + (rev <revnumber>259448</revnumber>).</entry> +</row> + +<row> + <entry>902506</entry> + <entry>31 декабря 2013</entry> + <entry>9-STABLE после исправлений для MAP_STACK + (рев. <revnumber>260082</revnumber>).</entry> +</row> + +<row> <entry>1000000</entry> <entry>26 сентября 2011</entry> <entry>10.0-CURRENT.</entry> @@ -4180,8 +4218,8 @@ <entry>12 декабря 2011</entry> <entry>10-CURRENT после определения булевых true/false в sys/types.h, значение sizeof(bool) могло измениться (рев. - <revnumber>228444</revnumber>). 10-CURRENT после появления xlocale.h - (рев. <revnumber>r227753</revnumber>).</entry> + <revnumber>228444</revnumber>). 10-CURRENT после появления + xlocale.h (рев. <revnumber>r227753</revnumber>).</entry> </row> <row> @@ -4330,7 +4368,8 @@ <entry>22 октября 2012</entry> <entry>10-CURRENT после удаления поддержки файловых систем, не являющихся MPSAFE, и добавления поддержки FUSEFS (рев. - <revnumber>241519</revnumber>, <revnumber>241897</revnumber>).</entry> + <revnumber>241519</revnumber>, <revnumber>241897</revnumber>). + </entry> </row> <row> @@ -4355,7 +4394,8 @@ <entry>1000024</entry> <entry>5 ноября 2012</entry> <entry>10-CURRENT после переключения компилятора по умолчанию на - clang на платформах i386 и amd64 (рев. <revnumber>242624</revnumber>). + clang на платформах i386 и amd64 (рев. + <revnumber>242624</revnumber>). </entry> </row> @@ -4488,7 +4528,8 @@ <entry>16 июля 2013</entry> <entry>10-CURRENT после переключения ABI, используемого по умолчанию, на <literal>ARM EABI</literal> для архитектур arm, - armeb, armv6, and armv6eb (рев. <revnumber>253396</revnumber>).</entry> + armeb, armv6, and armv6eb (рев. <revnumber>253396</revnumber>). + </entry> </row> <row> @@ -4537,8 +4578,9 @@ <entry>1000044</entry> <entry>15 августа 2013</entry> <entry>10-CURRENT после перевода <literal>libc.so</literal> на - использование сценария &man.ld.1; (рев. <revnumber>251668</revnumber>, - <revnumber>254358</revnumber>).</entry> + использование сценария &man.ld.1; (рев. + <revnumber>251668</revnumber>, <revnumber>254358</revnumber>). + </entry> </row> <row> @@ -4556,7 +4598,8 @@ <entry>10-CURRENT после добавления флагов mbuf <literal>M_PROTO[9-12]</literal> и удаления флагов <literal>M_FRAG|M_FIRSTFRAG|M_LASTFRAG</literal> (рев. - <revnumber>254524</revnumber>, <revnumber>254526</revnumber>).</entry> + <revnumber>254524</revnumber>, <revnumber>254526</revnumber>). + </entry> </row> <row> @@ -4598,7 +4641,8 @@ <entry>1000051</entry> <entry>25 августа 2013</entry> <entry>10-CURRENT после импорта драйвера Radeon KMS (рев. - <revnumber>254885</revnumber>, <revnumber>254887</revnumber>).</entry> + <revnumber>254885</revnumber>, <revnumber>254887</revnumber>). + </entry> </row> <row> @@ -4633,6 +4677,14 @@ </row> <row> + <entry>1000100</entry> + <entry>7 декабря 2013</entry> + <entry><literal>releng/10.0</literal> после отделения ветки от + <literal>stable/10</literal> + (рев. <revnumber>259065</revnumber>).</entry> +</row> + +<row> <entry>1000500</entry> <entry>10 октября 2013</entry> <entry>10-STABLE после отделения ветки от <literal>head/</literal> @@ -4640,7 +4692,117 @@ </row> <row> + <entry>1000501</entry> + <entry>22 октября 2013</entry> + <entry>10-STABLE после добавления поддержки первой загрузки в + &man.rc.8; (рев. <revnumber>256916</revnumber>).</entry> +</row> + +<row> + <entry>1000502</entry> + <entry>20 ноября 2013</entry> + <entry>10-STABLE после удаления символов iconv из + <literal>libc.so.7</literal> + (рев. <revnumber>258398</revnumber>).</entry> +</row> + +<row> + <entry>1000510</entry> + <entry>7 декабря 2013</entry> + <entry>Обновлено значение __FreeBSD_version для + <literal>releng/10.0</literal>, для того чтобы оно не + уменьшалось (рев. <revnumber>259067</revnumber>).</entry> +</row> + +<row> + <entry>1000700</entry> + <entry>7 декабря 2013</entry> + <entry>10-STABLE после отделения ветки <literal>releng/10.0</literal> + (рев. <revnumber>259069</revnumber>).</entry> +</row> + +<row> + <entry>1000701</entry> + <entry>15 декабря 2013</entry> + <entry>10.0-STABLE после исправления кодировки Heimdal + (рев. <revnumber>259447</revnumber>).</entry> +</row> + +<row> + <entry>1000702</entry> + <entry>31 декабря 2013</entry> + <entry>10-STABLE после исправлений для MAP_STACK + (рев. <revnumber>260135</revnumber>).</entry> +</row> + +<row> <entry>1100000</entry> <entry>10 октября 2013</entry> <entry>11.0-CURRENT (рев. <revnumber>256284</revnumber>).</entry> </row> + +<row> + <entry>1100001</entry> + <entry>19 октября 2013</entry> + <entry>11.0-CURRENT после добавления поддержки "первой загрузки" + в сценарии <filename>rc.d</filename> для использования в + портах (рев. <revnumber>256776</revnumber>).</entry> +</row> + +<row> + <entry>1100002</entry> + <entry>5 ноября 2013</entry> + <entry>11.0-CURRENT после удаления поддержки исторических ioctl + (рев. <revnumber>257696</revnumber>).</entry> +</row> + +<row> + <entry>1100003</entry> + <entry>17 ноября 2013</entry> + <entry>11.0-CURRENT после изменений в iconv + (рев. <revnumber>258284</revnumber>).</entry> +</row> + +<row> + <entry>1100004</entry> + <entry>15 декабря 2013</entry> + <entry>11.0-CURRENT после изменения в поведении + <function>gss_pseudo_random</function>, добавленного в r259286 + (рев. <revnumber>259424</revnumber>).</entry> +</row> + +<row> + <entry>1100005</entry> + <entry>28 декабря 2013</entry> + <entry>11.0-CURRENT после r259951 - Не объединять записи в + <function>vm_map_stack()</function> + (рев. <revnumber>260010</revnumber>).</entry> +</row> + +<row> + <entry>1100006</entry> + <entry>28 января 2014</entry> + <entry>11.0-CURRENT после обновления libelf и libdwarf + (рев. <revnumber>261246</revnumber>).</entry> +</row> + +<row> + <entry>1100007</entry> + <entry>30 января 2014</entry> + <entry>11.0-CURRENT после обновления libc++ до версии to 3.4 + (рев. <revnumber>261283</revnumber>).</entry> +</row> + +<row> + <entry>1100008</entry> + <entry>14 февраля 2014</entry> + <entry>11.0-CURRENT после исправления совместимости ABI в libc++ 3.4 + (рев. <revnumber>261801</revnumber>).</entry> +</row> + +<row> + <entry>1100009</entry> + <entry>16 февраля 2014</entry> + <entry>11.0-CURRENT после обновления llvm/clang до версии 3.4 + (рев. <revnumber>261991</revnumber>).</entry> +</row> |