diff options
Diffstat (limited to 'ru_RU.KOI8-R/books/porters-handbook/testing/chapter.xml')
-rw-r--r-- | ru_RU.KOI8-R/books/porters-handbook/testing/chapter.xml | 393 |
1 files changed, 205 insertions, 188 deletions
diff --git a/ru_RU.KOI8-R/books/porters-handbook/testing/chapter.xml b/ru_RU.KOI8-R/books/porters-handbook/testing/chapter.xml index 9dd6dd5b88..8ee56732a5 100644 --- a/ru_RU.KOI8-R/books/porters-handbook/testing/chapter.xml +++ b/ru_RU.KOI8-R/books/porters-handbook/testing/chapter.xml @@ -7,191 +7,208 @@ Original revision: r43840 --> -<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="testing"> - - <title>Тестирование вашего порта</title> - - <sect1 xml:id="make-describe"> - <title>Запуск <command>make describe</command></title> - - <para>Некоторые утилиты &os; для сопровождения портов, например, - &man.portupgrade.1;, опираются на базу данных с именем - <filename>/usr/ports/INDEX</filename>, в которой отслеживаются такие - характеристики портов, как их зависимости. Файл - <filename>INDEX</filename> создаётся при помощи - <filename>ports/Makefile</filename> верхнего уровня по команде - <command>make index</command>, спускающейся в подкаталог каждого - порта и выполняющей в нём <command>make describe</command>. Таким - образом, если выполнение <command>make describe</command> с - каким-либо портом завершится неудачно, то никому не удастся создать - <filename>INDEX</filename>, при этом много людей вскоре станут - несчастны.</para> - - <note> - <para>Возможность генерировать этот файл очень важна вне зависимости - от того, какие параметры присутствуют в - <filename>make.conf</filename>, поэтому, пожалуйста, избегайте, - таких вещей, как использование декларации - <literal>.error</literal>, когда (к примеру) требования к - зависимости не было удовлетворено. (Смотрите - <xref linkend="dads-dot-error"/>.)</para> - </note> - - <para>Если команда <command>make describe</command> выдаёт строчку, а - не ошибку, то для вас это пройдёт безболезненно. Обратитесь к файлу - <filename>bsd.port.mk</filename>, чтобы выяснить значение выдаваемых - строк.</para> - - <para>Заметьте также, что запуск последней версии - <command>portlint</command> (как указано в следующем разделе) - приведёт к автоматическому запуску команды - <command>make describe</command>.</para> - </sect1> - - <sect1 xml:id="testing-portlint"> - <title>Portlint</title> - - <para>Проверьте свою работу командой <link linkend="porting-portlint"><command>portlint</command></link> - перед тем, как её отослать или перенести в дерево портов. - <command>portlint</command> предупреждает вас о многих - распространённых ошибках, как функциональных, так и стилистических. - Для нового (или скопированного внутри хранилища) порта самым - подходящим является запуск <command>portlint -A</command>; для - уже существующего порта достаточно будет запустить - <command>portlint -C</command>.</para> - - <para>Так как для обнаружения ошибок <command>portlint</command> - использует эвристические методы, то им могут выдаваться и ошибочные - предупреждения. Кроме того, время от времени нечто, отмечаемое как - некорректность, из-за ограничений механизма создания портов не может - быть сделано никак иначе. Если вы сомневаетесь, то лучше всего - спросить в &a.ports;.</para> - </sect1> - - <sect1 xml:id="testing-porttools"> - <title>Port Tools</title> - - <para>Программа <package role="port">ports-mgmt/porttools</package> - входит в состав Коллекции Портов.</para> - - <para><command>port</command> является сценарием переднего плана, - который может упростить вам задачу тестирования. Если вы хотите - проверить новый порт или обновить существующий, то вы можете - использовать <command>port test</command> для проверки вашего порта, - включая проверку <link linkend="testing-portlint"><command>portlint</command></link>. Эта - команда также находит и отображает любые файлы, которые невключенные - в <filename>pkg-plist</filename>. Смотрите следующий пример:</para> - - <screen>&prompt.root; <userinput>port test /usr/ports/net/csup</userinput></screen> - </sect1> - - <sect1 xml:id="porting-prefix"> - <title><varname>PREFIX</varname> и <varname>DESTDIR</varname></title> - - <para>Переменная <varname>PREFIX</varname> определяет, куда будет - установлен порт. По умолчанию это <filename>/usr/local</filename>, - но может меняться пользователем на собственный путь, такой как - <filename>/opt</filename>. В вашем порту значение этой переменной - должно учитываться.</para> - - <para>Если пользователь установил переменную <varname>DESTDIR</varname>, - то она определяет полное альтернативное окружение, обычно, это jail - или установленная система, смонтированная в месте, отличном от - <filename>/</filename>. На самом деле порт устанавливается в - <filename>DESTDIR/PREFIX</filename> - и регистрируется в базе данных пакетов в - <filename>DESTDIR/var/db/pkg</filename>. - Поскольку управление <varname>DESTDIR</varname> производится - автоматически инфраструктурой портов с помощью &man.chroot.8;, вам - не нужны никакие изменения или проявление особой осторожности - при написании <varname>DESTDIR</varname>-совместимых портов.</para> - - <para>Значение переменной <varname>PREFIX</varname> будет установлено - в <varname>LOCALBASE</varname> (по умолчанию - <filename>/usr/local</filename>). Если - задана переменная <varname>USE_LINUX_PREFIX</varname>, то - <varname>PREFIX</varname> примет значение <varname>LINUXBASE</varname> - (по умолчанию <filename>/compat/linux</filename>).</para> - - <para>Избегание явно прописываемых путей <filename>/usr/local</filename> - в исходном коде сделает порт гораздо более гибким и способным - удовлетворить потребности других серверов. Часто этого можно - добиться простой заменой строк <filename>/usr/local</filename> - в различных файлах <filename>Makefile</filename> внутри порта на - <literal>${PREFIX}</literal>. Эта переменная - автоматически передаётся далее на каждом этапе построения и - установки.</para> - - <para>Проверьте, что ваше приложение не устанавливает чего-либо в - каталог <filename>/usr/local</filename> вместо - <varname>PREFIX</varname>. Наличие явно указанных путей можно быстро - проверить следующим образом:</para> - - <screen>&prompt.root; <userinput>make clean; make package PREFIX=/var/tmp/`make -V PORTNAME`</userinput></screen> - - <para>Если что-то было установлено за пределами - <varname>PREFIX</varname>, то процесс создания пакета сообщит об - отсутствии файлов.</para> - - <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>, - следует проверять на работоспособность, чтобы убедиться в отсутствии - проблем с путями.</para> - - <para>Переменная <varname>PREFIX</varname> не должна задаваться явно в - файле <filename>Makefile</filename> порта. Пользователи при установке - порта могут задать в <varname>PREFIX</varname> свое собственное - место, и порт должен учитывать это значение.</para> - - <para>Обратитесь к программам/файлам из других портов с - переменными, перечисленными выше, без указания явных маршрутов. - Например, если ваш порт требует, чтобы макрос <literal>PAGER</literal> - являлся полным путем утилиты <command>less</command>, не используйте - строковый путь <filename>/usr/local/bin/less</filename>. Вместо - этого используйте <literal>${LOCALBASE}</literal>:</para> - - <programlisting>-DPAGER=\"${LOCALBASE}/bin/less\"</programlisting> - - <para>Путь с использованием <varname>LOCALBASE</varname> имеет больше - шансов оставаться работоспособным, если системный администратор - переместил всё дерево <filename>/usr/local</filename> куда-то в другое - место.</para> - </sect1> - - <sect1 xml:id="testing-tinderbox"> - <title>Tinderbox</title> - - <para>Если вы алчный контрибутор портов, то вы можете захотеть - взглянуть на <application>Tinderbox</application>. Это мощная - система построения и тестирования портов. - <application>Tinderbox</application> можно установить, используя - порт <package role="port">ports-mgmt/tinderbox</package>. - Обязательно прочитайте поставляемую документацию, поскольку - конфигурация не является тривиальной.</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> - +<chapter xmlns="http://docbook.org/ns/docbook" + xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" + xml:id="testing"> + + <title>Тестирование вашего порта</title> + + <sect1 xml:id="make-describe"> + <title>Запуск <command>make describe</command></title> + + <para>Некоторые утилиты &os; для сопровождения портов, например, + &man.portupgrade.1;, опираются на базу данных с именем + <filename>/usr/ports/INDEX</filename>, в которой отслеживаются + такие характеристики портов, как их зависимости. Файл + <filename>INDEX</filename> создаётся при помощи + <filename>ports/Makefile</filename> верхнего уровня по команде + <command>make index</command>, спускающейся в подкаталог + каждого порта и выполняющей в нём <command>make + describe</command>. Таким образом, если выполнение + <command>make describe</command> с каким-либо портом завершится + неудачно, то никому не удастся создать + <filename>INDEX</filename>, при этом много людей вскоре станут + несчастны.</para> + + <note> + <para>Возможность генерировать этот файл очень важна вне + зависимости от того, какие параметры присутствуют в + <filename>make.conf</filename>, поэтому, пожалуйста, + избегайте, таких вещей, как использование декларации + <literal>.error</literal>, когда (к примеру) требования к + зависимости не было удовлетворено. (Смотрите + <xref linkend="dads-dot-error"/>.)</para> + </note> + + <para>Если <command>make describe</command> выдаёт строчку, а не + ошибку, то для вас это пройдёт безболезненно. Обратитесь к + файлу <filename>bsd.port.mk</filename>, чтобы выяснить значение + выдаваемых строк.</para> + + <para>Заметьте также, что запуск последней версии + <command>portlint</command> (как указано в следующем разделе) + приведёт к автоматическому запуску команды + <command>make describe</command>.</para> + </sect1> + + <sect1 xml:id="testing-portlint"> + <title>Portlint</title> + + <para>Проверьте свою работу командой <link + linkend="porting-portlint"><command>portlint</command></link> + перед тем, как её отослать или перенести в дерево портов. + <command>portlint</command> предупреждает вас о многих + распространённых ошибках, как функциональных, так и + стилистических. Для нового (или скопированного внутри + хранилища) порта самым подходящим является запуск + <command>portlint -A</command>; для уже существующего порта + достаточно будет запустить + <command>portlint -C</command>.</para> + + <para>Так как для обнаружения ошибок <command>portlint</command> + использует эвристические методы, то им могут выдаваться и + ошибочные предупреждения. Кроме того, время от времени нечто, + отмечаемое как некорректность, из-за ограничений механизма + создания портов не может быть сделано никак иначе. Если вы + сомневаетесь, то лучше всего спросить в &a.ports;.</para> + </sect1> + + <sect1 xml:id="testing-porttools"> + <title>Port Tools</title> + + <para>Программа <package + role="port">ports-mgmt/porttools</package> входит в состав + Коллекции Портов.</para> + + <para><command>port</command> является сценарием переднего плана, + который может упростить вам задачу тестирования. Если вы + хотите проверить новый порт или обновить существующий, то вы + можете использовать <command>port test</command> для проверки + вашего порта, включая проверку <link + linkend="testing-portlint"><command>portlint</command></link>. + Эта команда также находит и отображает любые файлы, которые + невключенные в <filename>pkg-plist</filename>. Смотрите + следующий пример:</para> + + <screen>&prompt.root; <userinput>port test /usr/ports/net/csup</userinput></screen> + </sect1> + + <sect1 xml:id="porting-prefix"> + <title><varname>PREFIX</varname> и + <varname>DESTDIR</varname></title> + + <para>Переменная <varname>PREFIX</varname> определяет, куда будет + установлен порт. По умолчанию это + <filename>/usr/local</filename>, но может меняться + пользователем на собственный путь, такой как + <filename>/opt</filename>. В вашем порту значение этой + переменной должно учитываться.</para> + + <para>Если пользователь установил переменную + <varname>DESTDIR</varname>, то она определяет полное + альтернативное окружение, обычно, это jail или установленная + система, смонтированная в месте, отличном от + <filename>/</filename>. На самом деле порт устанавливается в + <filename>DESTDIR/PREFIX</filename> и регистрируется в базе + данных пакетов в <filename>DESTDIR/var/db/pkg</filename>. + Поскольку управление <varname>DESTDIR</varname> производится + автоматически инфраструктурой портов с помощью &man.chroot.8;, + вам не нужны никакие изменения или проявление особой + осторожности при написании портов, совместымых с + <varname>DESTDIR</varname>.</para> + + <para>Значение переменной <varname>PREFIX</varname> будет + установлено в <varname>LOCALBASE</varname> (по умолчанию + <filename>/usr/local</filename>). Если задана переменная + <varname>USE_LINUX_PREFIX</varname>, то + <varname>PREFIX</varname> примет значение + <varname>LINUXBASE</varname> (по умолчанию + <filename>/compat/linux</filename>).</para> + + <para>Избегание явно прописываемых путей + <filename>/usr/local</filename> в исходном коде сделает порт + гораздо более гибким и способным удовлетворить потребности + других серверов. Часто этого можно добиться простой заменой + строк <filename>/usr/local</filename> в различных файлах + <filename>Makefile</filename> внутри порта на + <literal>${PREFIX}</literal>. Эта переменная + автоматически передаётся далее на каждом этапе построения и + установки.</para> + + <para>Проверьте, что ваше приложение не устанавливает чего-либо в + каталог <filename>/usr/local</filename> вместо + <varname>PREFIX</varname>. Наличие явно указанных путей можно + быстро проверить следующим образом:</para> + + <screen>&prompt.root; <userinput>make clean; make package PREFIX=/var/tmp/`make -V PORTNAME`</userinput></screen> + + <para>Если что-то было установлено за пределами + <varname>PREFIX</varname>, то процесс создания пакета сообщит + об отсутствии файлов.</para> + + <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>, следует + проверять на работоспособность, чтобы убедиться в отсутствии + проблем с путями.</para> + + <para>Переменная <varname>PREFIX</varname> не должна задаваться + явно в файле <filename>Makefile</filename> порта. Пользователи + при установке порта могут задать в <varname>PREFIX</varname> + свое собственное место, и порт должен учитывать это + значение.</para> + + <para>Обратитесь к программам/файлам из других портов с + переменными, перечисленными выше, без указания явных маршрутов. + Например, если ваш порт требует, чтобы макрос + <literal>PAGER</literal> являлся полным путем утилиты + <command>less</command>, не используйте строковый путь + <filename>/usr/local/bin/less</filename>. Вместо этого + используйте <literal>${LOCALBASE}</literal>:</para> + + <programlisting>-DPAGER=\"${LOCALBASE}/bin/less\"</programlisting> + + <para>Путь с использованием <varname>LOCALBASE</varname> имеет + больше шансов оставаться работоспособным, если системный + администратор переместил всё дерево + <filename>/usr/local</filename> куда-то в другое место.</para> + </sect1> + + <sect1 xml:id="testing-tinderbox"> + <title>Tinderbox</title> + + <para>Если вы алчный контрибутор портов, то вы можете захотеть + взглянуть на <application>Tinderbox</application>. Это мощная + система построения и тестирования портов. + <application>Tinderbox</application> можно установить, + используя порт <package + role="port">ports-mgmt/tinderbox</package>. Обязательно + прочитайте поставляемую документацию, поскольку конфигурация не + является тривиальной.</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> |