diff --git a/ru_RU.KOI8-R/books/porters-handbook/book.sgml b/ru_RU.KOI8-R/books/porters-handbook/book.sgml index 3f539f5ad1..951eef1e45 100644 --- a/ru_RU.KOI8-R/books/porters-handbook/book.sgml +++ b/ru_RU.KOI8-R/books/porters-handbook/book.sgml @@ -4,7 +4,7 @@ $FreeBSD$ $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/porters-handbook/book.sgml,v 1.136 2006/10/20 09:25:00 marck Exp $ - Original revision: r38283 + Original revision: r39245 --> Посмотрим, сможете ли вы его понять. Не обращайте внимание на содержимое строчки $FreeBSD$, она - будет заполнена автоматически системой CVS, когда порт будет + будет заполнена автоматически системой SVN, когда порт будет импортирован в наше дерево портов. Вы можете найти более подробный пример в разделе пример Makefile. @@ -198,8 +198,8 @@ WWW: http://www.oneko.org/ также называют списком для упаковки, потому что пакет генерируется упаковкой файлов, которые здесь указаны. Имена путей указываются относительно установочного префикса - (обычно /usr/local или - /usr/X11R6). Если вы используете переменные + (обычно /usr/local). + Если вы используете переменные MANn (а вы должны это делать), то указывать страницы справочника здесь не нужно. Если порт во время установки создает каталоги, убедитесь, @@ -346,6 +346,10 @@ PLIST_DIRS= lib/X11/oneko make package + + + make readme + Проверьте, что ни на шаге package, ни на @@ -573,7 +577,9 @@ PLIST_DIRS= lib/X11/oneko вызывают настоящие цели или скрипты, и их не нужно менять. Если вам нужно изменить распаковку, исправляйте do-extract, но никогда не меняйте способ - работы extract! + работы extract! Кроме того, цель + post-deinstall является недействительной + и не выполняется инфраструктурой портов. Теперь вы представляете, что происходит, когда пользователь @@ -587,7 +593,7 @@ PLIST_DIRS= lib/X11/oneko Получите оригинальные исходные тексты (обычно) в виде упакованного tar-архива (foo.tar.gz или - foo.tar.Z) + foo.tar.bz2) и скопируйте его в каталог DISTDIR. Всегда используйте исходные тексты основной ветки разработки везде, где это возможно. @@ -708,7 +714,7 @@ PLIST_DIRS= lib/X11/oneko так далее, всегда ссылайтесь на путь и название файла в названиях патчей. - Не помещайте строки RCS в патчи. CVS будет изменять их при + Не помещайте строки RCS в патчи. SVN будет изменять их при помещении файлов в дерево портов, и когда мы будем их оттуда извлекать, они будут уже другие, поэтому применение патчей окончится неудачей. Строчки RCS предваряются знаком доллара @@ -739,7 +745,7 @@ PLIST_DIRS= lib/X11/oneko часть из одного проекта для исправления похожей области в другом, то будьте аккуратны, пожалуйста: получаемый однострочный патч может быть полон нефункциональных изменений. Это не только - увеличивает размер репозитория CVS, но также усложняет поиск того, + увеличивает размер репозитория SVN, но также усложняет поиск того, что конкретно вызвало проблему и что вы вообще изменили. Если вам нужно удалить файл, то вы можете сделать это при @@ -846,11 +852,8 @@ DOS2UNIX_REGEX= .*\.(c|cpp|h) EXTRACT_BEFORE_ARGS, EXTRACT_AFTER_ARGS, EXTRACT_SUFX или DISTFILES в - зависимости от того, насколько необычен формат дистрибутивного файла. - (Самый распространённый случай - это - EXTRACT_SUFX=.tar.Z, когда tar-файл упакован - обычной утилитой compress, а не архиватором - gzip.) + зависимости от того, насколько необычен формат дистрибутивного + файла. В худшем случае вы можете просто определить свою собственную цель do-extract для переопределения действий по @@ -1706,8 +1709,8 @@ PORTEPOCH= 1 java Программное обеспечение, связанное с языком Java™. - Категория java не должна быть - единственной для порта. Оставьте для портов, + Категория java ни в коем случае + не должна быть единственной для порта. Оставьте для портов, непосредственно имеющих отношение к языку Java, портерам также рекомендуется не использовать java как основную категорию @@ -1716,8 +1719,8 @@ PORTEPOCH= 1 kde* - Порты проекта K Desktop - Environment (KDE). + Порты проекта + KDE. @@ -2405,11 +2408,15 @@ MASTER_SITE_SUBDIR= make MASTER_SITES= SF - Если попытка угадать не удалась, что это может быть переписано + Если попытка угадать не удалась, то это может быть переписано следующим образом. - MASTER_SITES= SF/stardict/WyabdcRealPeopleTTS/${PORTVE -RSION} + MASTER_SITES= SF/stardict/WyabdcRealPeopleTTS/${PORTVERSION} + + Что также можно записать в таком виде: + + MASTER_SITES= SF +MASTER_SITE_SUBDIR= stardict/WyabdcRealPeopleTTS/${PORTVERSION} Популярные магические макросы для @@ -2515,11 +2522,12 @@ RSION}</programlisting> <programlisting>DISTNAME= foo EXTRACT_SUFX= .tgz</programlisting> - <para>Переменные <makevar>USE_BZIP2</makevar> и + <para>Переменные <makevar>USE_BZIP2</makevar>, + <makevar>USE_XZ</makevar> и <makevar>USE_ZIP</makevar> при необходимости автоматически устанавливают значение <makevar>EXTRACT_SUFX</makevar> в - <literal>.tar.bz2</literal> или <literal>.zip</literal>. - Если ни одна из этих + <literal>.tar.bz2</literal>, <literal>.tar.xz</literal> или + <literal>.zip</literal>. Если ни одна из этих переменных не задана, то значение <makevar>EXTRACT_SUFX</makevar> по умолчанию устанавливается в <literal>.tar.gz</literal>.</para> @@ -3376,9 +3384,9 @@ ALWAYS_KEEP_DISTFILES= yes <replaceable>target</replaceable> - это цель, которую нужно вызвать в этом каталоге. Например,</para> - <programlisting>LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg</programlisting> + <programlisting>LIB_DEPENDS= jpeg:${PORTSDIR}/graphics/jpeg</programlisting> - <para>проверит наличие библиотеки jpeg со старшим номером версии 9 и + <para>проверит наличие библиотеки jpeg с любым номером версии и перейдет в подкаталог <filename>graphics/jpeg</filename> вашего дерева портов для ее построения и установки, если библиотека отсутствует. Часть <replaceable>target</replaceable> может быть @@ -3389,11 +3397,11 @@ ALWAYS_KEEP_DISTFILES= yes <para>Часть <replaceable>lib</replaceable> является регулярным выражением, которое вызывается для вывода, полученного из <command>ldconfig -r</command>. Разрешаются такие значения, как - <literal>intl.[5-7]</literal> и <literal>intl</literal>. - Первые шаблон, <literal>intl.[5-7]</literal>, совпадет с любым - из: <literal>intl.5</literal>, <literal>intl.6</literal> или - <literal>intl.7</literal>. Второй шаблон, <literal>intl</literal>, - совпадет с любой версией библиотеки <literal>intl</literal>.</para> + <literal>intl.9</literal> и <literal>intl.[5-7]</literal>. + Первый шаблон, <literal>intl.9</literal>, совпадает только с + intl версии 9, в то время как <literal>intl.[5-7]</literal> + совпадает с любым из: <literal>intl.5</literal>, + <literal>intl.6</literal> и <literal>intl.7</literal>.</para> </note> <para>Зависимость проверяется дважды, один раз внутри цели @@ -3423,14 +3431,15 @@ ALWAYS_KEEP_DISTFILES= yes <para>Например,</para> - <programlisting>RUN_DEPENDS= ${LOCALBASE}/etc/innd:${PORTSDIR}/news/inn \ + <programlisting>RUN_DEPENDS= ${LOCALBASE}/news/bin/innd:${PORTSDIR}/news/inn \ xmlcatmgr:${PORTSDIR}/textproc/xmlcatmgr</programlisting> - <para>проверит, существует ли файл или каталог - <filename>/usr/local/etc/innd</filename> и построит и установит его - из подкаталога <filename>news/inn</filename> дерева портов, если он - не будет найден. Он также проверит, имеется ли выполнимый файл с - именем <command>xmlcatmgr</command> в пути поиска, и перейдет в + <para>проверит существование файла или каталога + <filename>/usr/local/news/bin/innd</filename>, и если ничего + не будет найдено, то построит и установит порт из подкаталога + <filename>news/inn</filename> дерева портов. Также будет + выполнена проверка, присутствует ли в пути поиска исполняемый + файл с именем <command>xmlcatmgr</command>, и перейдет в подкаталог <filename>textproc/xmlcatmgr</filename> вашего дерева портов для его построения и установки, если он не будет найден.</para> @@ -3446,7 +3455,7 @@ ALWAYS_KEEP_DISTFILES= yes <para>Официальным значением переменной поиска <envar>PATH</envar>, используемым в кластере построения портов является</para> - <programlisting>/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin</programlisting> + <programlisting>/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin</programlisting> </note> <para>Зависимость проверяется внутри цели @@ -3589,16 +3598,16 @@ ALWAYS_KEEP_DISTFILES= yes <sect2 id="use-vars"> <title><makevar>USE_<replaceable>*</replaceable></makevar> - Для объединения нескольких зависимостей, которые есть во многих - портах, предназначено несколько переменных. Хотя их использование - является необязательным, они могут упростить избыточность файлов - Makefile порта. Каждый из них оформляется как - USE_*. Использование - этих переменных ограничено Makefile'ом порта - и ports/Mk/bsd.*.mk и не рассчитано на - вложенность указываемых пользователями опция — используйте - для этих целей WITH_* - и WITHOUT_*. + Для определения общих зависимостей, совместно используемых + многими портами, предназначено несколько переменных. Их + использование является необязательным, но помогает упростить + избыточность файлов Makefile порта. + Каждый из них оформляется как + USE_*. Эти + переменные можно использовать только в Makefile + порта и ports/Mk/bsd.*.mk. Они не + предназначены для установки пользователями параметров — + используйте для этих целей PORT_OPTIONS. Установка любых USE_* @@ -3766,7 +3775,95 @@ ALWAYS_KEEP_DISTFILES= yes людей—включая себя—от грядущих бед. - + + Автоматические зависимости и проблемы, которые они + вызывают + + Зависимости должны быть указаны либо явно, либо с + использованием фреймворка + OPTIONS. Использование прочих методов, таких как + автоматическое обнаружение зависимостей, усложняет индексирование, + что вызывает проблемы в управлении портами и пакетами. + + + Некорректное объявление необязательной зависимости + + .include <bsd.port.pre.mk> + +.if exists(${LOCALBASE}/bin/foo) +LIB_DEPENDS= bar:${PORTSDIR}/foo/bar +.endif + + + Проблема автоматического добавления зависимостей + заключается в том, что файлы и настройки за пределами порта + могут произвольно меняться. Пример: после построения + индекса устанавливается набор портов. При этом один из + них устанавливает проверяемый файл. На этом этапе индекс + будет неправильным, потому что установленный порт неожиданно + получит новую зависимость. Индекс может быть по прежнему + неправильным даже после его перестроения, в случае если + другие порты также определят дополнительные зависимости, + основываясь на существовании других файлов. + + + Корректное объявление необязательной зависимости + + OPTIONS_DEFINE= BAR +BAR_DESC= Enable bar support + +.include <bsd.port.options.mk> + +.if ${PORTOPTIONS:MBAR} +LIB_DEPENDS= bar:${PORTSDIR}/foo/bar +.endif + + + Правильным способом является проверка переменных параметров. + Этот способ не приводит к несоответствиям в индексе набора + портов, поскольку параметры определены до построения индекса. + При этом можно использовать простые скрипты для автоматизации + построения, установки и обновления этих портов и соответствующих + им пакетов. + + + + <makevar>USE_</makevar> и + <makevar>WANT_</makevar> + + Переменные USE_ задаются мейнтейнером + порта для определения программного обеспечения, от которого + этот порт зависит. Порт, для которого нужен Firefox, + укажет + + USE_FIREFOX= yes + + Некоторые переменные USE_ могут + принимать номера версий или другие параметры. Например, + порт, который требует Apache 2.2, укажет + + USE_APACHE= 22 + + В некоторых случаях для большего контроля над + зависимостями используются переменные WANT_, + которые позволяют указывать требования в более точной форме. + Например, взгляните на порт mail/squirrelmail. Этому порту + нужны несколько модулей PHP, которые перечислены в переменной + USE_PHP: + + USE_PHP= session mhash gettext mbstring pcre openssl xml + + Эти модули доступны в версиях CLI и web, поэтому версия + web выбрана с переменной WANT_: + + WANT_PHP_WEB= yes + + Имеющиеся переменные USE_ и + WANT_ определены в файлах + /usr/ports/Mk. + + <makevar>MASTERDIR</makevar> @@ -3960,27 +4057,28 @@ ${MANPREFIX}/man/de/man3/baz.3.gz Опции для Makefile - Некоторые большие приложения могут быть построены в различных - конфигурациях, с дополнительной функциональностью, зависящей от - наличия в системе определённых библиотек или приложений. Например, + Многие приложения могут быть построены в различных + конфигурациях и с дополнительной функциональностью. Например, выбор естественного (человеческого) языка, GUI против командной - строки или типа используемой базы данных. Так как не - всем пользователям требуются эти библиотеки или приложения, то в - системе портов предусмотрен механизм, позволяющий автору порта - принимать решение о конфигурации, которая будет строиться. Полная - поддержка этого механизма облегчает пользователям жизнь и даёт два - или более порта ценой создания одного. + строки или типа используемой базы данных. Пользователи могут + нуждаться в различных конфигурациях, отличных от используемой по + умолчанию, поэтому в системе портов предусмотрен механизм, + позволяющий автору порта управлять сборкой того или иного + варианта конфигурации. + Правильная поддержка этих необязательных параметров облегчает + пользователям жизнь и даёт два или более порта по цене одного. - Knobs + Knobs - <makevar>WITH_<replaceable>*</replaceable></makevar> и + <title><makevar>WITH_<replaceable>*</replaceable></makevar> + и <makevar>WITHOUT_<replaceable>*</replaceable></makevar> Эти переменные предназначены для установки системным администратором. Многие из них стандартизованы в файле - ports/KNOBS. + ports/KNOBS. При создании порта не давайте имя для knob, специфичное для данного приложения. На примере порта Avahi, используйте @@ -3998,7 +4096,7 @@ ${MANPREFIX}/man/de/man3/baz.3.gz Если обратное не указано, то проверяется только факт - установки самих переменных, но не их значение типа + установки самих переменных, но не их конкретное значение типа YES или NO. @@ -4042,10 +4140,10 @@ ${MANPREFIX}/man/de/man3/baz.3.gz WITHOUT_X11 - Если порт может быть собран с поддержкой или без - поддержки X, то, как правило, обычно порт собирается - с поддержкой X. Если эта переменная определена, то - будет собрана версия без поддержки X. + Порты, которые могут быть собраны с поддержкой + или без поддержки X, обычно собираются с поддержкой + X. Если эта переменная определена, то будет собрана + версия без поддержки X. @@ -4055,11 +4153,11 @@ ${MANPREFIX}/man/de/man3/baz.3.gz Наименование KNOBS - Рекомендуется, чтобы портеры использовали так называемые + Портеры должны использовать так называемые knobs для помощи конечным пользователям и для поддержания количества наименований knobs в небольшом количестве. Список популярных названий knobs можно найти в файле KNOBS + url="http://svn.FreeBSD.org/ports/head/KNOBS?view=markup">KNOBS Названия knobs должны отражать, что это такое и что @@ -4074,78 +4172,185 @@ ${MANPREFIX}/man/de/man3/baz.3.gz Описание - При установке порта переменная OPTIONS - предоставляет пользователю окно диалога с доступными - параметрами и сохраняет их в файл - /var/db/ports/portname/options. - Эти опции будут повторно использованы при следующем - перестроении порта. Вам больше никогда не понадобится - запоминать все двадцать опций - WITH_* и - WITHOUT_*, - используемых вами при построении этого порта! + При установке порта переменные OPTIONS_* + предоставляют пользователю окно диалога с отображением + доступных параметров, с записью выбранных параметров в файл + /var/db/ports/${UNIQUENAME}/options. + Эти опции повторно используются при следующем построении + порта. Когда пользователь запускает make config (или запускает впервые make build), - инфраструктура выполнит проверку существования файла - /var/db/ports/portname - /options. Если этот файл не существует, то при - создании диалогового окна будут использованы значения - OPTIONS, в котором их можно переключить. - Затем сохраняется файл опций, и выбранные переменные - используются при построении порта. + инфраструктура выполняет проверку существования файла + /var/db/ports/${UNIQUENAME}/options. + Если этот файл не существует, то используются значения + OPTIONS_* и отображается диалоговое окно, + в котором эти параметры можно включить или выключить. + Затем сохраняется файл опций options, + и выбранные переменные используются при построении порта. Если новая версия порта добавляет новые значения OPTIONS, то пользователю будет представлено окно диалога с сохраненными заполненными значениями старых OPTIONS. - Для просмотра сохраненной конфигурации используйте - make showconfig. Для удаления + make showconfig отображает + сохраненную конфигурацию. Для удаления сохраненной конфигурации используйте make rmconfig. Синтаксис - Синтаксис переменной OPTIONS: - OPTIONS= OPTION "descriptive text" default ... + OPTIONS_DEFINE содержит список + используемых OPTIONS. Они независимы + друг от друга и не сгруппированы: - Значением по умолчанию является или ON, - или OFF. Разрешаются множественные - повторы всех трех полей. + OPTIONS_DEFINE= OPT1 OPT2 - Определение OPTIONS обязано появиться + Далее после определения следует описание + OPTIONS (не является обязательным, + но настоятельно рекомендуется): + + OPT1_DESC= Describe OPT1 +OPT2_DESC= Describe OPT2 +OPT3_DESC= Describe OPT3 +OPT4_DESC= Describe OPT4 +OPT5_DESC= Describe OPT5 +OPT6_DESC= Describe OPT6 + + + ports/Mk/bsd.options.desc.mk + содержит описание множества наиболее используемых + OPTIONS; переопределять их, как + правило, не нужно. + + + + При описании параметров старайтесь представить себя + на месте пользователя: Что это делает? + и Для чего бы я захотел включить это? + Не делайте простое повторение названия. Например, + описание параметра NLS как + include NLS support (включить + поддержку NLS) не поможет пользователю, который + уже видит название параметра, но может не знать, что + это означает. Описав его как Native Language + Support via gettext utilities (Поддержка + национального языка через утилиты gettext), + вы поможете пользователю гораздо больше. + + + OPTIONS можно группировать в виде + переключателей, для которых разрешен выбор единственного + варианта в каждой группе: + + OPTIONS_SINGLE= SG1 +OPTIONS_SINGLE_SG1= OPT3 OPT4 + + OPTIONS также можно группировать + в виде списков со множественным выбором, для которых + обязан быть включен по крайней мере + один из параметров: + + OPTIONS_MULTI= MG1 +OPTIONS_MULTI_MG1= OPT5 OPT6 + + OPTIONS_MULTI и + OPTIONS_SINGLE также допускают + отсутствие выбора путём включения группы в + OPTIONS_DEFINE: + + OPTIONS_DEFINE= MG1 +OPTIONS_MULTI= MG1 +OPTIONS_MULTI_MG1= OPT5 OPT6 + + После этого группа требует по крайней мере один + OPTION из MG1, + только если выбран новый MG1 + OPTION. Рекомендуется + поэкспериментировать, чтобы улучшить понимание. + + По умолчанию OPTIONS находится в + выключенном положении, если при этом оно также отсутствует + в списке OPTIONS_DEFAULT: + + OPTIONS_DEFAULT= OPT1 OPT3 OPT6 + + Определения OPTIONS обязаны появиться до подключения bsd.port.options.mk. - Переменные WITH_* и - WITHOUT_* могут быть проверены только после + Переменные PORT_OPTIONS + могут быть проверены только после подключения bsd.port.options.mk. Вместо этого также можно использовать подключение bsd.port.pre.mk, что все еще широко используется в портах, написанных до появления bsd.port.options.mk. Но имейте в виду, - что некоторые переменные, обычно флаги USE_*, + что некоторые переменные, обычно, это некоторые флаги + USE_*, после подключения bsd.port.pre.mk будут - работать не так, как это от них ожидается. + работать не так, как этого от них ожидают. Простое использование <makevar>OPTIONS</makevar> - OPTIONS= FOO "Enable option foo" On \ - BAR "Support feature bar" Off + + OPTIONS_DEFINE= FOO BAR +FOO_DESC= Enable option foo +BAR_DESC= Support feature bar .include <bsd.port.options.mk> -.if defined(WITHOUT_FOO) -CONFIGURE_ARGS+= --without-foo +.if ${PORT_OPTIONS:MFOO} +CONFIGURE_ARGS+=--with-foo .else -CONFIGURE_ARGS+= --witht-foo +CONFIGURE_ARGS+=--without-foo .endif -.if defined(WITH_BAR) +.if ${PORT_OPTIONS:MBAR} RUN_DEPENDS+= bar:${PORTSDIR}/bar/bar .endif +.include <bsd.port.mk> + + + + Пример реального использования + <makevar>OPTIONS</makevar> + + OPTIONS_DEFINE= EXAMPLES + +OPTIONS_SINGLE= BACKEND +OPTIONS_SINGLE_BACKEND= MYSQL PGSQL BDB + +OPTIONS_MULTI= AUTH +OPTIONS_MULTI_AUTH= LDAP PAM SSL + +EXAMPLES_DESC= Install extra examples +MYSQL_DESC= Use MySQL as backend +PGSQL_DESC= Use PostgreSQL as backend +BDB_DESC= Use Berkeley DB as backend +LDAP_DESC= Build with LDAP authentication support +PAM_DESC= Build with PAM support +SSL_DESC= Build with OpenSSL support + +OPTIONS_DEFAULT= PGSQL LDAP SSL + +.include <bsd.port.options.mk> + +.if ${PORT_OPTIONS:MPGSQL} +USE_PGSQL= yes +CONFIGURE_ARGS+= --with-postgres +.else +CONFIGURE_ARGS+= --without-postgres +.endif + +.if ${PORT_OPTIONS:MICU} +LIB_DEPENDS+= icuuc:${PORTSDIR}/devel/icu +.endif + +# Check other OPTIONS + .include <bsd.port.mk> @@ -4164,6 +4369,12 @@ CONFIGURE_ARGS+= --with-foo .include <bsd.port.post.mk> + + + Такой способ использования OPTIONS + является устаревшим, и в будущем его поддержка будет + удалёна. Не используйте этот способ для новых портов. + @@ -4180,8 +4391,9 @@ CONFIGURE_ARGS+= --with-foo Неправильное управление опцией - .if defined(WITH_FOO) -LIB_DEPENDS+= foo.0:${PORTSDIR}/devel/foo + + .if ${PORT_OPTIONS:MFOO} +LIB_DEPENDS+= foo:${PORTSDIR}/devel/foo CONFIGURE_ARGS+= --enable-foo .endif @@ -4198,8 +4410,9 @@ CONFIGURE_ARGS+= --enable-foo Правильное управление опцией - .if defined(WITH_FOO) -LIB_DEPENDS+= foo.0:${PORTSDIR}/devel/foo + + .if ${PORT_OPTIONS:MFOO} +LIB_DEPENDS+= foo:${PORTSDIR}/devel/foo CONFIGURE_ARGS+= --enable-foo .else CONFIGURE_ARGS+= --disable-foo @@ -5317,7 +5530,7 @@ PLIST_SUB+= NLS="@comment " - Использование <literal>perl</literal> + Использование <application>Perl</application> Если MASTER_SITES установлена в значение MASTER_SITE_PERL_CPAN, то предпочтительным @@ -5334,12 +5547,12 @@ PLIST_SUB+= NLS="@comment " в качестве MASTER_SITE_SUBDIR разрешается использовать id автора. - Все из настраиваемых knobs ниже принимают и YES, - и строку с версией, вида 5.8.0+. Использование + Все из настраиваемых knobs ниже принимают либо YES, + либо строку с версией вида 5.8.0+. YES означает, что данный порт можно использовать - со всеми поддерживаемыми версиями Perl. + с любой из поддерживаемых версий Perl. Если порт работает только с некоторыми версиями - Perl, то это можно обозначить при помощи + Perl, то это можно обозначить при помощи строки с версией, указывающей на минимальную версию (пример: 5.7.3+), максимальную версию (пример: 5.8.0-) или точную версию (пример: @@ -5347,14 +5560,14 @@ PLIST_SUB+= NLS="@comment "
Переменные для портов, использующих - <literal>perl</literal> + Perl Переменная - Смысл + Значение @@ -5362,29 +5575,26 @@ PLIST_SUB+= NLS="@comment " USE_PERL5 - Указывает на то, что порт использует perl - 5 для своего построения и работы. + Perl 5 используется для построения и работы. USE_PERL5_BUILD - Указывает на то, что для построения порт - использует perl 5. + Perl 5 используется для построения. USE_PERL5_RUN - Указывает на то, что для работы порт использует - perl 5. + Perl 5 используется во время работы. PERL - Полный маршрут к perl 5, либо в - системе, либо установленного из портов, но без номера версии. + Полный путь к интерпретатору Perl 5, либо в + системе, либо установленному из портов, но без номера версии. Используйте это, если вам нужно заменить строки #! в скриптах. @@ -5417,14 +5627,14 @@ PLIST_SUB+= NLS="@comment " PERL_VERSION - Полная версия установленного perl + Полная версия установленного Perl (например, 5.8.9). PERL_LEVEL - Версия установленного perl в форме + Установленная версия Perl в форме целого числа вида MNNNPP (например, 500809). @@ -5432,7 +5642,7 @@ PLIST_SUB+= NLS="@comment " PERL_ARCH - Место, где perl хранит + Место, в котором Perl хранит архитектурно-зависимые библиотеки. По умолчанию это ${ARCH}-freebsd. @@ -5440,7 +5650,7 @@ PLIST_SUB+= NLS="@comment " PERL_PORT - Название установленного порта perl, + Название установленного порта Perl, (к примеру, perl5). @@ -5448,8 +5658,8 @@ PLIST_SUB+= NLS="@comment " SITE_PERLИмя каталога, куда помещаются специфичные для сайта - пакеты perl. Это значение добавляется к - PLIST_SUB. + пакеты Perl. Это значение добавляется к + PLIST_SUB. @@ -5462,6 +5672,23 @@ PLIST_SUB+= NLS="@comment " http://search.cpan.org/dist/Module-Name/ (включая завершающий слэш). + + + Не используйте ${SITE_PERL} в объявлении + зависимостей. Использование этой конструкции подразумевает + наличие подключенного bsd.perl.mk, что + не всегда так. Порты, зависимые от этого порта, получат + неправильные зависимости, если файлы этого порта будут + перемещены при последующем обновлении. Правильный способ + объявления зависимостей для модулей Perl показан в примере + ниже. + + + + Пример зависимости Perl + + p5-IO-Tee>=0.64:${PORTSDIR}/devel/p5-IO-Tee + @@ -5476,17 +5703,19 @@ PLIST_SUB+= NLS="@comment " компонентов. К настоящему времени доступными компонентами являются: - bigreqsproto compositeproto damageproto dmx dmxproto - evieproto fixesproto fontcacheproto fontenc fontsproto fontutil - glproto ice inputproto kbproto libfs oldx printproto randrproto - recordproto renderproto resourceproto scrnsaverproto sm trapproto - videoproto x11 xau xaw xaw6 xaw7 xaw8 xbitmaps xcmiscproto xcomposite - xcursor xdamage xdmcp xevie xext xextproto xf86bigfontproto - xf86dgaproto xf86driproto xf86miscproto xf86rushproto - xf86vidmodeproto xfixes xfont xfontcache xft xi xinerama - xineramaproto xkbfile xkbui xmu xmuu xorg-server xp xpm xprintapputil - xprintutil xpr oto xproxymngproto xrandr xrender xres xscrnsaver xt - xtrans xtrap xtst xv xvmc xxf86dga xxf86misc xxf86vm. + bigreqsproto compositeproto damageproto dmx + dmxproto dri2proto evieproto fixesproto fontcacheproto + fontenc fontsproto fontutil glproto ice inputproto kbproto + libfs oldx pciaccess pixman printproto randrproto + recordproto renderproto resourceproto scrnsaverproto sm + trapproto videoproto x11 xau xaw xaw6 xaw7 xbitmaps + xcmiscproto xcomposite xcursor xdamage xdmcp xevie xext + xextproto xf86bigfontproto xf86dgaproto xf86driproto + xf86miscproto xf86rushproto xf86vidmodeproto xfixes xfont + xfontcache xft xi xinerama xineramaproto xkbfile xkbui + xmu xmuu xorg-server xp xpm xprintapputil xprintutil + xproto xproxymngproto xrandr xrender xres xscrnsaver xt + xtrans xtrap xtst xv xvmc xxf86dga xxf86misc xxf86vm. Всегда актуальный перечень можно найти в /usr/ports/Mk/bsd.xorg.mk. @@ -5504,7 +5733,7 @@ PLIST_SUB+= NLS="@comment " USE_GL= glu - Многие порты определяют USE_XLIB, которая + Некоторые порты определяют USE_XLIB, которая делает порт зависимым ото всех 50 или около того библиотек. Эта переменная существует для обратной совместимости, т.к. предшествует модульному X.Org, и не должна использоваться в новых портах. @@ -5528,14 +5757,6 @@ USE_GL= glu Порт использует imake. - - USE_X_PREFIX - - Является устаревшим. Сейчас это эквивалентно - USE_XLIB и может быть свободно им - заменено. - - XMKMF @@ -5706,8 +5927,8 @@ USE_XORG= x11 xpm Заметьте, что переменная MOTIFLIB (как - правило) раскрывается в -L/usr/X11R6/lib -lXm или - /usr/X11R6/lib/libXm.a, так что нет нужды впереди + правило) раскрывается в -L/usr/local/lib -lXm или + /usr/local/lib/libXm.a, так что нет нужды впереди добавлять -L или -l. @@ -5877,7 +6098,8 @@ USE_XORG= x11 xpm QTNONSTANDARD Подавляет изменение CONFIGURE_ENV, - CONFIGURE_ARGS и + CONFIGURE_ARGS, + CPPFLAGS и MAKE_ENV. @@ -5895,36 +6117,29 @@ USE_XORG= x11 xpm QT_COMPONENTS Указывает инструменты и библиотеки в качестве - зависимостей для Qt4. Смотрите подробнее ниже. + зависимостей для Qt 4. Смотрите подробнее ниже. UIC Устанавливает путь к uic - (переменная только для чтения). По умолчанию - устанавливается в соответствии с переменной - USE_QT_VER. + (переменная только для чтения). QMAKE Устанавливает путь к qmake - (переменная только для чтения). По умолчанию - устанавливается в соответствии с переменной - USE_QT_VER. + (переменная только для чтения). QMAKESPEC Устанавливает путь к конфигурационному файлу для - qmake (переменная только для чтения). - По умолчанию устанавливается в соответствии с переменной - USE_QT_VER. + qmake (переменная только для чтения). -
@@ -5937,8 +6152,9 @@ USE_XORG= x11 xpm --with-qt-libraries=${QT_PREFIX}/lib \ --with-extra-libs=${LOCALBASE}/lib \ --with-extra-includes=${LOCALBASE}/include -CONFIGURE_ENV+= MOC="${MOC}" CPPFLAGS="${CPPFLAGS} ${QTCPPFLAGS}" LIBS="${QTCFGLIBS}" \ - QTDIR="${QT_PREFIX}" KDEDIR="${KDE_PREFIX}" +CONFIGURE_ENV+= MOC="${MOC}" LIBS="${QTCFGLIBS}" \ + QTDIR="${QT_PREFIX}" KDEDIR="${KDE_PREFIX}" +CPPFLAGS+= ${QTCPPFLAGS} Если переменная USE_QT_VER установлена в значение 4, то также разворачиваются следующие @@ -5952,9 +6168,10 @@ MAKE_ENV+= QMAKESPEC="${QMAKESPEC}" Выбор компонентов (только для Qt 4.x) - Если USE_QT_VER установлена в 4, то в + Если USE_QT_VER установлена в + значение 4, то в переменной QT_COMPONENTS можно указать - зависимость от отдельных инструментов и библиотек Qt4. К каждому + зависимость от отдельных инструментов и библиотек Qt 4. К каждому компоненту можно добавить суффикс, _build или _run, отражающий, когда должна быть применена зависимость, во время сборки или выполнения, соответственно. Если @@ -5968,7 +6185,7 @@ MAKE_ENV+= QMAKESPEC="${QMAKESPEC}" /usr/ports/Mk/bsd.qt.mk): - Доступные библиотечные компоненты Qt4 + Доступные библиотечные компоненты Qt 4 @@ -6003,7 +6220,7 @@ MAKE_ENV+= QMAKESPEC="${QMAKESPEC}" qt3support - библиотека совместимости с Qt3 + библиотека совместимости с Qt 3 @@ -6035,7 +6252,7 @@ MAKE_ENV+= QMAKESPEC="${QMAKESPEC}" после успешной компиляции.
- Доступные компоненты инструментов Qt4 + Доступные компоненты инструментов Qt 4 @@ -6077,7 +6294,7 @@ MAKE_ENV+= QMAKESPEC="${QMAKESPEC}"
- Доступные компоненты плагинов Qt4 + Доступные компоненты плагинов Qt 4 @@ -6105,16 +6322,18 @@ MAKE_ENV+= QMAKESPEC="${QMAKESPEC}"
- Выбор компонентов Qt4 + Выбор компонентов Qt 4 В этом примере портированное приложение использует библиотеку - графического пользовательского интерфейса Qt4, основную библиотеку - Qt4, все инструменты генерации кода Qt4 и генератор Makefile Qt4. - Поскольку библиотека GUI подразумевает зависимость от основной - библиотеки, указывать corelib нет необходимости. Инструменты - генерации кода Qt4 moc, uic и rcc, а также генератор Makefile - qmake нужны только для времени построения, поэтому они указаны - с суффиксом _build: + графического пользовательского интерфейса Qt 4, основную библиотеку + Qt 4, все инструменты генерации кода Qt 4 и генератор Makefile Qt 4. + Поскольку библиотека gui подразумевает + зависимость от основной библиотеки, указывать + corelib нет необходимости. Инструменты + генерации кода Qt 4 moc, uic + и rcc, а также генератор Makefile + qmake нужны только для времени построения, + поэтому они указаны с суффиксом _build:
USE_QT_VER= 4 QT_COMPONENTS= gui moc_build qmake_build rcc_build uic_build @@ -6132,7 +6351,7 @@ QT_COMPONENTS= gui moc_build qmake_build rcc_build uic_build do-configure: @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \ - ${QMAKE} -unix PREFIX=${PREFIX} texmaker.pro + ${QMAKE} PREFIX=${PREFIX} texmaker.pro Обратите внимание на сходство со строкой qmake из прилагаемого сценария BUILD.sh. Передача @@ -6158,7 +6377,7 @@ do-configure: добавила каталоги в пути поиска заголовочных файлов и библиотек через командную строку. К примеру: - ${QMAKE} -unix PREFIX=${PREFIX} INCLUDEPATH+=${LOCALBASE}/include \ + ${QMAKE} PREFIX=${PREFIX} INCLUDEPATH+=${LOCALBASE}/include \ LIBS+=-L${LOCALBASE}/lib sillyapp.pro @@ -6171,7 +6390,7 @@ do-configure: взгляните на patch-texmaker.pro из каталога files этого порта, который можно взять в качестве шаблона исправления этого непосредственно в файле - проекта Qmake.
+ проекта qmake.
@@ -6218,13 +6437,20 @@ do-configure: Задание переменных KDE 4 Если ваше приложение зависит от KDE 4.x, присвойте - USE_KDE4 список требуемых компонентов. Наиболее - используемые основные компоненты перечислены ниже (актуальные - компоненты перечислены в _USE_KDE4_ALL в + USE_KDE4 список требуемых компонентов. + Для переопределения типа зависимости компонента могут быть + использованы суффиксы _build и + _run (например, baseapps_run). + Если суффикс не задан, будет использован тип зависимости по + умолчанию. Если вы хотите использовать оба типа, добавьте + компонент дважды с обоими суффиксами (например, + automoc4_build automoc4_run). Основные + наиболее используемые компоненты перечислены ниже (актуальные + компоненты задокументированы в начале файла /usr/ports/Mk/bsd.kde4.mk): - Доступные компоненты KDE4 + Доступные компоненты KDE 4 @@ -6236,35 +6462,18 @@ do-configure: - akonadi - Служба хранения управления личной информацией (PIM) - - - - automoc4 - Задает использование портом инструмента построения - automoc4 - - - - kdebase - Основные приложения KDE (Konqueror, Dolphin, - Konsole) - - - - kdeexp - Экспериментальные библиотеки KDE (с нестабильным API) + baseapps + Основные приложения KDE Desktop kdehier - Обеспечивает общие каталоги KDE + Иерархия основных каталогов KDE kdelibs - Основной набор библиотек KDE + KDE Developer Platform @@ -6276,60 +6485,56 @@ do-configure: pimlibs - Библиотеки PIM + Библиотеки KDE-Pim workspace - Приложения и библиотеки, формирующие рабочий - стол (Plasma, KWin) + Пользовательские окружения KDE + + akonadi + Сервер хранения KDE-Pim + + + + automoc4 + automoc для пакетов Qt 4 +
Для избежания конфликтов с портами KDE 3.x, порты KDE 4.x - устанавливаются в ${KDE4_PREFIX}, что в + устанавливаются в KDE4_PREFIX, что в настоящее время соответствует /usr/local/kde4. Это достигается путем указания компонента kdeprefix, который определяет значение по умолчанию для PREFIX. Тем не менее, порты учитывают любые PREFIX, установленные через переменную окружения MAKEFLAGS - и/или параметр make. - - Порты KDE 4.x могут конфликтовать с портами KDE 3.x, поэтому, - когда включен компонент kdeprefix, они - устанавливаются в ${KDE4_PREFIX}. - В настоящее время значением по умолчанию для - KDE4_PREFIX является - /usr/local/kde4. Также возможна установка - портов KDE 4.x с собственным PREFIX. Если - PREFIX установлен через переменную окружения - MAKEFLAGS или через опцию - make, то это переопределяет значение, - сконфигурированное при помощи kdeprefix. + и/или параметры make.
Пример <makevar>USE_KDE4</makevar> Это простой пример для порта KDE 4. - USE_CMAKE указывает порту использовать - CMake — конфигурационный инструмент, - широко распространенный среди проектов KDE 4. - USE_KDE4 добавляет зависимость от библиотек KDE - и заставляет порты использовать automoc4 - во время сборки. Требуемые компоненты KDE и другие зависимости - можно определить в журнале configure. USE_KDE4 - не подразумевает USE_QT_VER. Если порт требует - какой-либо из компонентов Qt4, то следует установить - USE_QT_VER, а затем можно указать необходимые - компоненты. + USE_CMAKE указывает порту использовать + CMake — конфигурационный + инструмент, широко распространенный среди проектов KDE 4. + USE_KDE4 добавляет зависимость от библиотек KDE + и заставляет порты использовать automoc4 + во время сборки. Требуемые компоненты KDE и другие зависимости + можно определить в журнале configure. USE_KDE4 + не подразумевает USE_QT_VER. Если порт требует + какой-либо из компонентов Qt 4, то следует установить + USE_QT_VER, а затем можно указать необходимые + компоненты. USE_CMAKE= yes -USE_KDE4= automoc4 kdelibs kdeprefix +USE_KDE4= kdelibs kdeprefix automoc4 USE_QT_VER= 4 -QT_COMPONENTS= qmake_build moc_build rcc_build uic_build +QT_COMPONENTS= moc_build qmake_build rcc_build uic_build @@ -6440,7 +6645,7 @@ QT_COMPONENTS= qmake_build moc_build rcc_build uic_build JAVA_PORT Название порта JDK (к примеру, - 'java/diablo-jdk16'). + 'java/openjdk6'). @@ -6460,7 +6665,7 @@ QT_COMPONENTS= qmake_build moc_build rcc_build uic_build JAVA_PORT_VENDOR Разработчик порта JDK (к примеру, - 'freebsd'). + 'openjdk'). @@ -6472,26 +6677,26 @@ QT_COMPONENTS= qmake_build moc_build rcc_build uic_build JAVA_PORT_VENDOR_DESCRIPTION Описание разработчика порта JDK (к примеру, - 'FreeBSD Foundation'). + 'OpenJDK BSD Porting Team'). JAVA_HOME Маршрут к установочному каталогу JDK (к примеру, - '/usr/local/diablo-jdk1.6.0'). + '/usr/local/openjdk6'). JAVAC Маршрут к используемому компилятору Java (к примеру, - '/usr/local/diablo-jdk1.6.0/bin/javac'. + '/usr/local/openjdk6/bin/javac'. JAR Маршрут к используемой утилите jar (к - примеру, '/usr/local/diablo-jdk1.6.0/bin/jar' + примеру, '/usr/local/openjdk6/bin/jar' или '/usr/local/bin/fastjar'). @@ -6499,7 +6704,7 @@ QT_COMPONENTS= qmake_build moc_build rcc_build uic_build APPLETVIEWER Маршрут к утилите appletviewer (к примеру, - '/usr/local/diablo-jdk1.6.0/bin/appletviewer'). + '/usr/local/openjdk6/bin/appletviewer'). @@ -6507,7 +6712,7 @@ QT_COMPONENTS= qmake_build moc_build rcc_build uic_build JAVA Маршрут к выполняемому файлу java. Используйте его для запуска Java-программ (к примеру, - '/usr/local/diablo-jdk1.6.0/bin/java'). + '/usr/local/openjdk6/bin/java'). @@ -6704,8 +6909,8 @@ QT_COMPONENTS= qmake_build moc_build rcc_build uic_build в файле bsd.java.mk. Если вы предположите, что вашему порту требуется менее тривиальная поддержка Java, пожалуйста, взгляните сначала на - журнал изменений bsd.java.mk в CVS, так как для + url="http://svn.FreeBSD.org/ports/head/Mk/bsd.java.mk?view=markup">журнал + изменений bsd.java.mk в SVN, так как для документирования последних изменений требуется какое-то время. Затем, если вы думаете, что не хватающая вам поддержка окажется полезной для многих других портов Java, обсудите ваш вопрос в @@ -6742,17 +6947,20 @@ QT_COMPONENTS= qmake_build moc_build rcc_build uic_build Порт требует Apache. Возможные значения: yes (берёт любую версию), - 1.3, 2.0, - 2.2, 2.0+ - и так далее. По умолчанию зависимость от - 1.3. + 20, 22, + 20-22, 20+ + и так далее. Версия по умолчанию + 22. Более подробная информация + содержится в файле + ports/Mk/bsd.apache.mk и на + странице + wiki.freebsd.org/Apache/. WITH_APACHE2 - Порт требует Apache 2.0. Без этой переменной порт - будет зависеть от Apache 1.3. Эта переменная является + Эта переменная является устаревшей и не должна больше использоваться. @@ -6776,29 +6984,29 @@ QT_COMPONENTS= qmake_build moc_build rcc_build uic_build Версия установленного Apache (переменная только для чтения). Эта переменная доступна только после подключения bsd.port.pre.mk. Возможные значения: - 13, 20, - 22. + 20, 22. APACHEMODDIR Каталог для модулей Apache. Значение переменной - автоматически подставляется в pkg-plist. + автоматически подставляется в pkg-plist. APACHEINCLUDEDIR Каталог для заголовков Apache. Значение переменной - автоматически подставляется в pkg-plist. + автоматически подставляется в pkg-plist. APACHEETCDIR Каталог для конфигурационных файлов Apache. Значение - переменной автоматически подставляется в pkg-plist. + переменной автоматически подставляется в + pkg-plist. @@ -6917,7 +7125,7 @@ QT_COMPONENTS= qmake_build moc_build rcc_build uic_build Выбирает старший номер версии, с которым будет установлен PHP как зависимость в случае, когда PHP еще - не установлен. По умолчанию 4. + не установлен. По умолчанию 5. Возможные значения: 4, 5 @@ -7011,7 +7219,7 @@ MAINTAINER= example@domain.com COMMENT= PEAR Date and Time Zone Classes BUILD_DEPENDS= ${PEARDIR}/PEAR.php:${PORTSDIR}/devel/pear-PEAR -RUN_DEPENDS= ${BUILD_DEPENDS} +RUN_DEPENDS:= ${BUILD_DEPENDS} FILES= Date.php Date/Calc.php Date/Human.php Date/Span.php \ Date/TimeZone.php @@ -7062,9 +7270,9 @@ _DOCSDIR= . Для этого порта нужен Python. Минимальная требуемая версия может быть указана с таким значением как - 2.3+. Также можно указан диапазон + 2.6+. Также можно указан диапазон версий с разделением двух версий через ‐, например: - 2.1-2.3 + 2.6-2.7 @@ -7148,7 +7356,7 @@ _DOCSDIR= . USE_ZOPE Добавить зависимость от Zope, платформы веб приложений. - Изменяет зависимость от Python на Python 2.3. Переменная + Изменяет зависимость от Python на Python 2.7. Переменная ZOPEBASEDIR содержит директорию с установленным Zope. @@ -7966,7 +8174,7 @@ WX_COMPS= wx contrib .include <bsd.port.pre.mk> -.if defined(WITH_WX) || ${HAVE_WX:Mwx-2.4} != "" +.if defined(WITH_WX) || !empty(PORT_OPTIONS:MWX) || !empty(HAVE_WX:Mwx-2.4) USE_WX= 2.4 CONFIGURE_ARGS+=--enable-wx .endif @@ -7983,7 +8191,7 @@ WANT_WX= 2.6 .include <bsd.port.pre.mk> -.if defined(WITH_WXPYTHON) || ${HAVE_WX:Mpython} != "" +.if defined(WITH_WXPYTHON) || !empty(PORT_OPTIONS:MWXPYTHON) || !empty(HAVE_WX:Mpython) WX_COMPS+= python CONFIGURE_ARGS+=--enable-wxpython .endif @@ -8496,7 +8704,7 @@ LUA_COMPS= lua ruby .include <bsd.port.pre.mk> -.if defined(WITH_LUA5) || ${HAVE_LUA:Mlua-5.[01]} != "" +.if defined(WITH_LUA5) || !empty(PORT_OPTIONS:MLUA5) || !empty(HAVE_LUA:Mlua-5.[01]) USE_LUA= 5.0-5.1 CONFIGURE_ARGS+=--enable-lua5 .endif @@ -8513,7 +8721,7 @@ WANT_LUA= 4.0 .include <bsd.port.pre.mk> -.if defined(WITH_TOLUA) || ${HAVE_LUA:Mtolua} != "" +.if defined(WITH_TOLUA) || !empty(PORT_OPTIONS:MTOLUA) || !empty(HAVE_LUA:Mtolua) LUA_COMPS+= tolua CONFIGURE_ARGS+=--enable-tolua .endif @@ -8891,7 +9099,7 @@ CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}" Если переменная установлена в yes, добавляет зависимость от порта - databases/mysql55-server. + databases/mysql55-client. Как связанная переменная, WANT_MYSQL_VER может быть установлена в значение 323, 40, 41, 50, 51, 52, 55 или 60. @@ -8901,21 +9109,31 @@ CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}" USE_PGSQL Если установлена в yes, добавляет - зависимость от порта - databases/postgresql84. + зависимость от порта databases/postgresql90-client. Как связанная переменная, WANT_PGSQL_VER может быть установлена - в значение 73, 74, 80, 81, 82, 83 или 90. + в значение 83, 84, 90, 91 или 92. Вы можете указать + максимальное и минимальное значения; + WANT_PGSQL_VER= + 90+ сделает порт зависимым от + минимальной версии 9.0. + + USE_SQLITE + + Если переменная имеет значение yes, + добавляет зависимость от порта databases/sqlite3. + Переменная может принимать значения: 3, 2. + - Подробнее смотрите в - - bsd.database.mk. - + Подробнее смотрите в bsd.database.mk. @@ -9419,17 +9637,41 @@ lib/X11/oneko/sounds/cat.au ${CP} -p ${PREFIX}/etc/orbit.conf.sample ${PREFIX}/etc/orbit.conf ; \ fi - Пример части pkg-plist: + Добавьте по три строки в pkg-plist для + каждого конфигурационного файла, как показано ниже: @unexec if cmp -s %D/etc/orbit.conf.sample %D/etc/orbit.conf; then rm -f %D/etc/orbit.conf; fi etc/orbit.conf.sample @exec if [ ! -f %D/etc/orbit.conf ] ; then cp -p %D/%F %B/orbit.conf; fi + Данные строки являются упорядоченными. На этапе удаления + файл с примером сравнивается с рабочим конфигурационным файлом. + Полное совпадение означает отсутствие каких-либо изменений в + рабочем файле со стороны пользователя, и следовательно этот файл + может быть безопасно удалён. Так как файл с примером всё ещё + должен существовать для сравнения, строка @unexec + следует перед именем файла с примером конфигурации. На этапе + установки, если рабочий файл конфигурации отсутствует, он + копируется из файла с примером. Файл с примером обязательно + должен быть установлен до операции копирования, поэтому строка + @exec следует после имени файла с примером + конфигурации. + + Для получения дополнительного отладочного вывода на экран + можно временно удалить параметр -s из команды + &man.cmp.1;. + + Для получения дополнительной инфорации по использованию + %D и прочих маркеров подстановки обратитесь + к странице Справочника &man.pkg.create.1;. + Если существует действительно стоящая причина не устанавливать - рабочий файл конфигурации по умолчанию, то выведите сообщение, указывающее на то, чтобы - пользователь скопировал и отредактировал файл перед тем, как работать - с программным обеспечением. + рабочий файл конфигурации по умолчанию, уберите строку + @exec из pkg-plist и + добавьте сообщение, + указывающее на то, что пользователь обязан скопировать и + отредактировать этот файл перед тем, как программное обеспечение + начнёт работать. @@ -9576,10 +9818,7 @@ etc/orbit.conf.sample pkg-message только для послеустановочных шагов. Также следует иметь в виду различие между ECHO_MSG и ECHO_CMD. Первое предназначено для вывода на - экран информационного текста, а второе для конвейера команд. - - Хороший пример для обоих можно найти в - shells/bash2/Makefile: + экран информационного текста, а второе для конвейера команд: update-etc-shells: @${ECHO_MSG} "updating /etc/shells" @@ -10009,8 +10248,8 @@ as .putsy.conf and edit it. В противном случае, вам следует воспользоваться методом - cvs diff (), либо - скопировать содержимое порта в другой + svn diff (), либо + скопировать содержимое порта в отдельный каталог и применить результат рекурсивной команды &man.diff.1; между новым и старым каталогами порта (например, если каталог с модифицированным портом называется superedit, @@ -10049,7 +10288,7 @@ as .putsy.conf and edit it. В противном случае в поле Class вашего PR должно быть указано change-request. Будьте добры, в сообщении отметьте все добавленные или удалённые файлы, так как они будут - непосредственно указаны &man.cvs.1; при выполнении операции коммита. + непосредственно указаны &man.svn.1; при выполнении операции коммита. Если diff-файл имеет размер, превышающий 20КБ, сожмите его и обработайте утилитой uuencode; в противном случае просто включите его как есть в PR. @@ -10080,10 +10319,10 @@ as .putsy.conf and edit it. прочесть о том, как поддерживать актуальное состояние, в . - - Использование <literal>CVS</literal> для создания патчей + + Использование <literal>SVN</literal> для создания патчей - По возможности присылайте исправления в формате &man.cvs.1; diff; + По возможности присылайте исправления в формате &man.svn.1; diff; в таком виде их проще использовать по сравнению с разницей между старым и новым каталогами. К тому же, вам проще увидеть ваши изменения и обновить их в случае, если что-нибудь @@ -10092,7 +10331,7 @@ as .putsy.conf and edit it. исправить что-то еще. &prompt.user; cd ~/my_wrkdir -&prompt.user; cvs -d R_CVSROOT co pdnsd +&prompt.user; svn co svn://svn.FreeBSD.org/ports/head/dns/pdnsd &prompt.user; cd ~/my_wrkdir/pdnsd @@ -10102,52 +10341,39 @@ as .putsy.conf and edit it. /usr/ports/. - - R_CVSROOT - это общедоступный cvs сервер, выберите нужный из - списка согласно Руководству &os;. - - - - - pdnsd - это название модуля для данного порта; как правило, - это соответствует названию порта, хотя есть и некоторые исключения, - в частности для языковых категорий (для german/selfhtml это модуль с названием - de-selfhtml); вы можете узнать название модуля через интерфейс cvsweb, - либо используя путь целиком, в данном случае это - ports/dns/pdnsd. + + svn.FreeBSD.org + — это общедоступный SVN сервер. Находясь в рабочем каталоге, вносите любые изменения, которые обычно делают для порта. При добавлении или удалении файла - используйте cvs, для того чтобы отслеживать эти - изменения: + используйте svn для отслеживания этих + изменений: - &prompt.user; cvs add new_file -&prompt.user; cvs remove deleted_file + &prompt.user; svn add new_file +&prompt.user; svn remove deleted_file Убедитесь, что вы проверяете порт в соответствии с рекомендуемым порядком проверки, описанным в и . - &prompt.user; cvs status -&prompt.user; cvs update + &prompt.user; svn status +&prompt.user; svn update - + Эта команда попытается выполнить слияние различий между - вашим патчем и текущим содержимым в CVS; внимательно проверьте + вашим патчем и текущим содержимым в SVN; внимательно проверьте полученный вывод. Буква перед названием каждого файла означает тип изменения, сделанного с этим файлом. Для получения полного - списка смотрите . + списка смотрите . - - Префиксы файлов для <literal>CVS</literal> update +
+ Префиксы файлов для <literal>SVN</literal> update @@ -10158,7 +10384,7 @@ as .putsy.conf and edit it. - P + G Файл обновлен без проблем (вы увидите это только при работе с удаленным репозиторием). @@ -10181,26 +10407,24 @@ as .putsy.conf and edit it.
- Если в результате выполнения cvs update вы - получили C, то это означает, что что-то изменилось - в CVS и &man.cvs.1; не смогла выполнить слияние ваших локальных - изменений с полученными из CVS. Это всегда хорошая идея - в любом - случае просматривать изменения, поскольку команда cvs - ничего не знает о том, каким должен быть порт, поэтому она может - (и, вероятно, будет) делать слияние тех изменений, которые не имеют - смысла. + Если в результате выполнения svn update + вы получили C, то это означает, что что-то + изменилось в репозитории SVN и &man.svn.1; не смогла выполнить + слияние ваших локальных изменений с полученными из репозитория. + В любом случае никогда не помешает просмотреть изменения, + поскольку &man.svn.1; ничего не знает о том, каким должен быть + порт, поэтому эта команда может (и, вероятно, будет) делать + слияние тех изменений, которые не имеют смысла. Последним шагом является создание унифицированного &man.diff.1; - для файлов относительно CVS: + для файлов относительно SVN: - &prompt.user; cvs diff -uN > ../`basename ${PWD}`.diff + &prompt.user; svn diff > ../`basename ${PWD}`.diff - Важно использовать , чтобы убедиться, что - добавленные или удаленные вами файлы включены в патч. Патч будет - включать в себя любые удаленные файлы, но после наложения патча их - содержимое будет пустым, поэтому не забывайте добавить это в PR, - так чтобы коммиттер знал о том, что их надо удалить. + Информация о любых удаляемых файлов должна быть явным + образом указана в PR, поскольку необходимость в удалении + файла для коммиттера может быть неочевидна. Присылайте свои патчи в соответствии с руководством, описанном в @@ -10214,8 +10438,8 @@ as .putsy.conf and edit it. Если при обновлении порта требуются специальные шаги, такие как изменение файлов конфигурации или запуск специальной программы, то вам следует это задокументировать в файле - /usr/ports/UPDATING. Формат записи в этом файле - как показано ниже: + /usr/ports/UPDATING. Формат записи в этом + файле приводится ниже: YYYYMMDD: AFFECTS: users of portcategory/portname @@ -10227,11 +10451,26 @@ as .putsy.conf and edit it. пожалуйста, убедитесь в правильном экранировании символов внутри командной оболочки. - Если ваш порт удален или переименован, то вам следует добавить - запись в /usr/ports/MOVED. Записи в этом файле - используют следующий формат: + Файл /usr/ports/MOVED содержит записи + об удалённых или перемещённых портах. Каждая строка в этом + файле состоит из полей: название порта, место, куда он был + перемещён, дата и причина перемещения. Если порт был удалён, + то поле, указывающее новое место, может оставаться незаполненным. + Поля должны разделяться символом | (pipe), + как это показано ниже: old name|new name (blank for deleted)|date of move|reason + + Дату следует вводить в формате YYYY-MM-DD. + Новые записи следует добавлять в конец файла в хронологическом + порядке. + + Если порт был перемещён, но в дальнейшем восстановлен на + прежнем месте, удалите в этом файле строку, содержащую + информацию о перемещении. + + Полученные изменения можно проверить командой + Tools/scripts/MOVEDlint.awk.
@@ -10352,8 +10591,7 @@ as .putsy.conf and edit it. url="http://www.freebsd.org/security/#how">информационной безопасности FreeBSD. - Как это может быть очевидно - из самого названия, база данных VuXML является + База данных VuXML является документом XML. Его исходный файл vuln.xml содержится прямо внутри порта security/vuxml. Поэтому полное имя @@ -10508,7 +10746,7 @@ as .putsy.conf and edit it. <ge>2.*</ge><lt>3.*</lt> выборочно совпадет с версией 2.x, а <ge>2.0</ge><lt>3.0</lt> - - очевидно нет, поскольку последнее не включает + - нет, поскольку последнее не включает 2.r3 и совпадает с 3.b. @@ -10654,13 +10892,14 @@ as .putsy.conf and edit it. &prompt.user; portaudit clamav-0.65_6 Если ничего не найдено, значит вы получили зеленый свет для - добавления новой записи для этой уязвимости. Теперь вы можете - сгенерировать новенький UUID (предположим, что это будет - 74a9541d-5d6c-11d8-80e3-0020ed76ef5a) и - добавить вашу новую запись в базу данных VuXML. Пожалуйста, - проверьте после этого синтаксис записи следующим образом: + добавления новой записи для этой уязвимости. - &prompt.user; cd ${PORTSDIR}/security/vuxml && make validate + &prompt.user; cd ${PORTSDIR}/security/vuxml +&prompt.user; make newentry + + Когда вы закончите, проверьте синтаксис и форматирование. + + &prompt.user; make validate Вам понадобится установить по крайней мере один из следующих @@ -10677,7 +10916,7 @@ as .putsy.conf and edit it. в вашей записи совпадает с правильными пакетами, выполните следующую команду: - &prompt.user; portaudit -f /usr/ports/INDEX -r 74a9541d-5d6c-11d8-80e3-0020ed76ef5a + &prompt.user; portaudit -f /usr/ports/INDEX -r uuid Для лучшего понимания синтаксиса этой команды обращайтесь @@ -10697,7 +10936,7 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 1 problem(s) found. - Очевидно, что первая версия должна совпасть, а последняя + Первая версия должна совпасть, а последняя нет. В заключение проверьте, что веб-страница, сформированная из @@ -10776,7 +11015,7 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 Предпочтительным способом отделения кода для 4.3BSD/Reno (1990) и и более новых версий BSD является использование макроса BSD, определенного в файле sys/param.h. + url="http://svnweb.freebsd.org/base/head/sys/sys/param.h?view=markup">sys/param.h. Хорошо, если этот файл уже включен; если это не так, то добавьте такой код: @@ -10889,7 +11128,8 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 Ниже для справки приводится перечень значений __FreeBSD_version в виде, который определён в - sys/param.h: + sys/param.h: Значения <literal>__FreeBSD_version</literal> @@ -14520,6 +14760,24 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 8.2-STABLE после обратного портирования gperf 3.0.3. + + 802517 + 15 февраля 2012 + 8.2-STABLE после появления нового расширяемого + интерфейса sysctl(3) NET_RT_IFLISTL для получения списка + адресов (рев. 231769). + + + 803000 + 3 марта 2012 + 8.3-RELEASE. + + + 803500 + 3 марта 2012 + 8.3-STABLE после отделения ветки releng/8.3 + (RELENG_8_3). + 900000 22 августа 2009 @@ -14829,6 +15087,26 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 9.0-STABLE после обратного портирования gperf 3.0.3. + + 900503 + 15 февраля 2012 + 9.0-STABLE после появления нового расширяемого + интерфейса sysctl(3) NET_RT_IFLISTL для получения списка + адресов (рев. 231768). + + + 900504 + 3 марта 2012 + 9.0-STABLE после изменения механизма монтирования + файловых систем в jail (рев. 232728). + + + 900503 + 13 марта 2012 + 9.0-STABLE после появления новых параметров сокета + tcp(4): TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL и + TCP_KEEPCNT (рев. 232945). + 1000000 26 сентября 2011 @@ -14869,6 +15147,69 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 SIOCSIFADDR, SIOCSIFNETMASK, SIOCSIFBRDADDR, SIOCSIFDSTADDR (рев. 230207). + + 1000006 + 26 января 2012 + 10.0-CURRENT после появления асинхронных уведомлений + о наличии входных данных в уровне cam(4) + (рев. 230590). + + + 1000007 + 5 февраля 2012 + 10.0-CURRENT после появления новых параметров сокета + tcp(4): TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL и + TCP_KEEPCNT (рев. 231025). + + + 1000008 + 11 февраля 2012 + 10.0-CURRENT после появления нового расширяемого + интерфейса sysctl(3) NET_RT_IFLISTL для получения списка + адресов (рев. 231505). + + + 1000010 + 31 марта 2012 + 10.0-CURRENT после исправлений в xlocale + (рев. 233757). + + + 1000011 + 16 апреля 2012 + 10.0-CURRENT после импорта LLVM/Clang 3.1 trunk + r154661 (рев. 234353). + + + 1000012 + 2 мая 2012 + 10.0-CURRENT после импорта jemalloc + (рев. 234924). + + + 1000013 + 22 мая 2012 + 10.0-CURRENT после импорта byacc + (рев. 235788). + + + 1000014 + 27 июня 2012 + 10.0-CURRENT после изменения sort по умолчанию + на BSD sort (рев. 237629). + + + 1000015 + 12 июля 2012 + 10.0-CURRENT после импорта OpenSSL 1.0.1c + (рев. 238405). + + + (не изменено) + 13 июля 2012 + 10-CURRENT после исправления регрессии в + LLVM/Clang 3.1 (рев. 238429). +
@@ -14952,15 +15293,6 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 __FreeBSD_version. - - PORTOBJFORMAT - - Формат объектных файлов, используемых в системе - (elf или aout); - заметьте, что для современных версий FreeBSD - aout не используется.) - - LOCALBASE Корень дерева local (например, @@ -14978,10 +15310,9 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 - Если вы задаете переменные USE_IMAKE, - USE_X_PREFIX, или MASTERDIR, - то делайте это перед тем, как включать - bsd.port.pre.mk. + Если вы задаете переменные USE_IMAKE + или MASTERDIR, то делайте это до + подключения bsd.port.pre.mk. Вот несколько примеров того, что вы можете написать после @@ -15060,14 +15391,13 @@ exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar "$@" CC, так и CXX. Под этим мы подразумеваем, что порт ни в коем случае не должен устанавливать значения этих переменных, переопределяя имеющиеся - значения; вместо этого от должен добавлять те значения, которые - нужны, к имеющимся. Это нужно для того, чтобы параметры построения, + значения; вместо этого можно добавлять нужные значения к уже + имеющимся. Это связано с тем, что параметры построения, относящиеся ко всем портам, могут быть заданы глобально. - Если порты не принимают во внимание значения этих переменных, - пожалуйста, добавьте строку NO_PACKAGE=ignores - either cc or cxx в файл - Makefile. + Если порты не учитывают значения этих переменных, добавьте + строку NO_PACKAGE=ignores either cc or cxx + в файл Makefile. Далее следует пример файла Makefile, использующего как переменную CC, так и @@ -15101,17 +15431,17 @@ exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar "$@" CFLAGS. Под этим мы подразумеваем, что порт ни в коем случае не должен устанавливать значения этих переменных, переопределяя имеющиеся - значения; вместо этого от должен добавлять те значения, которые - нужны, к имеющимся. Это нужно для того, чтобы параметры построения, + значения; вместо этого можно добавлять нужные значения к уже + имеющимся. Это связано с тем, что параметры построения, относящиеся ко всем портам, могут быть заданы глобально. - Если он этого не делает, то, пожалуйста, - добавьте в файл Makefile строчку - NO_PACKAGE=ignores cflags. + Если порты не учитывают значения этой переменной, добавьте + строку NO_PACKAGE=ignores cflags в файл + Makefile. - Пример файла Makefile, в котором принимается - во внимание переменная CFLAGS, приводится далее. - Отметьте употребление символов +=: + Далее следует пример файла Makefile, + использующего переменную CFLAGS. Обратите + внимание на использование символов +=: CFLAGS+= -Wall -Werror @@ -15185,7 +15515,7 @@ CFLAGS= -Wall -Werror <filename>README.html</filename> Не включайте сюда файл README.html. Этот файл - не является частью дерева cvs, и он генерируется при помощи команды + не является частью дерева SVN, и он генерируется при помощи команды make readme. @@ -15307,8 +15637,8 @@ CFLAGS= -Wall -Werror не работает с каким-либо другим портом, установленным в настоящее время (например, порт зависит от www/apache21, но установлен - www/apache13) + role="package">www/apache20, но установлен + www/apache22) @@ -15333,7 +15663,7 @@ CFLAGS= -Wall -Werror ONLY_FOR_ARCHS= i386 amd64 - NOT_FOR_ARCHS= alpha ia64 sparc64 + NOT_FOR_ARCHS= ia64 sparc64 Собственное сообщение IGNORE можно задать с использованием ONLY_FOR_ARCHS_REASON и @@ -15481,6 +15811,81 @@ IGNORE=POINTYHAT is not supported обеспечения для подтверждения изменений.
+ + Избегание линуксизмов + + Не используйте /proc, если доступны + любые другие источники получения информации, например, + setprogname(argv[0]) в + main() и &man.getprogname.3;, в случае + если вы хотите знать своё имя. + + Не полагайтесь на поведение, не регламентированное + POSIX. + + Не выполняйте запись временных меток в критических путях + выполнения приложения, если можно обойтись без этого. Получение + временных меток может быть медленным, в зависимости от степени + точности используемых часов в операционной системе. Если + временные метки действительно нужны, определите степень + требуемой точности и используйте тот API, + в котором документируется получение достаточной точности. + + Ряд простых системных вызовов (например, &man.gettimeofday.2;, + &man.getpid.2;) работают намного быстрее в &linux; по сравнению + с любой другой операционной системой из-за кеширования и + используемой оптимизации vsyscall. Не полагайтесь на их + дешевизну в критичных к производительности приложениях. В + целом, старайтесь избегать системных вызовов там, где это + возможно. + + Не полагайтесь на специфичное для &linux; поведение сокета. + В частности, отличаются размеры буфера сокета по умолчанию + (выполните вызов &man.setsockopt.2; с SO_SNDBUF + и SO_RCVBUF, и в то время как в &linux; + при заполнении буфера сокета &man.send.2; блокируется, &os; + возвращает ошибку и устанавливает ENOBUFS + в качестве значения errno. + + Если требуется рассчитывать на нестандартное поведение, + инкапсулируйте это должным образом в общий для всех + API с проверкой поведения на этапе + конфигурации, и если требуемое поведение не найдено, + прекращайте выполнение. + + Используйте страницы + справочника для проверки, относится ли функция к + интерфейсу POSIX (ищите раздел + STANDARDS на странице справочника). + + Не рассчитывайте на то, что в качестве + /bin/sh используется + bash. Убедитесь, что командная + строка, переданная в &man.system.3;, будет работать в + POSIX-совместимой оболочке. + + Список основных bash-измов + расположен здесь. + + Не используйте #include + <stdint.h>, если + достаточно подключить inttypes.h. Это + позволит убедиться, что программное обеспечение собирается на + более старых версиях &os;. + + Проверьте, что используемые заголовочные файлы включены в + POSIX или список, рекомендуемый страницей + справочника, т.к. например, забыть подключить + sys/types.h — не такая уж проблема + в &linux;, однако это не так во &os;. + + Компилируйте многопоточные приложения с ключом + -pthread, а не -lpthread или + как-либо ещё. + + Разное @@ -15525,9 +15930,9 @@ PORTVERSION # # $FreeBSD$ [ ^^^^^^^^^ Эта строка будет автоматически заменена со строчкой RCS ID -системой CVS при выполнении операции коммита в наше хранилище. При +системой SVN при выполнении операции коммита в наше хранилище. При обновлении порта не приводите эту строку обратно к виду -"$FreeBSD$". CVS сделает все автоматически.] +"$FreeBSD$". SVN сделает это автоматически.] # [секция описания собственно порта и основного сервера - сначала всегда @@ -15563,7 +15968,7 @@ COMMENT= A DVI Previewer for the X Window System [зависимости -- могут быть пустыми] RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript -LIB_DEPENDS= Xpm.5:${PORTSDIR}/graphics/xpm +LIB_DEPENDS= Xpm:${PORTSDIR}/graphics/xpm [этот раздел для остальных стандартных переменных из bsd.port.mk, кроме тех, что перечислены выше] @@ -15644,20 +16049,20 @@ pre-install: внесённых вами изменений. - + Web-интерфейс к хранилищу исходных текстов Файлы в хранилище исходных текстов можно просматривать при помощи Web-интерфейса. Изменения, которые касаются в целом всей системы - портов, теперь документируются в файле - - CHANGES. Изменения, касающиеся отдельных портов, отражаются - теперь в файле - UPDATING. Однако однозначный ответ на любой вопрос можно - найти, только прочитав исходных код - bsd.port.mk и связанных с ним файлов. + портов, теперь документируются в файле CHANGES. + Изменения, касающиеся отдельных портов, отражаются теперь в + файле UPDATING. + Однако однозначный ответ на любой вопрос можно найти, только + прочитав исходных код bsd.port.mk + и связанных с ним файлов. @@ -15689,20 +16094,39 @@ pre-install: - Сканер дистрибутивных файлов портов &os; + Portscout: сканер дистрибутивных файлов портов &os; Кластер построения выделен для выполнения самого последнего - релиза каждого из портов, дистрибутивный файл которых уже был - сгружен. Однако из-за постоянных изменений в Internet, - дистрибутивные файлы быстро исчезают. Средство сканирования дистрибутивных файлов - FreeBSD пытается - опросить каждый из сайтов, доступный для сгрузки каждого из портов + релиза каждого из портов, дистрибутивные файлы которых уже были + сгружены. Однако из-за постоянных изменений в Internet + дистрибутивные файлы могут быстро исчезать. Portscout, средство + сканирования дистрибутивных файлов &os; пытается опросить + каждый из сайтов, доступных для сгрузки каждого из портов, для определения того, доступны ли ещё дистрибутивные файлы. - Мейнтейнеры должны периодически просматривать этот протокол, и не - только для ускорения процесса построения пользователем, но и для - избежания траты пропускной способности сайтов, на которых все эти - дистрибутивные файлы размещаются на добровольной основе. + Portscout может готовить отчёты + в HTML и рассылать электронные письма об + имеющихся обновлениях для портов тем, кто это запрашивает. + Мейнтейнеры периодически запрашивают наличие изменений, либо + вручную, либо используя ленту RSS. + + Главная страница Portscout + отображает email мейнтейнера порта, количество портов, за + которые ответственен мейнтейнер, количество портов с новыми + дистрибутивными файлами и процент устаревших портов. Функция + поиска выполняет поиск мейнтейнера по адресу электронной почты + и позволяет выбирать между всеми портами или только + устаревшими. + + При щелчке по адресу электронной почты мейнтейнера + отображается список всех его портов, разделённых по категориям, + вместе с текущим номером версии, информацией о наличии новой + версии, временем последнего обновления порта и временем его + последней проверки. Функция поиска на этой странице позволяет + пользователю выполнять поиск конкретного порта. + + По щелчку на название порта в списке отображается информация + о порте FreshPorts.