diff options
Diffstat (limited to 'ru_RU.KOI8-R/books/handbook/ports/chapter.xml')
-rw-r--r-- | ru_RU.KOI8-R/books/handbook/ports/chapter.xml | 1909 |
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> — в зависимости от того, - установлен ли сервер <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> – это - название программы, которую вы хотите найти. Например, если - вы ищете <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></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 дисков с &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; 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; 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><</entry> - - <entry>Версия установленного пакета старее, чем та, что имеется в - локальном дереве портов.</entry> - </row> - - <row> - <entry>></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> — это усовершенствованный - инструмент, пришедший на смену традиционным утилитам управления пакетами - &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; 9.1 и более поздние включена программа - "самонастройки" ("bootstrap") - <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>Чтобы убедиться, что Коллекция Портов &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>. Как следствие — зависимости - не отслеживаются, и необходимые зависимые компоненты не скачиваются - с удаленного источника. В этом разделе описана работа с - <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 -> 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>Коллекция Портов — это набор файлов, состоящий из - <filename>Makefile</filename>, патчей и файлов описаний, хранимых в - <filename>/usr/ports</filename>. Этот набор файлов предназначен для - построения и установки приложений во &os;. В нижеследующих разделах - описано несколько способов получения Коллекции Портов на тот случай, - если Коллекция не была установлена во время инсталляции &os;.</para> - - <procedure> - <title>Метод Portsnap</title> - - <para><application>Portsnap</application> это быстрый и удобный - инструмент для получения Коллекции Портов, и в то же время — - предпочитаемый выбор большинства пользователей.<!-- За подробным - описанием всех возможностей <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 ГБ дискового пространства - в <filename>/usr</filename>, в добавок, для - <application>Portsnap</application> необходимо около 150 МБ - дискового пространства в - <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>Для компиляции (или построения — <quote>build</quote>) - порта наберите команду <command>make</command>. Вы должны увидеть - вывод команды, подобный следующему:</para> - - <screen>&prompt.root; <userinput>make</userinput> ->> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. ->> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/. -===> Extracting for lsof-4.57 -... -[вывод команды при распаковке опущен] -... ->> Checksum OK for lsof_4.57D.freebsd.tar.gz. -===> Patching for lsof-4.57 -===> Applying FreeBSD patches for lsof-4.57 -===> Configuring for lsof-4.57 -... -[вывод команды при конфигурации опущен] -... -===> Building for lsof-4.57 -... -[вывод команды при компиляции опущен] -... -&prompt.root;</screen> - - <para>По завершении компиляции вы снова вернетесь к приглашению - командного процессора. Следующим шагом является установка порта - при помощи - <command>make install</command>:</para> - - <screen>&prompt.root; <userinput>make install</userinput> -===> Installing for lsof-4.57 -... -[вывод команды при установке опущен] -... -===> Generating temporary packing list -===> Compressing manual pages for lsof-4.57 -===> Registering installation for lsof-4.57 -===> 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> -===> 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-меню, содержащее опции - построения. Будучи однажды успешно определены, опции сохраняются, - и при повторном построении порта меню не вызывается. Для изменения - сохраненных опций существует несколько способов повторного вызова - меню. Один из них — зайти в каталог порта и набрать - <command>make config</command>. - Второй способ — запустить команду - <command>make showconfig</command>. - Еще один способ — выполнить команду - <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> — это еще один - инструмент для обновления установленных портов. Утилита - <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> -===>>> Root ports (No dependencies, not depended on) -===>>> ispell-3.2.06_18 -===>>> screen-4.0.3 - ===>>> New version available: screen-4.0.3_1 -===>>> tcpflow-0.21_1 -===>>> 7 root ports -... -===>>> Branch ports (Have dependencies, are depended on) -===>>> apache-2.2.3 - ===>>> New version available: apache-2.2.8 -... -===>>> Leaf ports (Have dependencies, not depended on) -===>>> automake-1.9.6_2 -===>>> bash-3.1.17 - ===>>> New version available: bash-3.2.33 -... -===>>> 32 leaf ports - -===>>> 137 total installed ports - ===>>> 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>$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>В частности, если мейнтейнер порта — <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> |