aboutsummaryrefslogtreecommitdiff
path: root/ru_RU.KOI8-R/books/handbook/ports/chapter.xml
diff options
context:
space:
mode:
Diffstat (limited to 'ru_RU.KOI8-R/books/handbook/ports/chapter.xml')
-rw-r--r--ru_RU.KOI8-R/books/handbook/ports/chapter.xml1909
1 files changed, 0 insertions, 1909 deletions
diff --git a/ru_RU.KOI8-R/books/handbook/ports/chapter.xml b/ru_RU.KOI8-R/books/handbook/ports/chapter.xml
deleted file mode 100644
index 9300750601..0000000000
--- a/ru_RU.KOI8-R/books/handbook/ports/chapter.xml
+++ /dev/null
@@ -1,1909 +0,0 @@
-<?xml version="1.0" encoding="koi8-r"?>
-<!--
- The FreeBSD Russian Documentation Project
-
- $FreeBSD$
- $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/ports/chapter.xml,v 1.67 2005/05/08 07:21:29 andy Exp $
-
- Original revision: r41718
--->
-<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="ports">
- <info><title>Установка приложений: порты и пакеты</title>
- <authorgroup>
- <author><personname><firstname>Андрей</firstname><surname>Захватов</surname></personname><contrib>Перевод на русский язык: </contrib></author>
- </authorgroup>
- </info>
-
-
- <sect1 xml:id="ports-synopsis">
- <title>Обзор</title>
-
- <indexterm><primary>порты</primary></indexterm>
-
- <indexterm><primary>пакеты</primary></indexterm>
-
- <para>Вместе с &os; в составе базового комплекта системы поставляется
- богатый набор системный утилит. Однако для выполнения какой-то
- реальной работы очень скоро возникает необходимость в установке
- дополнительных приложений сторонних разработчиков. &os; дает две
- взаимодополняющих технологии для установки программного обеспечения
- сторонних разработчиков: Коллекция Портов &os; (для установки из
- исходных кодов) и пакеты (для установки из откомпилированных двоичных
- файлов). Любая из этих систем может быть использована для установки
- приложений с локальных носителей или прямо из сети.</para>
-
- <para>После чтения этой главы вы будете знать:</para>
-
- <itemizedlist>
- <listitem>
- <para>Как устанавливать бинарные пакеты с программным обеспечением
- сторонних разработчиков.</para>
- </listitem>
-
- <listitem>
- <para>Как собирать из исходных кодов программное обеспечение
- сторонних разработчиков при
- помощи Коллекции Портов.</para>
- </listitem>
-
- <listitem>
- <para>Как удалять ранее установленные пакеты или порты.</para>
- </listitem>
-
- <listitem>
- <para>Как переопределить значения, используемые по умолчанию в
- Коллекции Портов.</para>
- </listitem>
-
- <listitem>
- <para>Как найти необходимое программное обеспечение.</para>
- </listitem>
-
- <listitem>
- <para>Как обновить установленные приложения.</para>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1 xml:id="ports-overview">
- <title>Обзор установки программного обеспечения</title>
-
- <para>Стандартная процедура установки программного обеспечения сторонних
- разработчиков на &unix;-систему выглядит примерно так:</para>
-
- <procedure>
- <step>
- <para>Загрузка программного обеспечения, которое может распространяться
- в форме исходных текстов или двоичных файлов.</para>
- </step>
-
- <step>
- <para>Распаковка программного обеспечения из дистрибутивного формата
- (обычно tar-архива, сжатого при помощи &man.compress.1;,
- &man.gzip.1; или &man.bzip2.1;).</para>
- </step>
-
- <step>
- <para>Поиск документации в файлах
- <filename>INSTALL</filename>, <filename>README</filename>
- или в каком-то файле из подкаталога <filename>doc/</filename> и её
- чтение в поиске описания установки программного обеспечения.</para>
- </step>
-
- <step>
- <para>Если программное обеспечение распространялось в форме исходных
- текстов, его компиляция. Сюда может быть включено редактирования
- файла <filename>Makefile</filename>, запуск скрипта
- <command>configure</command> и другие работы.</para>
- </step>
-
- <step>
- <para>Тестирование и установка программного обеспечения.</para>
- </step>
- </procedure>
-
- <para>Если вы устанавливаете
- программный пакет, который не был специально перенесён на &os;, то вам
- может даже потребоваться редактировать код для того, чтобы он нормально
- заработал.</para>
-
- <para>&os; предоставляет две технологии, которые выполняют эту работу
- за вас. На момент написания таким образом доступно более &os.numports;
- сторонних приложений.</para>
-
- <para>Каждый пакет содержит уже откомпилированные копии всех команд
- приложения, а также все конфигурационные файлы и документацию. С файлом
- пакета можно работать командами управления пакетами &os;, такими как
- &man.pkg.add.1;, &man.pkg.delete.1;, &man.pkg.info.1; и так далее.</para>
-
- <para>Каждый порт &os; является набором файлов, предназначенных для
- автоматизации процесса компиляции приложения из исходного кода. Файлы,
- из которых состоит порт, содержат всю
- необходимую информацию для выполнения автоматической загрузки,
- извлечения, применения патчей, компиляции и установки приложения.</para>
-
- <para>Также система портов может использоваться для генерации пакетов,
- которые в последствии становятся объектом работы для команд управления
- пакетами &os;.</para>
-
- <para>Как пакеты, так и порты принимают во внимание
- <emphasis>зависимости</emphasis>. Если при инсталляции приложения при
- помощи &man.pkg.add.1; или Коллекции Портов будет обнаружено, что
- необходимая библиотека не была установлена, то первым делом будет
- выполнена установка библиотеки.</para>
-
- <para>Несмотря на то, что обе технологии весьма похожи, и пакеты, и порты
- имеют свои преимущества. Выберите технологию, которая соответствует
- вашим требованиям к установке конкретного приложения.</para>
-
- <itemizedlist>
- <title>Преимущества пакетов</title>
-
- <listitem>
- <para>Сжатый tar-архив пакета обычно меньше, чем сжатый tar-архив,
- содержащий исходный код приложения.</para>
- </listitem>
-
- <listitem>
- <para>Пакеты не требуют времени на компиляцию. Для больших приложений,
- таких как <application>Mozilla</application>,
- <application>KDE</application> или <application>GNOME</application>,
- это может быть важно, особенно при работе на медленной системе.</para>
- </listitem>
-
- <listitem>
- <para>Пакеты не требуют понимания процесса компиляции
- программного обеспечения во &os;.</para>
- </listitem>
- </itemizedlist>
-
- <itemizedlist>
- <title>Преимущества портов</title>
-
- <listitem>
- <para>Пакеты обычно компилируются с консервативными параметрами,
- потому что они должны работать на максимальном количестве систем.
- При установке из порта становится возможным изменение опций
- компиляции.</para>
- </listitem>
-
- <listitem>
- <para>Некоторые приложения имеют опции времени компиляции, позволяющие
- определять необходимые функциональные возможности. К примеру,
- <application>Apache</application> может быть настроен с широким
- набором различных опций.</para>
-
- <para>В некоторых случаях для одного и того же приложения будут
- иметься несколько пакетов с разными предварительными настройками.
- Например, <application>Ghostscript</application> доступен как
- пакет <filename>ghostscript</filename> и как пакет
- <filename>ghostscript-nox11</filename> &mdash; в зависимости от того,
- установлен ли сервер <application>X11</application>.
- Создание нескольких пакетов одного приложения быстро становится
- бессмысленным, если приложение имеет более одного-двух
- параметров компиляции.</para>
- </listitem>
-
- <listitem>
- <para>Условия лицензирования некоторого программного обеспечения
- запрещают распространение в двоичном виде. Оно должно
- распространяться в виде исходного кода и компилироваться конечным
- пользователем.</para>
- </listitem>
-
- <listitem>
- <para>Некоторые пользователи не доверяют дистрибутивам в двоичном виде
- или предпочитают прочесть исходный код и попытаться найти
- потенциальные проблемы.</para>
- </listitem>
-
- <listitem>
- <para>Если у вас есть собственные патчи, вам нужен исходный код для
- того, чтобы их применять.</para>
- </listitem>
- </itemizedlist>
-
- <para>Чтобы отслеживать обновления портов, подпишитесь на
- &a.ports; и &a.ports-bugs;.</para>
-
- <warning>
- <para>Перед установкой любого приложения необходимо зайти на <uri xlink:href="http://vuxml.freebsd.org/">http://vuxml.freebsd.org/</uri>, где находится информация
- по вопросам безопасности приложений, или установить <package>ports-mgmt/portaudit</package>. После установки
- наберите <command>portaudit -F -a</command> для проверки всех
- установленных приложений на наличие известных уязвимостей.</para>
- </warning>
-
- <para>В оставшейся части главы будет рассказано, как использовать пакеты
- и порты для установки и управления программным обеспечением сторонних
- разработчиков во &os;.</para>
- </sect1>
-
- <sect1 xml:id="ports-finding-applications">
- <title>Поиск программного обеспечения</title>
-
- <para>Список имеющихся для &os; приложений постоянно растет. Существует
- несколько способов найти то, что нужно:</para>
-
- <itemizedlist>
- <listitem>
- <para>На сайте &os; по адресу <link xlink:href="&url.base;/ports/index.html">http://www.FreeBSD.org/ports/</link>
- поддерживается обновляемый список всех имеющихся приложений для &os;,
- в котором можно выполнять поиск. Поиск порта можно выполнить
- либо по имени приложения, либо по названию категории.</para>
- </listitem>
-
- <listitem>
- <indexterm><primary>FreshPorts</primary></indexterm>
-
- <para>Dan Langille поддерживает сайт <link xlink:href="http://www.FreshPorts.org/">FreshPorts</link>, на котором
- есть удобный поиск, а также на нём отслеживаются изменения в
- приложениях из Коллекции Портов. Зарегистрированным пользователям
- доступна возможность создавать собственные списки наблюдаемых
- портов и автоматически получать оповещения об их обновлениях
- по электронной почте.</para>
- </listitem>
-
- <listitem>
- <indexterm><primary>Freecode</primary></indexterm>
-
- <para>Если вы не знаете названия нужного вам приложения, попытайтесь
- воспользоваться сайтом типа Freecode (<uri xlink:href="http://www.freecode.com/">http://www.freecode.com/</uri>)
- для поиска приложения, а затем возвратитесь на сайт &os;, чтобы
- проверить, есть ли порт для этого приложения.</para>
- </listitem>
-
- <listitem>
- <para>Если вам необходимо определить, в какой категории находится порт,
- наберите <command>whereis <replaceable>file</replaceable></command>,
- где <replaceable>file</replaceable> - программа, которую вы хотите
- установить:</para>
-
- <screen>&prompt.root; <userinput>whereis lsof</userinput>
-lsof: /usr/ports/sysutils/lsof</screen>
-
- <para>Как вариант, можно воспользоваться &man.echo.1;:</para>
-
- <screen>&prompt.root; <userinput>echo /usr/ports/*/*lsof*</userinput>
-/usr/ports/sysutils/lsof</screen>
-
- <para>Учтите, что в выводе также будут присутствовать совпадающие
- с шаблоном имена файлов, сохраненные в
- <filename>/usr/ports/distfiles</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Ещё одним способом поиска программного обеспечения является
- использование встроенной возможности поиска в Коллекции Портов.
- Чтобы ею воспользоваться, зайдите в <filename>/usr/ports</filename>
- и выполните команду <command>make search
- name=<replaceable>program-name</replaceable></command>, где
- <replaceable>program-name</replaceable> &ndash; это
- название программы, которую вы хотите найти. Например, если
- вы ищете <command>lsof</command>:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
-&prompt.root; <userinput>make search name=lsof</userinput>
-Port: lsof-4.56.4
-Path: /usr/ports/sysutils/lsof
-Info: Lists information about open files (similar to fstat(1))
-Maint: obrien@FreeBSD.org
-Index: sysutils
-B-deps:
-R-deps:</screen>
-
- <tip>
- <para>Команда <command>make search</command> выполняет поиск в файле
- с индексной информацией. Если получено сообщение, что требуется
- файл <filename>INDEX</filename>, запустите <command>make
- fetchindex</command> для загрузки актуального индексного файла.
- После загрузки файла <filename>INDEX</filename> команда
- <command>make search</command> сможет выполнить запрошенный
- поиск.</para>
- </tip>
-
- <para>Строка <quote>Path:</quote> указывает, где находится порт.</para>
-
- <para>Чтобы получить лаконичный вывод, задайте цель
- <command>quicksearch</command>:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
-&prompt.root; <userinput>make quicksearch name=lsof</userinput>
-Port: lsof-4.87.a,7
-Path: /usr/ports/sysutils/lsof
-Info: Lists information about open files (similar to fstat(1))</screen>
-
- <para>Для выполнения более глубокого поиска используйте
- <command>make search
- key=<replaceable>string</replaceable></command> или
- <command>make quicksearch
- key=<replaceable>string</replaceable></command>,
- где <replaceable>string</replaceable> представляет собой некоторый
- текст, относящийся к искомому порту. Текст ищется в комментариях,
- описаниях или зависимостях. Этот способ можно
- использовать для поиска портов, связанных с некоторой темой, когда
- название программы неизвестно.</para>
-
- <para>В обоих случаях (<buildtarget>search</buildtarget> и
- <buildtarget>quicksearch</buildtarget>) строка поиска нечувствительна
- к регистру.
- Поиск <quote>LSOF</quote> приводит к тому же самому результату, что и
- поиск <quote>lsof</quote>.</para>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1 xml:id="packages-using">
- <info><title>Использование бинарных пакетов</title>
- <authorgroup>
- <author><personname><firstname>Chern</firstname><surname>Lee</surname></personname><contrib>Текст предоставил </contrib></author>
- </authorgroup>
- </info>
-
-
-
- <para>Во &os; есть несколько утилит для управления пакетами:</para>
-
- <itemizedlist>
- <listitem>
- <para>Для установки, удаления и получения перечня установленных
- пакетов на работающей системе может быть запущена утилита
- <command>sysinstall</command>. Обратитесь к <xref linkend="packages"/> за более детальной информацией.</para>
- </listitem>
-
- <listitem>
- <para>Утилиты командной строки для управления пакетами, которые
- являются темой данного раздела.</para>
- </listitem>
- </itemizedlist>
-
- <sect2>
- <title>Установка пакета</title>
-
- <indexterm>
- <primary>пакеты</primary>
- <secondary>установка</secondary>
- </indexterm>
-
- <indexterm>
- <primary><command>pkg_add</command></primary>
- </indexterm>
-
- <para>Для установки бинарного пакета &os; из локального файла или
- с сервера в сети используйте &man.pkg.add.1;.</para>
-
- <example>
- <title>Загрузка пакета вручную и его локальная установка</title>
-
- <screen>&prompt.root; <userinput>ftp -a <replaceable>ftp2.FreeBSD.org</replaceable></userinput>
-Connected to ftp2.FreeBSD.org.
-220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
-331 Guest login ok, send your email address as password.
-230-
-230- This machine is in Vienna, VA, USA, hosted by Verio.
-230- Questions? E-mail freebsd@vienna.verio.net.
-230-
-230-
-230 Guest login ok, access restrictions apply.
-Remote system type is UNIX.
-Using binary mode to transfer files.
-<prompt>ftp&gt;</prompt> <userinput>cd /pub/FreeBSD/ports/packages/sysutils/</userinput>
-250 CWD command successful.
-<prompt>ftp&gt;</prompt> <userinput>get lsof-4.56.4.tgz</userinput>
-local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
-200 PORT command successful.
-150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
-100% |**************************************************| 92375 00:00 ETA
-226 Transfer complete.
-92375 bytes received in 5.60 seconds (16.11 KB/s)
-<prompt>ftp&gt;</prompt> <userinput>exit</userinput>
-&prompt.root; <userinput>pkg_add <replaceable>lsof-4.56.4.tgz</replaceable></userinput></screen>
- </example>
-
- <para>Если у вас нет источника пакетов, например, такого как набор
- CD-ROM дисков с &os;, то добавьте опцию <option>-r</option> для
- &man.pkg.add.1;. Утилита автоматически определит правильный формат
- объектных файлов и релиз, а затем загрузит и установит пакет с сервера
- FTP без какого-либо дополнительного взаимодействия с
- пользователем.</para>
-
- <indexterm>
- <primary><command>pkg_add</command></primary>
- </indexterm>
-
- <screen>&prompt.root; <userinput>pkg_add -r <replaceable>lsof</replaceable></userinput></screen>
-
- <para>Чтобы задействовать альтернативное зеркало пакетов &os;,
- укажите его адрес в переменной окружения <envar>PACKAGESITE</envar>.
- Для загрузки файлов утилита &man.pkg.add.1; использует &man.fetch.3;.
- Последняя учитывает значения различных переменных окружения, включая
- <envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar> и
- <envar>FTP_PASSWORD</envar>. Если вы находитесь за сетевым экраном,
- или для работы с FTP/HTTP вам необходимо использовать прокси, то
- определите соответствующие переменные. Обратитесь к справочной
- странице по &man.fetch.3; для получения полного списка переменных.
- Заметьте, что в примере выше вместо
- <literal>lsof-4.56.4</literal> используется <literal>lsof</literal>.
- В случае загрузки из сети номер версии в имени пакета должен быть
- опущен.</para>
-
- <note>
- <para>Если вы используете &os.current; или &os.stable;, то утилита
- &man.pkg.add.1; загрузит последнюю версию устанавливаемой программы.
- Если же вы используете версию -RELEASE, то &man.pkg.add.1; установит
- версию пакета, который был собран для конкретного релиза. Это
- поведение возможно изменить переопределив значение
- <envar>PACKAGESITE</envar>. Например, в системе
- &os;&nbsp;8.1-RELEASE &man.pkg.add.1; по умолчанию попытается
- скачать пакеты с
- <literal>ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/</literal>.
- Чтобы обязать &man.pkg.add.1; загружать пакеты для
- &os;&nbsp;8-STABLE, присвойте <envar>PACKAGESITE</envar> значение
- <literal>ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/</literal>.</para>
- </note>
-
- <para>Файлы пакетов распространяются в форматах <filename>.tgz</filename>
- и <filename>.tbz</filename>. Пакеты находятся по адресу <uri xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages">ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages</uri> или
- в каталоге <filename>/packages</filename> дистрибутива &os; на DVD.
- Структура каталогов с пакетами подобна тому, как организовано дерево
- <filename>/usr/ports</filename>. Каждая категория имеет собственный
- каталог, и каждый пакет помещается в каталог
- <filename>All</filename>.</para>
- </sect2>
-
- <sect2>
- <title>Управление пакетами</title>
-
- <indexterm>
- <primary>пакеты</primary>
- <secondary>управление</secondary>
- </indexterm>
-
- <para>Для вывода перечня установленных пакетов и их описаний может
- быть задействована &man.pkg.info.1;.</para>
-
- <indexterm>
- <primary><command>pkg_info</command></primary>
- </indexterm>
-
- <screen>&prompt.root; <userinput>pkg_info</userinput>
-colordiff-1.0.13 A tool to colorize diff output
-docbook-1.2 Meta-port for the different versions of the DocBook DTD
-...</screen>
-
- <para>Утилита &man.pkg.version.1; выводит отчёт о версиях всех
- установленных пакетов и сравнивает их версии с текущими версиями
- соответствующих приложений, доступных из локального дерева
- портов.</para>
-
- <indexterm>
- <primary><command>pkg_version</command></primary>
- </indexterm>
-
- <screen>&prompt.root; <userinput>pkg_version</userinput>
-colordiff =
-docbook =
-...</screen>
-
- <para>Символы во второй колонке указывают сравнительную разницу в
- возрасте установленной версии и версии, находящейся в локальном дереве
- портов.</para>
-
- <informaltable frame="none" pgwide="1">
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Символ</entry>
-
- <entry>Значение</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>=</entry>
-
- <entry>Версия установленного пакета соответствует версии,
- находящейся в локальном дереве портов.</entry>
- </row>
-
- <row>
- <entry>&lt;</entry>
-
- <entry>Версия установленного пакета старее, чем та, что имеется в
- локальном дереве портов.</entry>
- </row>
-
- <row>
- <entry>&gt;</entry>
-
- <entry>Версия установленного пакета новее чем та, что есть
- в дереве портов. Скорее всего, локальное дерево портов
- устарело.</entry>
- </row>
-
- <row>
- <entry>?</entry>
-
- <entry>В индексном файле портов установленный пакет не
- найден. Это может случиться если установленный порт был
- переименован или удалён из Коллекции Портов.</entry>
- </row>
-
- <row>
- <entry>*</entry>
-
- <entry>Имеется несколько версий пакета.</entry>
- </row>
-
- <row>
- <entry>!</entry>
-
- <entry>Установленный пакет есть в индексном файле, но по
- какой-то причине утилите <command>pkg_version</command> не
- удалось сравнить номер версии установленного пакета
- и соответствующей записи в файле.</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
-
- <sect2>
- <title>Удаление пакета</title>
-
- <indexterm>
- <primary><command>pkg_delete</command></primary>
- </indexterm>
-
- <indexterm>
- <primary>пакеты</primary>
-
- <secondary>удаление</secondary>
- </indexterm>
-
- <para>Для удаления ранее установленных пакетов с программным
- обеспечением используйте утилиту &man.pkg.delete.1;.</para>
-
- <screen>&prompt.root; <userinput>pkg_delete <replaceable>xchat-1.7.1</replaceable></userinput></screen>
-
- <para>Следует отметить, что для &man.pkg.delete.1; требуется полное
- имя пакета и номер версии; вышеприведенная команда не сработала бы,
- если б ей было указано <replaceable>xchat</replaceable> вместо
- <replaceable>xchat-1.7.1</replaceable>. Для нахождения версии
- установленного пакета задействуйте утилиту &man.pkg.version.1;. Или
- же, напечатайте групповой символ (wildcard) вместо номера
- версии:</para>
-
- <screen>&prompt.root; <userinput>pkg_delete <replaceable>xchat\*</replaceable></userinput></screen>
-
- <para>в этом случае будут удалены все пакеты, имена которых начинаются
- на <literal>xchat</literal>.</para>
- </sect2>
-
- <sect2>
- <title>Разное</title>
-
- <para>Вся информация о пакетах, включая перечни файлов и описания
- каждого установленного пакета, хранится в каталоге
- <filename>/var/db/pkg</filename>.</para>
- </sect2>
- </sect1>
-
- <sect1 xml:id="pkgng-intro">
- <title>Использование <application>pkgng</application> для управления
- бинарными пакетами</title>
-
- <para><application>pkgng</application> &mdash; это усовершенствованный
- инструмент, пришедший на смену традиционным утилитам управления пакетами
- &os;. Он обладает множеством функциональных возможностей, ускоряющих
- и облегчающих работу с бинарными пакетами. Первый релиз
- <application>pkgng</application> состоялся в августе 2012 года.</para>
-
- <para><application>pkgng</application> не является заменой для утилит
- управления портами, таких как
- <package>ports-mgmt/portmaster</package> или
- <package>ports-mgmt/portupgrade</package>. В то время,
- как <package>ports-mgmt/portmaster</package> и
- <package>ports-mgmt/portupgrade</package> позволяют
- устанавливать приложения сторонних разработчиков как из бинарных
- пакетов, так и из
- Коллекции Портов, утилита <application>pkgng</application>
- дает возможность устанавливать приложения исключительно из бинарных
- пакетов.</para>
-
- <sect2 xml:id="pkgng-initial-setup">
- <title>Начало работы с <application>pkgng</application></title>
-
- <para>Во &os;&nbsp;9.1 и более поздние включена программа
- &quot;самонастройки&quot; (&quot;bootstrap&quot;)
- <application>pkgng</application>. Она скачивает и устанавливает
- основную утилиту <application>pkgng</application>.</para>
-
- <para>Для запуска самонастройки, выполните:</para>
-
- <screen>&prompt.root; <userinput>/usr/sbin/pkg</userinput></screen>
-
- <para>Для более ранних версий &os; утилиту
- <application>pkgng</application> необходимо установить из Коллекции
- Портов или из бинарных пакетов.</para>
-
- <para>Для установки <application>pkgng</application> из порта, запустите
- следующее:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/ports/ports-mgmt/pkg</userinput>
-&prompt.root; <userinput>make</userinput>
-&prompt.root; <userinput>make install clean</userinput></screen>
-
- <para>Для установки из бинарного пакета, выполните:</para>
-
- <screen>&prompt.root; <userinput>pkg_add -r pkg</userinput></screen>
-
- <para>Действующие инсталляции &os; требуют преобразования базы данных
- установленных пакетов утилиты <application>pkg_install</application>
- к новому формату. Для выполнения конвертирования, запустите:</para>
-
- <screen>&prompt.root; <userinput>pkg2ng</userinput></screen>
-
- <para>Вышеприведенный шаг не требуется для новых инсталляций, в которых
- не было установлено программ сторонних разработчиков.</para>
-
- <important>
- <para>Этот шаг необратим. После перевода базы данных установленных
- пакетов к формату <application>pkgng</application> утилитами
- <application>pkg_install</application> более пользоваться
- не следует.</para>
- </important>
-
- <note>
- <para>В процессе конвертирования базы данных установленных пакетов
- могут возникать сообщения об ошибках. На данном этапе их можно
- игнорировать, так как перечень программ сторонних разработчиков,
- информация о которых не была преобразована, будет перечислен
- по завершении работы <command>pkg2ng</command>. Над этим перечнем
- придется поработать вручную.</para>
- </note>
-
- <para>Чтобы убедиться, что Коллекция Портов&nbsp;&os; регистрирует
- новые программы при помощи <application>pkgng</application>, а не
- <application>pkg_install</application>, для версий &os;, предшествующих
- 10.<replaceable>X</replaceable>, в файл
- <filename>/etc/make.conf</filename> необходимо внести следующую
- запись:</para>
-
- <programlisting>WITH_PKGNG= yes</programlisting>
- </sect2>
-
- <sect2 xml:id="pkgng-pkg-conf">
- <title>Настройка окружения <application>pkgng</application></title>
-
- <para>Система управления пакетами <application>pkgng</application>
- при выполнении большинства операций обращается к пакетному
- репозиторию. Адрес используемого по умолчанию репозитория указан
- в <filename>/usr/local/etc/pkg.conf</filename> или в переменной
- окружения <envar>PACKAGESITE</envar>. Последняя переопределяет
- адрес, указанный в конфигурационном файле.</para>
-
- <para>Дополнительные опции конфигурации <application>pkgng</application>
- описаны в pkg.conf(5).</para>
- </sect2>
-
- <sect2 xml:id="pkgng-basic-usage">
- <title>Основные операции <application>pkgng</application></title>
-
- <para>Информацию по работе с <application>pkgng</application> можно
- найти на странице справочника pkg(8), или в выводе утилиты
- <command>pkg</command>, запущенной без аргументов.</para>
-
- <para>Каждый аргумент команды <application>pkgng</application> описан на
- соответствующей странице справочника. Например, чтобы ознакомиться
- со страницей справочника для <command>pkg install</command>,
- запустите любую из двух нижеследующих команд:</para>
-
- <screen>&prompt.root; <userinput>pkg help install</userinput></screen>
-
- <screen>&prompt.root; <userinput>man pkg-install</userinput></screen>
-
- <sect3 xml:id="pkgng-pkg-info">
- <title>Получение информации об установленных пакетах при помощи
- <application>pkgng</application></title>
-
- <para>Информация об установленных в системе пакетах может быть
- отображена при помощи команды <command>pkg info</command>. Подобно
- до &man.pkg.info.1;, в выводе перечисляются версии и описания всех
- установленных пакетов.</para>
-
- <para>Если необходима информация о конкретном пакете, выполните:</para>
-
- <screen>&prompt.root; <userinput>pkg info <replaceable>packagename</replaceable></userinput></screen>
-
- <para>Например, для получения версии <application>pkgng</application>,
- который установлен в системе, запустите:</para>
-
- <screen>&prompt.root; <userinput>pkg info pkg</userinput>
-pkg-1.0.2 New generation package manager</screen>
- </sect3>
-
- <sect3 xml:id="pkgng-installing-deinstalling">
- <title>Установка и удаление пакетов при помощи
- <application>pkgng</application></title>
-
- <para>В общем, бинарные пакеты устанавливаются при помощи:</para>
-
- <screen>&prompt.root; <userinput>pkg install <replaceable>packagename</replaceable></userinput></screen>
-
- <para>Команда <command>pkg install</command> обращается к пакетному
- репозиторию, это упоминалось в <xref linkend="pkgng-pkg-conf"/>.
- Команда pkg-add(8), напротив, не выполняет обращений к пакетному
- репозиторию, а также игнорирует переменную
- <envar>PACKAGESITE</envar>. Как следствие &mdash; зависимости
- не отслеживаются, и необходимые зависимые компоненты не скачиваются
- с удаленного источника. В этом разделе описана работа с
- <command>pkg install</command>. За подробностями работы с
- <command>pkg add</command> обратитесь к справочной странице по
- pkg-add(8).</para>
-
- <para>Утилита <command>pkg install</command> может устанавливать
- дополнительные бинарные пакеты. Например, для установки
- <application>curl</application>, выполните:</para>
-
- <screen>&prompt.root; <userinput>pkg install curl</userinput>
-Updating repository catalogue
-Repository catalogue is up-to-date, no need to fetch fresh copy
-The following packages will be installed:
-
- Installing ca_root_nss: 3.13.5
- Installing curl: 7.24.0
-
-The installation will require 4 MB more space
-
-1 MB to be downloaded
-
-Proceed with installing packages [y/N]: <userinput>y</userinput>
-ca_root_nss-3.13.5.txz 100% 255KB 255.1KB/s 255.1KB/s 00:00
-curl-7.24.0.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00
-Checking integrity... done
-Installing ca_root_nss-3.13.5... done
-Installing curl-7.24.0... done</screen>
-
- <para>Новый пакет, как и любые дополнительные пакеты, которые были
- установлены как зависимости, перечисляются в списке установленных
- пакетов:</para>
-
- <screen>&prompt.root; <userinput>pkg info</userinput>
-ca_root_nss-3.13.5 The root certificate bundle from the Mozilla Project
-curl-7.24.0 Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers
-pkg-1.0.2 New generation package manager</screen>
-
- <para>Пакеты, в которых более нет необходимости, могут быть удалены
- при помощи <command>pkg delete</command>. Например, если выяснится,
- что <application>curl</application> не нужен:</para>
-
- <screen>&prompt.root; <userinput>pkg delete curl</userinput>
-The following packages will be deleted:
-
- curl-7.24.0_1
-
-The deletion will free 3 MB
-
-Proceed with deleting packages [y/N]: <userinput>y</userinput>
-Deleting curl-7.24.0_1... done</screen>
- </sect3>
-
- <sect3 xml:id="pkgng-upgrading">
- <title>Обновление установленных пакетов при помощи
- <application>pkgng</application></title>
-
- <para>Пакеты, версии которых устарели, можно найти при помощи команды
- <command>pkg version</command>. Версии установленных пакетов
- сравниваются с версиями приложений из локального дерева портов,
- а в случае отсутствия портов pkg-version(8) обращается к удаленному
- репозиторию пакетов.</para>
-
- <para>При помощи <application>pkgng</application> можно обновлять
- пакеты до новых версий. Предположим, вышла новая версия
- <application>curl</application>. Установленный пакет можно
- обновить к новой версии, выполнив:</para>
-
- <screen>&prompt.root; <userinput>pkg upgrade</userinput>
-Updating repository catalogue
-repo.txz 100% 297KB 296.5KB/s 296.5KB/s 00:00
-The following packages will be upgraded:
-
- Upgrading curl: 7.24.0 -&gt; 7.24.0_1
-
-1 MB to be downloaded
-
-Proceed with upgrading packages [y/N]: <userinput>y</userinput>
-curl-7.24.0_1.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00
-Checking integrity... done
-Upgrading curl from 7.24.0 to 7.24.0_1... done</screen>
- </sect3>
-
- <sect3 xml:id="pkgng-auditing">
- <title>Аудит безопасности пакетов при помощи
- <application>pkgng</application></title>
-
- <para>Изредка в приложениях из Коллекции Портов обнаруживаются
- уязвимости. В <application>pkgng</application> встроена возможность
- выполнять аудит безопасности, действующая подобно приложению из
- <package>ports-mgmt/portaudit</package>. Для
- выполнения аудита установленных в систему программ, выполните:</para>
-
- <screen>&prompt.root; <userinput>pkg audit -F</userinput></screen>
- </sect3>
- </sect2>
-
- <sect2 xml:id="pkgng-advanced-usage">
- <title>Сложные вопросы работы с <application>pkgng</application></title>
-
- <sect3 xml:id="pkgng-autoremove">
- <title>Автоматическое удаление неиспользуемых зависимостей при
- помощи <application>pkgng</application></title>
-
- <para>После удаления пакета в системе могут остаться неиспользуемые
- зависимости, наподобие <package>security/ca_root_nss</package> из примера выше.
- Такие пакеты остаются установленными, несмотря на то, что они
- более не требуются другим пакетам. Определить и удалить
- неиспользуемые пакеты, которые были установлены как зависимости,
- можно при помощи:</para>
-
- <screen>&prompt.root; <userinput>pkg autoremove</userinput>
-Packages to be autoremoved:
- ca_root_nss-3.13.5
-
-The autoremoval will free 723 kB
-
-Proceed with autoremoval of packages [y/N]: <userinput>y</userinput>
-Deinstalling ca_root_nss-3.13.5... done</screen>
- </sect3>
-
- <sect3 xml:id="pkgng-backup">
- <title>Резервное копирование базы данных установленных пакетов
- <application>pkgng</application></title>
-
- <para>В отличие от традиционной системы управления пакетами,
- <application>pkgng</application> располагает своим собственным
- механизмом резервного копирования базы данных. Для ручного создания
- резервной копии базы данных установленных пакетов, выполните:</para>
-
- <screen>&prompt.root; <userinput>pkg backup -d <replaceable>pkgng.db</replaceable></userinput></screen>
-
- <note>
- <para>Замените имя файла <replaceable>pkgng.db</replaceable> на
- более подходящее.</para>
- </note>
-
- <para>В дополнение, <application>pkgng</application> содержит скрипт
- &man.periodic.8;, позволяющий выполнять ежедневное автоматическое
- копирование базы данных установленных пакетов.
- Для активации данной возможности задайте переменной
- <literal>daily_backup_pkgng_enable</literal> значение
- <literal>YES</literal> в файле &man.periodic.conf.5;.</para>
-
- <tip>
- <para>Для предотвращения периодического запуска аналогичного скрипта
- системы <application>pkg_install</application>, также выполняющего
- резервное копирование базы данных установленных пакетов, задайте
- переменной <literal>daily_backup_pkgdb_enable</literal> значение
- <literal>NO</literal> в файле &man.periodic.conf.5;.</para>
- </tip>
-
- <para>Для восстановления содержимого базы данных установленных пакетов
- из резервной копии, выполните:</para>
-
- <screen>&prompt.root; <userinput>pkg backup -r <replaceable>/path/to/pkgng.db</replaceable></userinput></screen>
- </sect3>
-
- <sect3 xml:id="pkgng-clean">
- <title>Удаление копий устаревших пакетов в системе
- <application>pkgng</application></title>
-
- <para>По умолчанию, <application>pkgng</application> сохраняет копии
- установленных бинарных пакетов в каталог, указанный переменной
- <envar>PKG_CACHEDIR</envar> в pkg.conf(5). При обновлении пакетов
- командой <command>pkg upgrade</command> старые версии обновленных
- пакетов автоматически не удаляются.</para>
-
- <para>Для удаления устаревших версий бинарных пакетов из кеш-каталога,
- выполните:</para>
-
- <screen>&prompt.root; <userinput>pkg clean</userinput></screen>
- </sect3>
-
- <sect3 xml:id="pkgng-set">
- <title>Изменение метаданных пакетов
- <application>pkgng</application></title>
-
- <para>Со временем программы из Коллекции Портов могут претерпевать
- изменения старшего (major) номера версии. В отличие от
- <application>pkg_install</application>,
- <application>pkgng</application> располагает встроенной командой для
- обновления информации о происхождении (origin) пакета. Например,
- изначально порт <package>lang/php5</package>
- был версии <literal>5.3</literal>. Позже этот порт был переименован
- в <package>lang/php53</package>, а под именем
- <package>lang/php5</package> был создан порт версии
- <literal>5.4</literal>. Утилитам системы
- <application>pkg_install</application> для обновления информации
- о происхождении (origin) пакета в собственной базе данных
- установленных пакетов потребовалась бы помощь дополнительного
- программного обеспечения, такого как
- <package>ports-mgmt/portmaster</package>.</para>
-
- <para>В отличие от
- <package>ports-mgmt/portmaster</package> и
- <package>ports-mgmt/portupgrade</package> для
- портов, порядок перечисления новой и старой версий отличаются.
- Для <application>pkgng</application> необходим следующий
- порядок:</para>
-
- <screen>&prompt.root; <userinput>pkg set -o <replaceable>category/oldport</replaceable>:<replaceable>category/newport</replaceable></userinput></screen>
-
- <para>Например, в вышеприведенном случае для замены информации
- о происхождении пакета, выполните:</para>
-
- <screen>&prompt.root; <userinput>pkg set -o lang/php5:lang/php53</userinput></screen>
-
- <para>Еще один пример: для изменения информации о происхождении
- пакета с <package>lang/ruby18</package> на
- <package>lang/ruby19</package>, выполните:</para>
-
- <screen>&prompt.root; <userinput>pkg set -o lang/ruby18:lang/ruby19</userinput></screen>
-
- <para>И последний пример: для замены информации о происхождении пакета
- разделяемой библиотеки <filename>libglut</filename> с
- <package>graphics/libglut</package> на
- <package>graphics/freeglut</package>,
- запустите:</para>
-
- <screen>&prompt.root; <userinput>pkg set -o graphics/libglut:graphics/freeglut</userinput></screen>
-
- <note>
- <para>Выполняя замену информации о происхождении пакетов, в
- большинстве случаев также требуется переустановить пакеты, которые
- зависят от изменившегося пакета. Для принудительной переустановки
- зависящих пакетов, выполните:</para>
-
- <screen>&prompt.root; <userinput>pkg install -Rf <replaceable>graphics/freeglut</replaceable></userinput></screen>
- </note>
- </sect3>
- </sect2>
- </sect1>
-
- <sect1 xml:id="ports-using">
- <title>Использование Коллекции Портов</title>
-
- <para>В этом разделе даны базовые сведения по использованию Коллекции
- Портов для установки или удаления программ. Детальное описание
- существующих целей <command>make</command> и переменных окружения
- находится в &man.ports.7;.</para>
-
- <warning>
- <para>В июле 2012 года проект Портов &os; сменил систему контроля версий:
- на смену CVS пришел Subversion. Рекомендуемым способом работы с
- деревом портов является <application>Portsnap</application>.
- Пользователи, которым требуется локальная подгонка портов
- (то есть, поддержание дополнительных локальных патчей), возможно
- предпочтут непосредственное использование Subversion. 28 февраля
- 2013 года сервис <application>CVSup</application> был выведен из
- эксплуатации, и дальнейшее использование последнего не
- рекомендуется.</para>
- </warning>
-
- <sect2 xml:id="ports-tree">
- <title>Получение Коллекции Портов</title>
-
- <para>Коллекция Портов &mdash; это набор файлов, состоящий из
- <filename>Makefile</filename>, патчей и файлов описаний, хранимых в
- <filename>/usr/ports</filename>. Этот набор файлов предназначен для
- построения и установки приложений во &os;. В нижеследующих разделах
- описано несколько способов получения Коллекции Портов на тот случай,
- если Коллекция не была установлена во время инсталляции &os;.</para>
-
- <procedure>
- <title>Метод Portsnap</title>
-
- <para><application>Portsnap</application> это быстрый и удобный
- инструмент для получения Коллекции Портов, и в то же время &mdash;
- предпочитаемый выбор большинства пользователей.<!-- За подробным
- описанием всех возможностей <application>Portsnap</application>
- обратитесь к <link linkend="updating-upgrading-portsnap">Using Portsnap</link>.--></para>
-
- <step>
- <para>Скачайте сжатый снэпшот Коллекции Портов в
- <filename>/var/db/portsnap</filename>.</para>
-
- <screen>&prompt.root; <userinput>portsnap fetch</userinput></screen>
- </step>
-
- <step>
- <para>Если вы запускаете <application>Portsnap</application>
- впервые, извлеките снэпшот в
- <filename>/usr/ports</filename>:</para>
-
- <screen>&prompt.root; <userinput>portsnap extract</userinput></screen>
- </step>
-
- <step>
- <para>По завершении первого запуска
- <application>Portsnap</application>, как было показано выше,
- <filename>/usr/ports</filename> может быть
- обновлен при помощи:</para>
-
- <screen>&prompt.root; <userinput>portsnap fetch</userinput>
-&prompt.root; <userinput>portsnap update</userinput></screen>
- </step>
- </procedure>
-
- <procedure>
- <title>Метод Subversion</title>
-
- <para>Если необходим контроль за деревом портов (например, для
- поддержания локальных изменений), то для получения Коллекции Портов
- может быть задействован <application>Subversion</application>.
- Обратитесь к <link xlink:href="&url.articles.committers-guide.en;/subversion-primer.html">Subversion Primer</link>
- за детальным описанием <application>Subversion</application>.</para>
-
- <step>
- <para>Для создания рабочей копии дерева портов необходимо
- иметь установленный <application>Subversion</application>.
- Если порты есть в наличии, то установите
- <application>Subversion</application> выполнив следующее:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/ports/devel/subversion</userinput>
-&prompt.root; <userinput>make install clean</userinput></screen>
-
- <para>Если портов нет, то <application>Subversion</application> может
- быть установлен при помощи системы пакетов:</para>
-
- <screen>&prompt.root; <userinput>pkg_add -r subversion</userinput></screen>
-
- <para>Если же для управления пакетами используется
- <application>pkgng</application>, то
- <application>Subversion</application> устанавливается при помощи
- следующей команды:</para>
-
- <screen>&prompt.root; <userinput>pkg install subversion</userinput></screen>
- </step>
-
- <step>
- <para>Создайте рабочую копию дерева портов. Для ускорения
- процесса вместо <replaceable>svn0.us-east.FreeBSD.org</replaceable>
- укажите ближайшее к вам
- <link xlink:href="&url.books.handbook.en;/svn-mirrors.html">зеркало
- Subversion</link>. Коммиттерам необходимо сначала прочитать
- <link xlink:href="&url.articles.committers-guide.en;/subversion-primer.html">Subversion Primer</link>,
- чтобы удостовериться, что выбран корректный протокол.</para>
-
- <screen>&prompt.root; <userinput>svn checkout https://<replaceable>svn0.us-east.FreeBSD.org</replaceable>/ports/head /usr/ports</userinput></screen>
- </step>
-
- <step>
- <para>При наличии рабочей копии
- <filename>/usr/ports</filename>
- все последующие обновления выполняются просто:</para>
-
- <screen>&prompt.root; <userinput>svn update /usr/ports</userinput></screen>
- </step>
- </procedure>
-
- <procedure>
- <title>Метод с использованием Sysinstall</title>
-
- <para>Этот метод подразумевает использование
- <application>sysinstall</application> для установки Коллекции Портов
- из установочного носителя. Учтите, что в итоге будет установлена
- старая копия Коллекции Портов, которая была актуальна на момент
- создания релиза. Если у вас есть подключение к Интернет, то вам
- необходимо пользоваться одним из вышеупомянутых методов.</para>
-
- <step>
- <para>Работая как пользователь <systemitem class="username">root</systemitem>, запустите
- <command>sysinstall</command> так, как это показано
- ниже:</para>
-
- <screen>&prompt.root; <userinput>sysinstall</userinput></screen>
- </step>
-
- <step>
- <para>Опуститесь вниз и выберите
- <guimenuitem>Configure</guimenuitem>, нажмите
- <keycap>Enter</keycap></para>
- </step>
-
- <step>
- <para>Опуститесь вниз и выберите
- <guimenuitem>Distributions</guimenuitem>,
- затем нажмите <keycap>Enter</keycap></para>
- </step>
-
- <step>
- <para>Опуститесь вниз к пункту <guimenuitem>ports</guimenuitem>,
- нажмите клавишу <keycap>Пробел</keycap></para>
- </step>
-
- <step>
- <para>Поднимитесь вверх к <guimenuitem>Exit</guimenuitem>, нажмите
- <keycap>Enter</keycap></para>
- </step>
-
- <step>
- <para>Выберите желаемый носитель для установки, например, CDROM,
- FTP и так далее.</para>
- </step>
-
- <step>
- <para>Перейдите на пункт меню <guimenuitem>Exit</guimenuitem> и
- нажмите <keycap>Enter</keycap>.</para>
- </step>
-
- <step>
- <para>Нажмите <keycap>X</keycap> для выхода из
- <application>sysinstall</application>.</para>
- </step>
- </procedure>
- </sect2>
-
- <sect2 xml:id="cvsup-migration">
- <title>Миграция с
- <application>CVSup</application>/<application>csup</application>
- на <application>portsnap</application></title>
-
- <warning>
- <para>Начиная с 28 февраля 2013 года дерево портов более не
- экспортируется в <application>CVS</application>, поэтому
- <application>CVSup</application> и <application>csup</application>
- не будут доставлять обновления для дерева портов.</para>
- </warning>
-
- <procedure>
- <title>Миграция на Portsnap</title>
-
- <para>Для миграции потребуется около 1&nbsp;ГБ дискового пространства
- в <filename>/usr</filename>, в добавок, для
- <application>Portsnap</application> необходимо около 150&nbsp;МБ
- дискового пространства в
- <filename>/var</filename>.</para>
-
- <step>
- <para>Если у вас настроено автоматическое обновление портов,
- например при помощи задания &man.cron.8;, запускающего
- <application>CVSup</application> или
- <application>csup</application>, то его необходимо будет
- отключить.</para>
- </step>
-
- <step>
- <para>Переместите существующее дерево портов во временный
- каталог:</para>
-
- <screen>&prompt.root; <userinput>mv /usr/ports /usr/ports.old</userinput></screen>
- </step>
-
- <step>
- <para>При помощи <application>Portsnap</application> скачайте
- новое дерево портов и извлеките его в
- <filename>/usr/ports</filename>:</para>
-
- <screen>&prompt.root; <userinput>portsnap fetch extract</userinput></screen>
- </step>
-
- <step>
- <para>Переместите дистрибутивные файлы (distfiles) и сохраненные
- пакеты в новое дерево портов:</para>
-
- <screen>&prompt.root; <userinput>mv /usr/ports.old/distfiles /usr/ports</userinput>
-&prompt.root; <userinput>mv /usr/ports.old/packages /usr/ports</userinput></screen>
- </step>
-
- <step>
- <para>Удалите старое дерево портов:</para>
-
- <screen>&prompt.root; <userinput>rm -rf /usr/ports.old</userinput></screen>
- </step>
-
- <step>
- <para>Если ранее использовался <application>CVSup</application>,
- то сейчас его можно удалить:</para>
-
- <screen>&prompt.root; <userinput>pkg_delete -r -v cvsup-without-gui-\*</userinput></screen>
-
- <para>Пользователям <application>pkgng</application> необходимо
- запустить следующую команду:</para>
-
- <screen>&prompt.root; <userinput>pkg delete cvsup-without-gui</userinput></screen>
- </step>
- </procedure>
-
-<!--
- <para>За дальнейшим описанием утилиты
- <application>Portsnap</application> и деталей работы с ней
- обратитесь к <link linkend="updating-upgrading-portsnap">Using
- Portsnap</link>.</para>
--->
- </sect2>
-
- <sect2 xml:id="ports-skeleton">
- <title>Установка портов</title>
-
- <indexterm>
- <primary>порты</primary>
-
- <secondary>установка</secondary>
- </indexterm>
-
- <para>Скелетом порта является набор файлов, который указывает вашей
- системе &os;, как откомпилировать и установить программу. Скелет
- каждого порта включает:</para>
-
- <itemizedlist>
- <listitem>
- <para><filename>Makefile</filename>: этот файл содержит различные
- директивы, которые определяют, как приложение должно быть
- откомпилировано и куда в вашей системе оно должно быть
- установлено.</para>
- </listitem>
-
- <listitem>
- <para><filename>distinfo</filename>: этот файл содержит информацию
- о файлах, которые должны быть загружены для сборки порта, а также
- их контрольные суммы (&man.sha256.1;) для проверки того, что файлы
- не были повреждены в процессе загрузки.</para>
- </listitem>
-
- <listitem>
- <para><filename>files</filename>: этот каталог содержит патчи,
- необходимые для компиляции и установки программы в вашей системе
- &os;. Этот каталог также может содержать другие файлы,
- используемые для построения порта.</para>
- </listitem>
-
- <listitem>
- <para><filename>pkg-descr</filename>: этот файл содержит более
- подробное описание программы.</para>
- </listitem>
-
- <listitem>
- <para><filename>pkg-plist</filename>: это список всех файлов,
- которые будут установлены портом. В нем также содержатся
- указания системе портов на удаление определенных файлов во
- время удаления порта.</para>
- </listitem>
- </itemizedlist>
-
- <para>В некоторых портах присутствуют и другие файлы, такие, как
- <filename>pkg-message</filename>. Система портов использует эти файлы
- для обработки особых ситуаций. Если вы хотите узнать более подробно
- об этих файлах и о портах вообще, то обратитесь к <link xlink:href="&url.books.porters-handbook;/index.html">Руководству по созданию
- портов для FreeBSD</link>.</para>
-
- <para>Порт не содержит собственно исходного кода, также известного
- как <quote>дистрибутивный файл</quote> (distfile). Способ
- распространения исходного кода определяется предпочтениями автора
- программы. Ниже описаны два способа установки порта &os;.</para>
-
- <note>
- <para>Для установки портов вы должны войти в систему как пользователь
- <systemitem class="username">root</systemitem>.</para>
- </note>
-
- <warning>
- <para>Перед установкой любого порта необходимо убедиться в
- наличии свежей Коллекции Портов и заглянуть на <uri xlink:href="http://vuxml.freebsd.org/">http://vuxml.freebsd.org/</uri>, где могут освещаться
- вопросы безопасности, связанные с конкретным портом. Если у вас
- установлен <package>ports-mgmt/portaudit</package>,
- то перед установкой нового порта запустите
- <command>portaudit -F</command> для загрузки свежей базы данных
- уязвимостей. Проверка безопасности и обновление базы данных будут
- выполняться при ежедневной проверке безопасности системы.
- За дальнейшей информацией обратитесь к страницам справочника
- &man.portaudit.1; и &man.periodic.8;.</para>
- </warning>
-
- <para>Использование Коллекции Портов предполагает наличие работающего
- подключения к Интернет. В противном случае вам придется раздобыть
- и поместить копию дистрибутивного файла в каталог
- <filename>/usr/ports/distfiles</filename> вручную.</para>
-
- <para>Первым делом переместитесь в каталог устанавливаемого
- порта:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput></screen>
-
- <para>Для компиляции (или построения &mdash; <quote>build</quote>)
- порта наберите команду <command>make</command>. Вы должны увидеть
- вывод команды, подобный следующему:</para>
-
- <screen>&prompt.root; <userinput>make</userinput>
-&gt;&gt; lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
-&gt;&gt; Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
-===&gt; Extracting for lsof-4.57
-...
-[вывод команды при распаковке опущен]
-...
-&gt;&gt; Checksum OK for lsof_4.57D.freebsd.tar.gz.
-===&gt; Patching for lsof-4.57
-===&gt; Applying FreeBSD patches for lsof-4.57
-===&gt; Configuring for lsof-4.57
-...
-[вывод команды при конфигурации опущен]
-...
-===&gt; Building for lsof-4.57
-...
-[вывод команды при компиляции опущен]
-...
-&prompt.root;</screen>
-
- <para>По завершении компиляции вы снова вернетесь к приглашению
- командного процессора. Следующим шагом является установка порта
- при помощи
- <command>make install</command>:</para>
-
- <screen>&prompt.root; <userinput>make install</userinput>
-===&gt; Installing for lsof-4.57
-...
-[вывод команды при установке опущен]
-...
-===&gt; Generating temporary packing list
-===&gt; Compressing manual pages for lsof-4.57
-===&gt; Registering installation for lsof-4.57
-===&gt; SECURITY NOTE:
- This port has installed the following binaries which execute with
- increased privileges.
-&prompt.root;</screen>
-
- <para>На этом этапе, получив приглашение оболочки, вы уже можете
- запустить установленное приложение. Так как
- <command>lsof</command> является программой, которая запускается с
- повышенными правами, выдаётся предупреждение о безопасности. Во
- время построения и установки портов следует обращать внимание на любые
- возникающие предупреждения.</para>
-
- <para>Хорошей идеей является удаление рабочего подкаталога, содержащего
- временные файлы, использовавшиеся во время компиляции. Такое
- действие помогает беречь дисковое пространство и минимизирует
- вероятность возникновения проблем в дальнейшем, при обновлении
- до более новой версии порта.</para>
-
- <screen>&prompt.root; <userinput>make clean</userinput>
-===&gt; Cleaning for lsof-4.57
-&prompt.root;</screen>
-
- <note>
- <para>Вы можете сэкономить два лишних шага, просто выдав команду
- <command>make install clean</command>
- вместо <command>make</command>,
- <command>make install</command> и
- последующей <command>make clean</command>
- в трех отдельных шагах.</para>
- </note>
-
- <note>
- <para>Установка порта единственной командой
- <command>make install</command> чревата
- возможными частыми остановками процесса инсталляции из-за
- ожидания вмешательства пользователя: некоторым портам требуется
- ввод опций. Чтобы избежать траты времени, особенно для портов
- с многими зависимостями, запустите сначала
- <command>make config-recursive</command>
- чтобы выполнить конфигурирование всех опций за один заход.
- Далее, запустите <command>make
- install [clean]</command>.</para>
- </note>
-
- <tip>
- <para>Когда используется <buildtarget>config-recursive</buildtarget>,
- перечень подлежащих настройке портов собирается целью
- <buildtarget>all-depends-list</buildtarget> команды &man.make.1;.
- Часто рекомендуется повторять запуск
- <command>make config-recursive</command>
- до тех пор, пока не будут определены все опции зависимых портов,
- а меню &man.dialog.1; выбора опций портов появляться перестанут.
- При этом можно быть уверенным, что все опции были настроены как
- и намеревалось.</para>
- </tip>
-
- <note>
- <para>Некоторые командные процессоры для ускорения поиска исполняемых
- файлов и команд кэшируют имена программ, доступных для
- вызова из каталогов, перечисленных в переменной окружения
- <envar>PATH</envar>. Если вы используете <command>tcsh</command>,
- то вам может потребоваться набрать <command>rehash</command>,
- после чего свежеустановленную программу можно будет вызывать
- без указания полного пути. Для командного интерпретатора
- <command>sh</command> выполните
- <command>hash -r</command>. Дополнительную информацию можно найти
- в документации к вашему командному процессору.</para>
- </note>
-
- <para>В некоторых имеющихся в продаже комплектах DVD от третьих лиц,
- таких как the FreeBSD Toolkit от
- <link xlink:href="http://www.freebsdmall.com/">FreeBSD Mall</link>,
- содержатся дистрибутивные файлы (distfiles). Их можно использовать
- с Коллекцией Портов. Смонтируйте DVD в <filename>/cdrom</filename>.
- Если вы используете иную точку монтирования, укажите её в переменной
- &man.make.1; <varname>CD_MOUNTPTS</varname>. Если необходимые для
- построения порта дистрибутивные файлы находятся на диске, то они будут
- задействованы автоматически.</para>
-
- <note>
- <para>Лицензии некоторых портов не позволяют помещать их на DVD.
- Причиной тому может служить обязательность заполнения регистрационной
- формы перед загрузкой, или запрет на дальнейшее распространение.
- Если вы хотите установить порт, которого нет на DVD, вам нужно
- иметь подключение к Интернет.</para>
- </note>
-
- <para>Для загрузки файлов система портов использует утилиту
- &man.fetch.1;, которая проверяет значения некоторых переменных
- окружения, включая <envar>FTP_PASSIVE_MODE</envar>,
- <envar>FTP_PROXY</envar> и <envar>FTP_PASSWORD</envar>. Если вы
- находитесь за сетевым экраном или для работы с FTP/HTTP вам
- необходимо использовать прокси, то определите соответствующие
- переменные. Обратитесь к справочной странице по &man.fetch.3; для
- получения полного списка переменных.</para>
-
- <para>Пользователям, которые не могут быть постоянно подключены
- к сети, поможет команда
- <command>make fetch</command>.
- Запустите эту команду в каталоге <filename>/usr/ports</filename>,
- и требуемые файлы будут загружены. Эта команда также работает и с
- вложенными категориями, например: <filename>/usr/ports/net</filename>.
- Заметьте, что если порт имеет зависимости от библиотек или других
- портов, то команда <emphasis>не будет</emphasis> загружать
- дистрибутивные файлы для зависимых портов. Для загрузки всех
- зависимых дистрибутивных файлов задействуйте команду <command>make
- fetch-recursive</command>.</para>
-
- <note>
- <para>Вы можете построить все порты в категории за раз, запустив
- команду <command>make</command> в каталоге верхнего уровня.
- Однако это опасно, так как некоторые порты не могут сосуществовать.
- В других случаях некоторые порты могут устанавливать два различных
- файла с одним и тем же именем.</para>
- </note>
-
- <para>В некоторых редких случаях пользователям необходимо получить
- tar-архивы с сайтов, отличающихся от указанных по умолчанию в
- <varname>MASTER_SITES</varname>. Вы можете переопределить значение
- <varname>MASTER_SITES</varname> посредством следующей команды:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/ports/<replaceable>directory</replaceable></userinput>
-&prompt.root; <userinput>make MASTER_SITE_OVERRIDE= \
-ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen>
-
- <para>В этом примере значение переменной <varname>MASTER_SITES</varname>
- изменено на <systemitem class="fqdomainname">ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/</systemitem>.</para>
-
- <note>
- <para>Некоторые порты позволяют указывать опции, которые включают
- или выключают построение отдельных частей приложения, изменяют
- некоторые параметры безопасности, а также задают прочие настройки.
- Примерами таких портов могут служить:
- <package>www/firefox</package>,
- <package>security/gpgme</package> и
- <package>mail/sylpheed-claws</package>.
- Если для порта существуют опции компиляции, то перед началом
- построения будет отображено меню.</para>
- </note>
-
- <sect3>
- <title>Переназначение рабочего и целевого каталогов</title>
-
- <para>При помощи переменных <varname>WRKDIRPREFIX</varname> и
- <varname>PREFIX</varname> можно переопределить назначаемые по
- умолчанию рабочий и целевой каталоги. Например:</para>
-
- <screen>&prompt.root; <userinput>make WRKDIRPREFIX=/usr/home/example/ports install</userinput></screen>
-
- <para>будет компилировать порт в каталоге
- <filename>/usr/home/example/ports</filename>, а установит всё в
- <filename>/usr/local</filename>.</para>
-
- <screen>&prompt.root; <userinput>make PREFIX=/usr/home/example/local install</userinput></screen>
-
- <para>будет компилировать порт в каталоге
- <filename>/usr/ports</filename>, а установит в
- <filename>/usr/home/example/local</filename>.</para>
-
- <para>И, конечно же,</para>
-
- <screen>&prompt.root; <userinput>make WRKDIRPREFIX=../ports PREFIX=../local install</userinput></screen>
-
- <para>использует обе возможности.</para>
-
- <para>Альтернативным способом является задание этих каталогов в
- переменных окружения. Обратитесь к страницам справки по вашему
- командному процессору для получения инструкций о том, как установить
- переменные окружения.</para>
- </sect3>
-
- <sect3>
- <title>Повторная настройка опций портов</title>
-
- <para>Некоторые порты предоставляют ncurses-меню, содержащее опции
- построения. Будучи однажды успешно определены, опции сохраняются,
- и при повторном построении порта меню не вызывается. Для изменения
- сохраненных опций существует несколько способов повторного вызова
- меню. Один из них &mdash; зайти в каталог порта и набрать
- <command>make config</command>.
- Второй способ &mdash; запустить команду
- <command>make showconfig</command>.
- Еще один способ &mdash; выполнить команду
- <command>make rmconfig</command>,
- которая удалит все ранее отмеченные опции и позволит вам начать
- конфигурирование сначала. Эти и другие способы детально описаны
- на странице &man.ports.7;.</para>
- </sect3>
- </sect2>
-
- <sect2 xml:id="ports-removing">
- <title>Удаление установленных портов</title>
-
- <indexterm>
- <primary>порты</primary>
-
- <secondary>удаление</secondary>
- </indexterm>
-
- <para>Установленные порты и пакеты удаляются при помощи команды
- &man.pkg.delete.1;:</para>
-
- <screen>&prompt.root; <userinput>pkg_delete lsof-4.57</userinput></screen>
- </sect2>
-
- <sect2 xml:id="ports-upgrading">
- <title>Обновление портов</title>
-
- <indexterm>
- <primary>порты</primary>
-
- <secondary>обновление</secondary>
- </indexterm>
-
- <para>Прежде всего, при помощи &man.pkg.version.1; просмотрите,
- нет ли в Коллекции Портов более новых версий установленных
- приложений:</para>
-
- <screen>&prompt.root; <userinput>pkg_version -v</userinput></screen>
-
- <sect3 xml:id="ports-file-updating">
- <title>Прочитайте <filename>/usr/ports/UPDATING</filename></title>
-
- <para>После обновления Коллекции Портов, и перед тем, как обновить
- приложение из порта, сверьтесь с файлом
- <filename>/usr/ports/UPDATING</filename>. В нем дана информация
- по различным вопросам и дополнительным шагам, которые
- могут быть необходимы для обновления порта, включая информацию
- о таких вещах как изменения форматов файлов, изменения
- в расположении конфигурационных файлов, или другие нестыковки
- с предыдущими версиями.</para>
-
- <para>Если <filename>UPDATING</filename> противоречит чему-либо,
- написанному в этом документе, то доверьтесь информации из
- <filename>UPDATING</filename>.</para>
- </sect3>
-
- <sect3 xml:id="portupgrade">
- <title>Обновление Портов при помощи Portupgrade</title>
-
- <indexterm>
- <primary>portupgrade</primary>
- </indexterm>
-
- <para>Утилита <application>portupgrade</application> создана для
- простого обновления установленных портов. Она доступна из порта
- <package>ports-mgmt/portupgrade</package>.
- Установите её как и любой иной порт при помощи команды
- <command>make install clean</command>:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/ports/ports-mgmt/portupgrade</userinput>
-&prompt.root; <userinput>make install clean</userinput></screen>
-
- <para>Проверьте перечень установленных портов командой
- <command>pkgdb -F</command> и устраните все несоответствия, о которых
- сообщит утилита. Хорошей идеей является выполнение этого действия
- регулярно, перед каждым обновлением.</para>
-
- <para>Используйте <command>portupgrade -a</command> для обновления
- всех устаревших портов, установленных в вашей системе. Добавьте
- флаг <option>-i</option> если вы желаете получать запрос
- на каждый обновляемый порт.</para>
-
- <screen>&prompt.root; <userinput>portupgrade -ai</userinput></screen>
-
- <para>Для обновления конкретного приложения, а не всех
- установленных портов, запустите <command>portupgrade
- <replaceable>pkgname</replaceable></command>. Включите флаг
- <option>-R</option> при необходимости обновить все порты, требуемые
- данным приложением.</para>
-
- <screen>&prompt.root; <userinput>portupgrade -R firefox</userinput></screen>
-
- <para>Для использования при установке пакетов, а не портов, укажите
- флаг <option>-P</option>. С этим параметром
- <application>portupgrade</application> будет искать пакеты в
- локальных каталогах, указанных в переменной окружения
- <envar>PKG_PATH</envar>, а если не найдет их, то загрузит с
- удаленного сайта. Если пакеты не могут быть найдены локально
- или загружены удаленно, <application>portupgrade</application>
- использует порты. Чтобы запретить использование портов,
- укажите <option>-PP</option>.</para>
-
- <screen>&prompt.root; <userinput>portupgrade -PP gnome2</userinput></screen>
-
- <para>Для простой загрузки дистрибутивных файлов без построения или
- установки чего бы то ни было, задайте флаг <option>-F</option>.
- Дополнительную информацию можно получить на странице справки по
- утилите &man.portupgrade.1;.</para>
- </sect3>
-
- <sect3 xml:id="portmaster">
- <title>Обновление портов при помощи
- <application>portmaster</application></title>
-
- <indexterm>
- <primary>portmaster</primary>
- </indexterm>
-
- <para>Утилита <package>ports-mgmt/portmaster</package> &mdash; это еще один
- инструмент для обновления установленных портов. Утилита
- <application>portmaster</application> опирается на возможности
- <quote>базовой</quote> системы и не зависит от других портов.
- Она использует информацию из <filename>/var/db/pkg/</filename> для определения портов,
- подлежащих обновлению. Для установки утилиты выполните
- следующее:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/ports/ports-mgmt/portmaster</userinput>
-&prompt.root; <userinput>make install clean</userinput></screen>
-
- <para><application>Portmaster</application> делит порты
- на четыре категории:</para>
-
- <itemizedlist>
- <listitem>
- <para>Корневые порты: не зависят от других портов и нет портов,
- зависимых от корневых;</para>
- </listitem>
-
- <listitem>
- <para>Стволовые порты: не зависят от других портов, но есть
- порты, зависящие от стволовых;</para>
- </listitem>
-
- <listitem>
- <para>Веточные порты: зависят от других портов и есть порты,
- зависящие от веточных;</para>
- </listitem>
-
- <listitem>
- <para>Листьевые порты: зависят от других портов, но нет портов,
- зависящих от листьевых.</para>
- </listitem>
- </itemizedlist>
-
- <para>Чтобы проверить наличие обновлений для всех установленных
- портов, задайте утилите флаг <option>-L</option>:</para>
-
- <screen>&prompt.root; <userinput>portmaster -L</userinput>
-===&gt;&gt;&gt; Root ports (No dependencies, not depended on)
-===&gt;&gt;&gt; ispell-3.2.06_18
-===&gt;&gt;&gt; screen-4.0.3
- ===&gt;&gt;&gt; New version available: screen-4.0.3_1
-===&gt;&gt;&gt; tcpflow-0.21_1
-===&gt;&gt;&gt; 7 root ports
-...
-===&gt;&gt;&gt; Branch ports (Have dependencies, are depended on)
-===&gt;&gt;&gt; apache-2.2.3
- ===&gt;&gt;&gt; New version available: apache-2.2.8
-...
-===&gt;&gt;&gt; Leaf ports (Have dependencies, not depended on)
-===&gt;&gt;&gt; automake-1.9.6_2
-===&gt;&gt;&gt; bash-3.1.17
- ===&gt;&gt;&gt; New version available: bash-3.2.33
-...
-===&gt;&gt;&gt; 32 leaf ports
-
-===&gt;&gt;&gt; 137 total installed ports
- ===&gt;&gt;&gt; 83 have new versions available</screen>
-
- <para>Все установленные порты могут быть обновлены при помощи одной
- команды:</para>
-
- <screen>&prompt.root; <userinput>portmaster -a</userinput></screen>
-
- <note>
- <para>По умолчанию, <application>portmaster</application> создаст
- дублирующий пакет перед удалением установленного порта. Если
- обновление порта прошло успешно,
- <application>portmaster</application> удалит дублирующий пакет.
- При помощи опции <option>-b</option> можно проинструктировать
- <application>portmaster</application> не выполнять автоматическое
- удаление дублирующего пакета. Указание опции <option>-i</option>
- запустит <application>portmaster</application> в интерактивном
- режиме, запрашивающим подтверждение пользователя перед
- обновлением каждого порта.</para>
- </note>
-
- <para>Если во время процесса обновления возникнут ошибки,
- задействуйте опцию <option>-f</option> для обновления/перестройки
- всех портов:</para>
-
- <screen>&prompt.root; <userinput>portmaster -af</userinput></screen>
-
- <para>Также, <application>portmaster</application> может быть
- задействован для установки новых портов в систему, автоматически
- обновляя другие зависимые порты перед построением и установкой
- нового порта:</para>
-
- <screen>&prompt.root; <userinput>portmaster <replaceable>shells/bash</replaceable></userinput></screen>
-
- <para>За подробной информацией обратитесь к &man.portmaster.8;.</para>
- </sect3>
- </sect2>
-
- <sect2 xml:id="ports-disk-space">
- <title>Порты и дисковое пространство</title>
-
- <indexterm>
- <primary>ports</primary>
-
- <secondary>disk-space</secondary>
- </indexterm>
-
- <para>Работа с Коллекцией Портов со временем приводит к увеличению
- занимаемого дискового пространства. После построения и установки
- программы из порта удалите временный каталог <filename>work</filename> при помощи команды
- <command>make clean</command>. Для
- очистки всей Коллекции Портов наберите:</para>
-
- <screen>&prompt.root; <userinput>portsclean -C</userinput></screen>
-
- <para>По прошествии некоторого времени у вас соберется множество
- дистрибутивных файлов в каталоге <filename>distfiles</filename>. Следующая команда удалит все
- дистрибутивные файлы, которые более не связаны ни с какими
- портами:</para>
-
- <screen>&prompt.root; <userinput>portsclean -D</userinput></screen>
-
- <para>Для удаления всех дистрибутивных файлов, не связанных ни с
- одним установленным в вашу систему портом, наберите:</para>
-
- <screen>&prompt.root; <userinput>portsclean -DD</userinput></screen>
-
- <note>
- <para>Утилита <command>portsclean</command> является частью порта
- <package>ports-mgmt/portupgrade</package>.</para>
- </note>
-
- <para>Удобная утилита для автоматизации удаления портов, в которых вы
- более не нуждаетесь, доступна из порта
- <package>ports-mgmt/pkg_cutleaves</package>.</para>
- </sect2>
- </sect1>
-
- <sect1 xml:id="ports-nextsteps">
- <title>Действия после установки</title>
-
- <para>После установки нового приложения вам обычно требуется прочесть
- любую имеющуюся документацию, отредактировать необходимые
- конфигурационные файлы и убедиться, что приложение запускается во время
- загрузки системы.</para>
-
- <para>Очевидно, что шаги, в точности требуемые для конфигурации каждого
- приложения, отличаются. Однако, если если вы только что установили
- новое приложение и вам интересно, <quote>Что же дальше?</quote>, то вам
- могут помочь следующие советы:</para>
-
- <itemizedlist>
- <listitem>
- <para>Воспользуйтесь командой &man.pkg.info.1; для определения того,
- куда и какие файлы были установлены. К примеру, если вы только что
- установили FooPackage версии 1.0.0, то по команде</para>
-
- <screen>&prompt.root; <userinput>pkg_info -L foopackage-1.0.0 | less</userinput></screen>
-
- <para>будет выведен список всех файлов, установленных пакетом.
- Обратите особое внимание на файлы, установленные в каталоги
- <filename>man/</filename>, которые являются справочными страницами,
- <filename>etc/</filename>, которые являются конфигурационными
- файлами, и <filename>doc/</filename>, которые являются более
- полной документацией.</para>
-
- <para>Чтобы определить, какая версия приложения была установлена,
- выполните:</para>
-
- <screen>&prompt.root; <userinput>pkg_info | grep -i <replaceable>foopackage</replaceable></userinput></screen>
-
- <para>команда выведет список всех установленных пакетов, в названии
- которых присутствует <replaceable>foopackage</replaceable>.
- Замените <replaceable>foopackage</replaceable> на искомый фрагмент
- текста.</para>
- </listitem>
-
- <listitem>
- <para>Как только вы определите, куда были установлены справочные
- страницы приложения, просмотрите их при помощи команды &man.man.1;.
- Просмотрите примеры конфигурационных файлов, а также любую
- дополнительную документацию, если она была установлена.</para>
- </listitem>
-
- <listitem>
- <para>Если у приложения имеется веб-сайт, поищите там дополнительную
- документацию, ответы на часто задаваемые вопросы и так далее. Если
- вы не уверены, каков адрес веб-сайта, он может быть указан в выводе
- команды</para>
-
- <screen>&prompt.root; <userinput>pkg_info <replaceable>foopackage-1.0.0</replaceable></userinput></screen>
-
- <para>Строка <literal>WWW:</literal>, если она есть, должна содержать
- URL Web-сайта приложения.</para>
- </listitem>
-
- <listitem>
- <para>Как правило, порты приложений, которые должны запускаться при
- загрузке системы, устанавливают стартовые скрипты в каталог
- <filename>/usr/local/etc/rc.d</filename>. Просмотрите скрипт на
- предмет его корректности и, если необходимо, отредактируйте или
- переименуйте его. Обратитесь к разделу о
- <link linkend="configtuning-starting-services">Запуске
- сервисов</link> за более подробной информацией.</para>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1 xml:id="ports-broken">
- <title>Обработка нерабочих портов</title>
-
- <para>Если вы встретили порт, который не компилируется:</para>
-
- <orderedlist>
- <listitem>
- <para>Выясните, нет ли для порта решения проблемы в
- <link xlink:href="&url.base;/support.html#gnats">Problem Report
- database</link>. Если оно есть, то вы можете воспользоваться
- предложенным решением.</para>
- </listitem>
-
- <listitem>
- <para>Попросите помощи у мейнтейнера порта. Чтобы найти его адрес
- наберите команду
- <command>make maintainer</command> или
- просмотрите <filename>Makefile</filename>.
- Не забудьте указать имя и версию порта (скопировав строчку
- <literal>&dollar;FreeBSD:</literal> из файла
- <filename>Makefile</filename>) и включите в письмо весь
- вывод, предшествующий возникновению ошибки.</para>
-
- <note>
- <para>Некоторые порты поддерживаются группой людей из
- <link xlink:href="&url.articles.mailing-list-faq;/article.html">списка
- рассылки</link>, а не отдельными людьми. В большинстве таких
- случаев адрес мейнтейнера выглядит подобно следующему: <email role="nolink">freebsd-listname@FreeBSD.org</email>. Пожалуйста,
- учтите это при формулировании ваших вопросов.</para>
-
- <para>В частности, если мейнтейнер порта &mdash; <email role="nolink">ports@FreeBSD.org</email>, то такой порт вообще никем
- не поддерживается. Решение проблем и поддержка, если и имеют
- место, то приходят от общества, которое подписано на тот список
- рассылки. Волонтёры требуются всегда!</para>
- </note>
-
- <para>Если вы не получили ответ, то воспользуйтесь командой
- &man.send-pr.1; для посылки сообщения о проблеме (изучите <link xlink:href="&url.articles.problem-reports;/article.html">составление
- сообщений о проблеме во &os;</link>).</para>
- </listitem>
-
- <listitem>
- <para>Исправьте его! В <link xlink:href="&url.books.porters-handbook;/index.html">Руководстве по созданию
- портов</link> содержится подробная информация об инфраструктуре
- портов, так что вы сможете исправить редкий неработающий порт
- или даже предложить свой собственный!</para>
- </listitem>
-
- <listitem>
- <para>Воспользуйтесь &man.pkg.add.1; и установите пакет вместо
- порта.</para>
- </listitem>
- </orderedlist>
- </sect1>
-</chapter>