aboutsummaryrefslogtreecommitdiff
path: root/ru_RU.KOI8-R/books/porters-handbook/testing/chapter.xml
diff options
context:
space:
mode:
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.xml393
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>&dollar;{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 &amp;&amp; make check-orphans &amp;&amp; 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>&dollar;{LOCALBASE}</literal>:</para>
-
- <programlisting>-DPAGER=\"&dollar;{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>&dollar;{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 &amp;&amp; make check-orphans &amp;&amp; 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>&dollar;{LOCALBASE}</literal>:</para>
+
+ <programlisting>-DPAGER=\"&dollar;{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>