<!--
     The FreeBSD Russian Documentation Project

     $FreeBSD$
     $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/ports/chapter.sgml,v 1.66 2005/01/02 15:02:22 den Exp $

     Original revision: 1.233
-->

<chapter id="ports">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Андрей</firstname>
	<surname>Захватов</surname>
	<contrib>Перевод на русский язык: </contrib>
      </author>
    </authorgroup>
  </chapterinfo>
  <title>Установка приложений: порты и пакеты</title>

  <sect1 id="ports-synopsis">
    <title>Обзор</title>

    <indexterm><primary>порты</primary></indexterm>

    <indexterm><primary>пакеты</primary></indexterm>

    <para>Вместе с FreeBSD в составе базового комплекта системы поставляется
      богатый набор системный утилит.  Однако для выполнения какой-то
      реальной работы очень скоро возникает необходимость в установке
      дополнительных приложений сторонних разработчиков.  FreeBSD даёт две
      взаимодополняющих технологии для установки программного обеспечения
      сторонних разработчиков в вашу систему: Коллекция Портов FreeBSD и
      бинарные пакеты с программным обеспечением.  Любая из этих систем может
      быть использована для установки самых последних версий ваших любимых
      приложений с локальных носителей или прямо из сети.</para>

    <para>После чтения этой главы вы будете знать:</para>

    <itemizedlist>
      <listitem>
        <para>Как устанавливать бинарные пакеты с программным обеспечением
          сторонних разработчиков.</para>
      </listitem>

      <listitem>
	<para>Как собирать программное обеспечение сторонних разработчиков при
          помощи коллекции портов.</para>
      </listitem>

      <listitem>
	<para>Как удалять ранее установленные пакеты или порты.</para>
      </listitem>

      <listitem>
        <para>Как переопределить значения, используемые по умолчанию в
          коллекции портов.</para>
      </listitem>

      <listitem>
        <para>Как обновить ваши порты.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 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>И это только всё проходит нормально.  Если вы устанавливаете
      программный пакет, который был специально перенесён на FreeBSD, то вам
      может даже потребоваться редактировать код для того, чтобы он нормально
      заработал.</para>

    <para>Если вы хотите, то можете продолжать устанавливать программное
      обеспечение во FreeBSD <quote>традиционным</quote> способом.  Однако
      FreeBSD предоставляет две технологии, которые могут сохранить вам много
      усилий: пакеты и порты.  На момент написания таким образом были
      доступны более &os.numports; сторонних приложений.</para>

    <para>Для любого конкретно взятого приложения пакет FreeBSD
      является одним файлом, который вы должны загрузить.  Пакет
      содержит уже откомпилированные копии всех команд приложения, а также
      все конфигурационные файлы и документацию.  Загруженным файлом пакета
      можно управлять такими командами FreeBSD, как
      &man.pkg.add.1; &man.pkg.delete.1;, &man.pkg.info.1; и так далее.
      Установка нового приложения может выполняться единственной
      командой.</para>

    <para>Порт FreeBSD для приложения является набором файлов, предназначенных
      для автоматизации процесса компиляции приложения из исходного
      кода.</para>

    <para>Вспомните, что обычно вы должны выполнить некоторое количество
      шагов, если компилируете программу самостоятельно (загрузка, распаковка,
      изменение кода, компиляция, установка).  Файлы, составляющие порт,
      содержат всю информацию, необходимую для того, чтобы система сделала это
      за вас.  Вы задаёте пару простых команд, и исходный код приложения
      автоматически загружается, распаковывается, модифицируется, компилируется
      и устанавливается.</para>

    <para>Действительно, система портов может также использоваться для
      генерации пакетов, которые позже могут управляться командой
      <literal>pkg_add</literal> и другими командами управления пакетами, о
      которых скоро будет рассказано.</para>

    <para>Как пакеты, так и порты принимают во внимание
      <emphasis>зависимости</emphasis>.  Предположим, что вы хотите установить
      приложение, которое зависит от некоторой установленной библиотеки.  И
      приложение, и библиотека доступны во FreeBSD в виде портов и пакетов.
      Если вы используете команду <command>pkg_add</command> или систему
      портов для добавления приложений, то в обоих случаях будет обнаружено,
      что библиотека не была установлена, и сначала будет автоматически
      выполнена установка библиотеки.</para>

    <para>Видя, что обе технологии весьма похожи, вы можете удивиться, почему
      во FreeBSD используются обе.  И пакеты, и порты имеют свои
      преимущества, так что выбор используемой вами системы зависит от ваших
      собственных предпочтений.</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>Пакеты не требуют понимания процесса компиляции
          программного обеспечения во FreeBSD.</para>
      </listitem>
    </itemizedlist>

    <itemizedlist>
      <title>Преимущества портов</title>

      <listitem>
        <para>Пакеты обычно компилируются с консервативными параметрами,
          потому что они должны работать на максимальном количестве систем.
          При установке из порта вы можете изменять параметры компиляции для
          того, чтобы (к примеру) генерировался код, специфичный для
          процессора Pentium IV или Athlon.</para>
      </listitem>

      <listitem>
        <para>Некоторые приложения имеют опции времени компиляции, связанные с
          тем, что они могут или не могут делать.  К примеру,
          <application>Apache</application> может быть настроен с широким
          набором различных опций.  При построении из порта вы можете не
          принимать параметры по умолчанию, и задать их самостоятельно.</para>

        <para>В некоторых случаях для одного и того же приложения будут
          иметься несколько пакетов для указания конкретных настроек.
          Например, <application>Ghostscript</application> имеется как пакет
          <filename>ghostscript</filename> и как пакет
          <filename>ghostscript-nox11</filename>, в зависимости от того,
          установили вы сервер X11 или нет.  Такой тип грубой настройки
          возможен при использовании пакетов, но быстро становится
          недостижим, если приложение имеет более одного или двух параметров
          компиляции.</para>
      </listitem>

      <listitem>
        <para>Условия лицензирования некоторых дистрибутивов программного
          обеспечения запрещает распространение в двоичном виде.  Они должны
          распространяться в виде исходного кода.</para>
      </listitem>

      <listitem>
        <para>Некоторые не доверяют дистрибутивам в двоичном виде.  При
	  использовании исходного кода вы (по крайней мере теоретически)
          можете прочесть его и попытаться найти потенциальные проблемы
          самостоятельно.</para>
      </listitem>

      <listitem>
        <para>Если у вас есть собственные патчи, вам нужен исходный код для
          того, чтобы их применять.</para>
      </listitem>

      <listitem>
        <para>Некоторым нравится иметь исходный код, чтобы его можно было
          просматривать и править, заимствовать из него (конечно, при
	  разрешающем это лицензионном соглашении)
	  и тому подобное.</para>
      </listitem>
    </itemizedlist>

    <para>Чтобы отслеживать обновления портов, подпишитесь на
      &a.ports; и &a.ports-bugs;.</para>

    <warning>
      <para>Перед установкой любого приложения необходимо зайти на <ulink
	url="http://vuxml.freebsd.org/"></ulink>, где находится информация
	по вопросам безопасности приложений.</para>

      <para>Вы можете также установить <filename
	role="package">security/portaudit</filename>, который автоматически
	проверит все установленные приложения на наличие известных
	уязвимостей, проверка также будет выполняться перед сборкой
	какого-либо порта.  Вы можете использовать <command>portaudit
	-F -a</command> и после установки пакетов.</para>
    </warning>

    <para>В оставшейся части главы будет рассказано, как использовать пакеты
      и порты для установки и управления программным обеспечением сторонних
      разработчиков во FreeBSD.</para>
  </sect1>

  <sect1 id="ports-finding-applications">
    <title>Поиск нужного вам приложения</title>

    <para>Перед тем, как устанавливать какое-либо приложение, вам нужно знать,
      что вы хотите и как называется нужное вам приложение.</para>

    <para>Список имеющихся для FreeBSD приложений постоянно растёт.  К счастью,
      есть несколько способов найти то, что вам нужно:</para>

    <itemizedlist>
      <listitem>
        <para>На сайте FreeBSD поддерживается обновляемый список имеющихся
          приложений для FreeBSD, в котором можно выполнять поиск, по адресу
          <ulink url="&url.base;/ports/index.html">
          http://www.FreeBSD.org/ports/</ulink>.  Порты разбиты на категории,
          и вы можете либо выполнить поиск приложения по имени (если его
          знаете), либо просмотреть список всех приложений, относящихся к
          определённой категории.</para>
      </listitem>

      <indexterm><primary>FreshPorts</primary></indexterm>

      <listitem>
        <para>Dan Langille поддерживает сайт FreshPorts по адресу <ulink
          url="http://www.FreshPorts.org/"></ulink>.
          На нём отслеживаются изменения в приложениях из дерева портов, как
          только они происходят, он позволяет вам <quote>отслеживать</quote>
          один или несколько портов, и может высылать оповещение по электронной
          почте при их обновлении.</para>
      </listitem>

      <indexterm><primary>FreshMeat</primary></indexterm>

      <listitem>
        <para>Если вы не знаете названия нужного вам приложения, попытайтесь
          воспользоваться сайтом типа FreshMeat (<ulink
          url="http://www.freshmeat.net/"></ulink>)
          для поиска приложения, а затем возвратитесь на сайт FreeBSD, чтобы
          проверить, есть ли порт для этого приложения.</para>
      </listitem>

      <listitem>
	<para>Если вы знаете точное имя порта, и хотите определить, в какой
	  категории он находится, используйте команду &man.whereis.1;.
	  Просто наберите в приглашении <quote><command>whereis
	  <replaceable>file</replaceable></command></quote>,
	  где <replaceable>file</replaceable> - программа,
	  которую вы хотите установить. И если она имеется в системе,
	  об этом будет сообщено, как показано ниже:</para>

	<screen>&prompt.root; <userinput>whereis lsof</userinput>
lsof: /usr/ports/sysutils/lsof</screen>

	<para>Это говорит о том, что <command>lsof</command> (системная
	  утилита) находится в каталоге
	  <filename>/usr/ports/sysutils/lsof</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>

	<para>Вам следует обратить особое внимание на строчку
	  <quote>Path:</quote>, так как в ней указывается, где найти порт.
	  Остальная сообщаемая информация для установки порта не
	  нужна, поэтому здесь она описываться не будет.</para>

	<para>Для выполнения более глубокого поиска вы можете также использовать
	  <command>make search key=<replaceable>string</replaceable></command>,
	  где <replaceable>string</replaceable>
	  представляет собой некоторый текст, относящийся к искомому
	  порту.  При этом будет
	  выполнен поиск в именах портов, комментариях, описаниях и
	  зависимостях, и его можно использовать для поиска портов, связанных с
	  некоторой темой, если вы не знаете названия программы, которую вы
	  ищете.</para>

	<para>В обоих этих случаях строка поиска нечувствительна к регистру.
	  Поиск <quote>LSOF</quote> приводит к тому же самому результату, что и
	  поиск <quote>lsof</quote>.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="packages-using">
    <sect1info>
      <authorgroup>
        <author>
          <firstname>Chern</firstname>
          <surname>Lee</surname>
          <contrib>Текст предоставил </contrib>
        </author>
      </authorgroup>

      <!-- 30 марта 2001 -->
    </sect1info>

    <title>Использование системы пакетов</title>

    <sect2>
      <title>Установка пакета</title>

      <indexterm>
        <primary>пакеты</primary>
        <secondary>установка</secondary>
      </indexterm>

      <indexterm>
        <primary><command>pkg_add</command></primary>
      </indexterm>

      <para>Для установки пакетов программного обеспечения для FreeBSD из
        локальных файлов или с сервера в сети вы можете использовать утилиту
        &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></prompt> <userinput>cd /pub/FreeBSD/ports/packages/sysutils/</userinput>
250 CWD command successful.
<prompt>ftp></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></prompt> <userinput>exit</userinput>
&prompt.root; <userinput>pkg_add <replaceable>lsof-4.56.4.tgz</replaceable></userinput></screen>
      </example>

      <para>Если у вас нет исходных текстов локальных пакетов (например,
        набор CD-ROM с FreeBSD), то проще всего, наверное, воспользоваться
        опцией <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>.
        При использовании функций загрузки с сети номер версии в имени пакета
        должен быть опущен.  Утилита &man.pkg.add.1; автоматически загрузит
        последнюю версию приложения.</para>

      <para>Файлы пакетов распространяются в форматах
        <filename>.tgz</filename> и <filename>.tbz</filename>.  Вы можете найти
        их по адресу <ulink
        url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages"></ulink> или
        взять с дистрибутива FreeBSD на CD-ROM.  Каждый CD из комплекта
        FreeBSD на 4 дисках (а также PowerPak и тому подобное) содержит
        пакеты в каталоге <filename>/packages</filename>.  Расположение
        пакетов похоже на то, как организовано дерево
        <filename>/usr/ports</filename>.  Каждая категория имеет собственный
        каталог, и каждый пакет помещается в каталог
        <filename>All</filename>.</para>

      <para>Структура каталогов системы пакетов соответствует структуре
        системы портов; они взаимодействуют друг с другом для формирования
        единой системы пакетов/портов.</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>
cvsup-16.1          A general network file distribution system optimized for CV
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>
cvsup                       =
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>
          </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>
    </sect2>

    <sect2>
      <title>Разное</title>

      <para>Вся информация о пакете хранится в каталоге
        <filename>/var/db/pkg</filename>.  Список установленных файлов и
        описания всех пакетов могут быть найдены среди файлов этого
        каталога.</para>
    </sect2>
  </sect1>  

  <sect1 id="ports-using">
    <title>Использование Коллекции Портов</title>

    <para>В этих разделах описаны основные приемы использования коллекции
      портов для установки и удаления программ из вашей системы.</para>

    <sect2 id="ports-tree">
      <title>Получение Коллекции Портов</title>

      <para>Перед тем, как вы сможете устанавливать порты,
	установите коллекцию портов &mdash; она представляет собой в основном
        набор файлов <filename>Makefile</filename>, патчей, файлов описаний, и
	размещается в каталоге <filename>/usr/ports</filename>.</para>

      <para>При установке системы FreeBSD утилита
        <application>sysinstall</application> запрашивает, требуется ли вам
        установка коллекции портов.  Если вы ответили отрицательно,
        для установки коллекции портов следуйте нижеприведенной
	инструкции:</para>

      <procedure>
	<title>Метод с использованием Sysinstall</title>

	<para>В этом методе повторно используется
          <application>sysinstall</application>
	  (<command>/stand/sysinstall</command> в &os;
	  версий ниже, чем 5.2) для ручной установки коллекции
          портов.</para>

	<step>
	  <para>Работая как пользователь root, запустите
            <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>

      <para>Альтернативный метод получения и постоянной актуализации
	коллекции портов заключается в использовании
	<application>CVSup</application>.  Посмотрите файл
	<application>CVSup</application> для портов,
	<filename>/usr/share/examples/cvsup/ports-supfile</filename>.
        Прочтите раздел <link linkend="cvsup">Использование CVSup</link>
        (<xref linkend="cvsup">) для получения более полной информации об
        использовании <application>CVSup</application> и этого файла.</para>

      <procedure>
	<title>Метод с использованием CVSup</title>

	<para>Это быстрый способ для получения коллекции портов при помощи
	  <application>CVSup</application>.  Если вы хотите поддерживать ваше
          дерево портов в актуальном состоянии, или узнать больше о
	  <application>CVSup</application>, то прочтите вышеотмеченные
          разделы.</para>

	<step>
	  <para>Установите порт <filename role="package">net/cvsup</filename>.  Обратитесь к разделу
            <link linkend="cvsup-install">Установка CVSup</link> (<xref
	    linkend="cvsup-install">) для получения более подробной
            информации.</para>
	</step>

	<step>
	  <para>Работая как пользователь <username>root</username>, скопируйте
	    <filename>/usr/share/examples/cvsup/ports-supfile</filename> в
            новое место, например, в каталог <filename>/root</filename> или в
	    ваш домашний каталог.</para>
	</step>

	<step>
	  <para>Отредактируйте <filename>ports-supfile</filename>.</para>
	</step>

	<step>
	  <para>Измените <replaceable>CHANGE_THIS.FreeBSD.org</replaceable> на
           близкий к вам сервер <application>CVSup</application>.  Посмотрите
           <link linkend="cvsup-mirrors">Зеркала CVSup</link> (<xref
	   linkend="cvsup-mirrors">) для получения полного списка
           зеркалирующих сайтов.</para>
	</step>

	<step>
	  <para>Запустите
            <command>cvsup</command></para>

	  <screen>&prompt.root; <userinput>cvsup -g -L 2 <replaceable>/root/ports-supfile</replaceable></userinput></screen>
	</step>

	<step>
	  <para>При повторных запусках этой команды все последние изменения
            (кроме реального перестроения портов для вашей системы) будут
            загружаться и переноситься в вашу коллекцию портов.</para>
	</step>
      </procedure>
    </sect2>

    <sect2 id="ports-skeleton">
      <title>Установка портов</title>

      <indexterm>
        <primary>порты</primary>

        <secondary>установка</secondary>
      </indexterm>

      <para>Когда речь заходит о коллекции портов, то первым делом вы должны
        понять, что именно подразумевается под словом <quote>скелет</quote>.
        По сути скелетом порта является минимальный набор файлов, который
        указывает вашей системе FreeBSD, как корректно откомпилировать и
        установить программу.  Скелет каждого порта включает:</para>

      <itemizedlist>
        <listitem>
	  <para><filename>Makefile</filename>.  <filename>Makefile</filename>
	    содержит различные директивы, которые определяют, как приложение
	    должно быть откомпилировано и куда в вашей системе оно должно быть
	    установлено.</para>
        </listitem>

        <listitem>
	  <para>Файл <filename>distinfo</filename>. Этот файл содержит
	    информацию о файлах, которые должны существовать на вашей
	    системе для успешной сборки порта, и их контрольные суммы, для
	    проверки при помощи &man.md5.1; того, что файлы в процессе загрузки
            не были повреждены.</para>
        </listitem>

        <listitem>
	  <para>Каталог <filename>files</filename>.  Этот каталог
	    содержит патчи, использование которых необходимо для компиляции и
	    установки программы в вашей системе FreeBSD.  Патчи - это, как
	    правило, маленькие файлы, в которых содержатся изменения, которые
	    нужно внести в какой-то конкретный файл.  Они имеют обычный
	    текстовый формат и в основном содержат указания типа <quote>Удалить
	    строку 10</quote> или <quote>Заменить строку 26 на
            такую ...</quote>.  Патчи также называются
            <quote>diff-файлами</quote> или просто <quote>диффами</quote>,
            потому что они генерируются программой &man.diff.1;.</para>

          <para>Этот каталог также может содержать другие файлы, используемые
            для построения порта.</para> 
        </listitem>

	<listitem>
	  <para><filename>pkg-descr</filename>.  Это более подробное,
	    зачастую многострочное описание программы.</para>
	</listitem>

	<listitem>
	  <para><filename>pkg-plist</filename>.  Это список всех файлов,
	    которые будут установлены портом.  В нем также содержатся
	    указания системе портов на удаление определенных файлов во
	    время удаления порта.</para>
	</listitem>
      </itemizedlist>

      <para>В некоторых портах присутствуют и другие файлы, такие, как
        <filename>pkg-message</filename>.  Система портов использует эти файлы
        для обработки особых ситуаций.  Если вы хотите узнать более подробно
        об этих файлах и о портах вообще, то обратитесь к <ulink
	url="&url.books.porters-handbook;/index.html">Руководству по созданию
	портов для FreeBSD</ulink>.</para>

      <para>В порт включаются инструкции
        относительно того, как выполнять построение из исходного кода, но не
        сам код.  Вы можете получить исходный код с CD-ROM или из Интернет.
        Исходный код распространяется в том виде, какой предпочёл выбрать
        разработчик.  Зачастую это tar-файл, обработанный утилитой gzip, но он
        может также быть упакован каким-то другим инструментом или быть
        не сжатым.  Исходный код программы, в каком бы то виде он ни был,
	называется <quote>дистрибутивным</quote> (distfile).  Два метода
	установки портов &os; описаны ниже.</para>

      <note>
        <para>Для установки портов вы должны войти в систему как пользователь
	  <username>root</username>.</para>
      </note>

      <warning>
	<para>Перед установкой любого порта необходимо убедиться в
	  наличии свежей коллекции портов и заглянуть на <ulink
	  url="http://vuxml.freebsd.org/"></ulink>, где могут
	  освещаться вопросы безопасности, связанные с этим портом.</para>

	<para>Проверка на наличие уязвимостей может быть автоматически
	  выполнена <application>portaudit</application> перед установкой
	  нового приложения.  Эту программу можно найти в коллекции портов
	  (<filename role="package">security/portaudit</filename>).
	  Запустите <command>portaudit -F</command> перед установкой
	  нового порта для загрузки свежей базы данных уязвимостей.
	  Проверка безопасности и обновление базы данных должны
	  выполняться при повседневной проверке безопасности системы.
	  За дальнейшей информацией обращайтесь к страницам справочника
	  &man.portaudit.1; и &man.periodic.8;.</para>
      </warning>

      <sect3 id="ports-cd">
        <title>Установка портов с CD-ROM</title>

        <indexterm>
          <primary>порты</primary>

          <secondary>установка с CD-ROM</secondary>
        </indexterm>

        <para>Официальные образы CD-ROM Проекта FreeBSD больше не содержат
          дистрибутивные файлы.  На них есть достаточно места, которое лучше
          использовать для предкомпилированных пакетов.  Продукты на CD-ROM,
          такие, как FreeBSD PowerPak, включают дистрибутивные файлы, и вы
          можете заказать их от таких поставщиков, как <ulink
          url="http://www.freebsdmall.com/">FreeBSD Mall</ulink>.  В этом
          разделе предполагается, что у вас есть такой набор CD-ROM с
          FreeBSD.</para>

        <para>Вставьте ваш CD-ROM с FreeBSD в привод.  Смонтируйте его в
          каталог <filename>/cdrom</filename>.  (Если вы используете другую
          точку монтирования, то установка работать не будет.)  Чтобы начать,
          перейдите в каталог с портом, который вы хотите установить:</para>

        <screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput></screen>

        <para>Оказавшись в каталоге <filename>lsof</filename>, вы увидите
          структуру порта.  Следующим шагом является компиляция, или построение
          (<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 file:/cdrom/ports/distfiles/.
===&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</command>, а именно слово
	  <command>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>

        <note>
	  <para>Вы можете сэкономить лишний шаг, просто выдав команду
	    <command>make install</command> вместо <command>make</command> и
	    последующей <command>make install</command> в двух отдельных
	    шагах.</para>
        </note>

        <note>
          <para>Некоторые командные процессоры для ускорения поиска выполнимых
            файлов и команд кэшируют имена программ, доступных для
            вызова из каталогов, перечисленных в переменной окружения
            <envar>PATH</envar>.  Если вы используете один из таких командных
            процессоров, то перед использованием только что добавленных команд
            вам может понадобиться вызвать директиву <command>rehash</command>
            после установки порта.  Это верно как для оболочек, являющихся
            частями базового системного набора (например,
            <command>tcsh</command>), так и командных процессоров, доступных в
            виде портов (например, <filename
            role="package">shells/zsh</filename>).</para>
        </note>

        <note>
	  <para>Пожалуйста, будьте готовы к тому, что лицензии некоторых
	    портов не позволяют помещать их на CD-ROM.  Это может
            делаться из-за обязательности заполнения регистрационной формы
            перед загрузкой, или запрета на дальнейшее распространение, либо по
            какой-то другой причине.  Если вы хотите установить порт, которого
            нет на CD-ROM, вам нужно иметь подключение к Интернет; чтобы это
            сделать (обратитесь к <link
	    linkend="ports-inet">следующему разделу</link>).</para>
        </note>
      </sect3>

      <sect3 id="ports-inet">
        <title>Установка портов из Интернет</title>

        <para>Как и в предыдущем разделе, здесь предполагается, что у вас
	  имеется работающее подключение к Интернет.  Если это не ваш случай,
	  выполняйте <link linkend="ports-cd">установку с
	  CD-ROM</link>, либо поместите копию дистрибутивного файла в каталог
          <filename>/usr/ports/distfiles</filename> вручную.</para>

        <para>Установка порта из Интернет производится точно так же, как если
	  бы вы делали её с CD-ROM.  Единственным отличием между ними
	  является тот факт, что дистрибутивный файл загружается из Интернет, а
          не считывается с CD-ROM.</para>

        <para>Выполняются те же самые шаги:</para>

        <screen>&prompt.root; <userinput>make install</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://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
439860 bytes transferred in 18.0 seconds (23.90 kBps)
===&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
...
[вывод команды компиляции опущен]
...
===&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>Как вы видите, единственным отличием является строка, в которой
	  указывается, откуда система загружает дистрибутивный файл
          порта.</para>

        <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
          <maketarget>fetch</maketarget></command>.  Просто запустите эту
          команду в каталоге самого верхнего уровня
          (<filename>/usr/ports</filename>), и требуемые файлы будут загружены.
          Эта команда будет работать также и с вложенными категориями,
          например: <filename>/usr/ports/net</filename>.
          Заметьте, что если порт имеет зависимости от библиотек или других
          портов, то он <emphasis>не будет</emphasis> также загружать
          дистрибутивные файлы этих портов.  Замените
          <maketarget>fetch</maketarget> на
          <maketarget>fetch-recursive</maketarget>, если вы хотите выполнить
          загрузку также и всех этих зависимостей порта.</para>

        <note>
          <para>Вы можете построить все порты в категории за раз, запустив
            команду <command>make</command> в каталоге верхнего уровня, как и
            в вышеописанном методе с <command>make
            <makevar>fetch</makevar></command>.  Однако это опасно, так как
            некоторые порты не могут сосуществовать.  В других случаях
            некоторые порты могут устанавливать два различных файла с одним и
            тем же именем.</para>
        </note>

        <para>В некоторых редких случая пользователям необходимо получить
          tar-архивы с сайтов, отличающихся от <makevar>MASTER_SITES</makevar>
          (это место, откуда файлы обычно загружаются).  Вы можете
          переопределять значение <makevar>MASTER_SITES</makevar> посредством
          следующей команды:</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>В этом примере мы изменили значение переменной
          <makevar>MASTER_SITES</makevar> на <hostid role="fqdn">
          ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/</hostid>.</para>

	<note>
          <para>Некоторые порты позволяют (или даже требуют) задавать
            параметры, которые включают или выключают построение отдельных
            частей приложения, которые не нужны, некоторые параметры
            безопасности, а также прочие настройки.  К некоторым из них, часто
            упоминаемым, относятся
            пакеты <filename role="package">www/mozilla</filename>,
	    <filename role="package">security/gpgme</filename> и
 	    <filename role="package">mail/sylpheed-claws</filename>.  При
            наличии подобных параметров будет выдано сообщение.</para>
        </note>
      </sect3>

      <sect3>
        <title>Переназначение каталогов с портами по умолчанию</title>

        <para>Иногда бывает полезным (или необходимым) использование
          других каталогов с портами и дистрибутивными файлами.  Для
          переопределения каталогов, используемых по умолчанию, используются
          переменные <makevar>PORTSDIR</makevar> и <makevar>PREFIX</makevar>.
          К примеру:</para>

	<screen>&prompt.root; <userinput>make PORTSDIR=/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 PORTSDIR=../ports PREFIX=../local install</userinput></screen>

	<para>использует обе возможности (полная команда слишком длинна для
          написания на этой странице, однако вы должны уловить общую
          идею).</para>

        <para>Альтернативным способом является задание значений этих переменных
          в параметрах окружения.  Обратитесь к страницам справки по
          вашему командному процессору для получения инструкций о том, как это
          сделать.</para>
      </sect3>

      <sect3>
        <title>Работа с <command>imake</command></title>

        <para>Некоторые порты, использующие <command>imake</command> (часть
          X Window System) не работают нормально с <makevar>PREFIX</makevar>,
          и будут пытаться установиться в дерево
          <filename>/usr/X11R6</filename>.  Аналогично некоторые Perl-порты
          игнорируют значения <makevar>PREFIX</makevar> и устанавливаются в
          дерево Perl.  Заставить такие порты воспринимать переменную
          <makevar>PREFIX</makevar> является сложной или невыполнимой
          задачей.</para>
      </sect3>
    </sect2>

    <sect2 id="ports-removing">
      <title>Удаление установленных портов</title>

      <indexterm>
        <primary>порты</primary>

        <secondary>удаление</secondary>
      </indexterm>

      <para>Теперь, когда вы знаете, как устанавливать порты, вы наверное, уже
        задумывались о том, как же их удалять &mdash; просто даже на тот случай, если
        вы установили один из них, а позже решили, что установили не тот порт.
        Мы удалим порт из нашего предыдущего примера (а это была программа
        <command>lsof</command>, если вы обратили внимание).  Как и при
        установке портов, первым делом вы должны перейти в каталог с портом,
        <filename>/usr/ports/sysutils/lsof</filename>.  После смены каталога вы
        готовы к удалению <command>lsof</command>.  Это делается командой
        <command>make deinstall</command>:</para>

      <screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput>
&prompt.root; <userinput>make deinstall</userinput>
===&gt;  Deinstalling for lsof-4.57</screen>

      <para>Это было достаточно легко.  Вы удалили <command>lsof</command> из
        вашей системы.  Если вам захочется переустановить эту программу, то это
        можно будет сделать, выдав команду <command>make reinstall</command>
        из каталога <filename>/usr/ports/sysutils/lsof</filename>.</para>

      <para>Последовательность команд <command>make deinstall</command> и
        <command>make reinstall</command> не сработает, если вы запустите
        команду <command>make clean</command>.  Если вы хотите убрать порт из
        системы после очистки каталога, используйте команду
        &man.pkg.delete.1;, как это описано в <link
        linkend="packages-using">разделе о пакетах Руководства</link>.</para>
    </sect2>

    <sect2 id="ports-disk-space">
      <title>Порты и дисковое пространство</title>

      <indexterm>
        <primary>порты</primary>

        <secondary>дисковое пространство</secondary>
      </indexterm>

      <para>Использование коллекции портов со временем требует все больше
        дискового пространства.  По этой причине вы не должны забывать о
        очистке каталогов <filename class="directory">work</filename>
	при помощи команды <command>make
        <makevar>clean</makevar></command>.  При этом будет удаляться каталог
        <filename class="directory">work</filename>, возникающий после
	построения и установки порта.  Вы можете также удалить исходные
	файлы программы из каталога <filename
	class="directory">distfiles</filename>, а позже удалить
	установленные порты, если они более не используются.</para>

      <para>Некоторые пользователи ограничивают набор доступных категорий портов,
        помещая в файл <filename>refuse</filename> соответствующую запись.
        В этом случае, при запуске программы <application>CVSup</application>
        она не будет загружать файлы из указанных категорий.  Дополнительную
	информацию, относящуюся к файлу <filename>refuse</filename>, можно
	найти в <xref linkend="cvsup-refuse-file">.</para>
    </sect2>

    <sect2 id="ports-upgrading">
      <title>Обновление портов</title>

      <indexterm>
        <primary>portupgrade</primary>
      </indexterm>

      <indexterm>
        <primary>порты</primary>

        <secondary>обновление</secondary>
      </indexterm>
      <note>
	<para>После обновления коллекции портов, и перед тем, как обновить
	  приложение из порта, сверьтесь с файлом
	  <filename>/usr/ports/UPDATING</filename>.  В нем дана информация
	  по различным вопросам и дополнительным шагам, которые
	  могут быть необходимы для обновления порта.</para>
      </note>

      <para>Поддержание ваших портов в актуальном состоянии может оказаться
        нудным занятием.  К примеру, чтобы обновить порт, вам нужно перейти в
        каталог с портами, построить порт, удалить старый порт, установить
        новый, а затем вычистить его после построения.  Представьте, сколько
        действий (пять) нужно сделать!  Скучно, да?  Это было большой
        проблемой для системных администраторов, но теперь есть утилиты,
        выполняющие эти действия за нас.  Например, утилита
	<filename role="package">sysutils/portupgrade</filename> сделает всё за
        вас сама!  Просто установите её, как обычный порт, при помощи команды
	<command>make <makevar>install clean</makevar></command>.</para>

      <para>Теперь создайте базу данных командой <command>pkgdb -F</command>.
        Она выяснит перечень установленных портов и создаст файл базы данных
        в каталоге <filename>/var/db/pkg</filename>.  Теперь при вызове
        команды <command>portupgrade -a</command>, она будет использовать эту
        базу данных и файл портов <filename>INDEX</filename>.  Наконец,
        <application>portupgrade</application> загрузит, построит, сделает
        резервную копию, установит и очистит порты, которые были обновлены.
        <application>portupgrade</application> имеет массу параметров для
        использования в разных ситуациях, из которых наибольшего внимания
        заслуживают описываемые далее.</para>

      <para>Если вы хотите обновить только определённое приложение, но не
        полностью базу данных, используйте <command>portupgrade
        <replaceable>pkgname</replaceable></command>, с флагом
        <option>-r</option>, если <application>portupgrade</application>
        должен отработать все пакеты, которые зависят от указанного, и
        использовать флаг <option>-R</option> для отработки всех пакетов,
        которые требуют указанные пакеты.</para>

      <para>Для использования при установке пакетов, а не портов, укажите
	флаг <option>-P</option>.  С этим параметром
	<application>portupgrade</application> будет искать пакеты в
	локальных каталогах, указанных в переменной окружения
	<envar>PKG_PATH</envar>, или, если не найдет их, загрузит с
	удаленного сайта.  Если пакеты не могут быть найдены локально
	или загружены удаленно, <application>portupgrade</application>
	использует порты.  Чтобы запретить использование портов,
	укажите <option>-PP</option>.</para>

      <para>Для простой
        загрузки дистрибутивных файлов без построения или установки чего бы то
        ни было, задайте флаг <option>-F</option>.  Дополнительную информацию
        можно получить на странице справки по
        утилите &man.portupgrade.1;.</para>

      <note>
        <para>Важно регулярно обновлять базу данных пакетов при помощи
          команды <command>pkgdb -F</command> для восстановления целостности,
          особенно когда <application>portupgrade</application> запрашивает
          вас это сделать.  Не прерывайте работы
          <application>portupgrade</application> при обновлении базы данных
          пакетов, это может привести к рассогласованию данных.</para>
      </note>

      <para>Существуют и другие утилиты, которые делают подобные вещи,
        посмотрите в каталоге <filename>ports/sysutils</filename> и выберите
        то, что вам подходит.</para>
    </sect2>
  </sect1>

  <sect1 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 foopackage</userinput></screen>

	<para>будет выведен список всех установленных пакетов, в названии
          которых присутствует <literal>foopackage</literal>.  Замените
	  <literal>foopackage</literal> в командной строке на то, что вам
          нужно.</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 id="ports-broken">
    <title>Обработка нерабочих портов</title>

    <para>Если вы встретили порт, который у вас не работает, есть несколько
      вещей, которые вы можете сделать, а именно:</para>

    <orderedlist>
      <listitem>
        <para>Исправьте его!  В <ulink
          url="&url.books.porters-handbook;/index.html">Руководстве по созданию
          портов</ulink> содержится подробная информация об инфраструктуре
          <quote>Портов</quote>, так что вы сможете исправить иногда
          встречающиеся порты с ошибками или даже создать собственные!</para>
      </listitem>

      <listitem>
        <para>Надавите &mdash; <emphasis>только по электронной
          почте</emphasis>!  Сначала пошлите письмо человеку, сопровождающему
          порт.  Наберите команду <command>make maintainer</command> или
          прочтите <filename>Makefile</filename>, чтобы найти его адрес.  Не
          забудьте указать имя и версию порта (скопировав строчку
          <literal>&dollar;FreeBSD:</literal> из файла
          <filename>Makefile</filename>) и включите в письмо весь
          вывод, предшествующий возникновению ошибки.
	  Если вы не получили ответа от этого человека, то можете
	  воспользоваться командой &man.send-pr.1; для посылки
	  сообщения об ошибке.</para>
      </listitem>

      <listitem>
        <para>Загрузите пакет с ближайшего к вам FTP-сервера.
          <quote>Основная</quote> коллекция пакетов находится на сервере
	  <hostid role="fqdn">ftp.FreeBSD.org</hostid> в <ulink
	  url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/">каталоге
	  с пакетами</ulink>, но <emphasis>первым делом</emphasis> проверьте
	  местное зеркало!  Скорее всего, это будет работать.  Кроме того,
	  сделать это будет гораздо быстрее, чем пытаться компилировать порты
	  из исходного кода.  Воспользуйтесь программой &man.pkg.add.1; для
	  установки пакета в вашу систему.</para>
      </listitem>
    </orderedlist>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
