Перейти к содержимому

Freebsd как установить порты

  • автор:

Глава 5. Установка приложений: порты и пакеты

Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD.

5.1. Обзор

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

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

  • Как устанавливать бинарные пакеты с программным обеспечением сторонних разработчиков.
  • Как собирать из исходных кодов программное обеспечение сторонних разработчиков при помощи Коллекции Портов.
  • Как удалять ранее установленные пакеты или порты.
  • Как переопределить значения, используемые по умолчанию в Коллекции Портов.
  • Как найти необходимое программное обеспечение.
  • Как обновить установленные приложения.

5.2. Обзор установки программного обеспечения

Стандартная процедура установки программного обеспечения сторонних разработчиков на UNIX®-систему выглядит примерно так:

  1. Загрузка программного обеспечения, которое может распространяться в форме исходных текстов или двоичных файлов.
  2. Распаковка программного обеспечения из дистрибутивного формата (обычно tar-архива, сжатого при помощи compress(1), gzip(1) или bzip2(1)).
  3. Поиск документации в файлах INSTALL , README или в каком-то файле из подкаталога doc/ и её чтение в поиске описания установки программного обеспечения.
  4. Если программное обеспечение распространялось в форме исходных текстов, его компиляция. Сюда может быть включено редактирования файла Makefile , запуск скрипта configure и другие работы.
  5. Тестирование и установка программного обеспечения.

Если вы устанавливаете программный пакет, который не был специально перенесён на FreeBSD, то вам может даже потребоваться редактировать код для того, чтобы он нормально заработал.

FreeBSD предоставляет две технологии, которые выполняют эту работу за вас. На момент написания таким образом доступно более 36000 сторонних приложений.

Каждый пакет содержит уже откомпилированные копии всех команд приложения, а также все конфигурационные файлы и документацию. С файлом пакета можно работать командами управления пакетами FreeBSD, такими как pkg_add(1), pkg_delete(1), pkg_info(1) и так далее.

Каждый порт FreeBSD является набором файлов, предназначенных для автоматизации процесса компиляции приложения из исходного кода. Файлы, из которых состоит порт, содержат всю необходимую информацию для выполнения автоматической загрузки, извлечения, применения патчей, компиляции и установки приложения.

Также система портов может использоваться для генерации пакетов, которые в последствии становятся объектом работы для команд управления пакетами FreeBSD.

Как пакеты, так и порты принимают во внимание зависимости. Если при инсталляции приложения при помощи pkg_add(1) или Коллекции Портов будет обнаружено, что необходимая библиотека не была установлена, то первым делом будет выполнена установка библиотеки.

Несмотря на то, что обе технологии весьма похожи, и пакеты, и порты имеют свои преимущества. Выберите технологию, которая соответствует вашим требованиям к установке конкретного приложения.

Преимущества пакетов

  • Сжатый tar-архив пакета обычно меньше, чем сжатый tar-архив, содержащий исходный код приложения.
  • Пакеты не требуют времени на компиляцию. Для больших приложений, таких как Mozilla, KDE или GNOME, это может быть важно, особенно при работе на медленной системе.
  • Пакеты не требуют понимания процесса компиляции программного обеспечения во FreeBSD.

Преимущества портов

  • Пакеты обычно компилируются с консервативными параметрами, потому что они должны работать на максимальном количестве систем. При установке из порта становится возможным изменение опций компиляции.
  • Некоторые приложения имеют опции времени компиляции, позволяющие определять необходимые функциональные возможности. К примеру, Apache может быть настроен с широким набором различных опций.

В некоторых случаях для одного и того же приложения будут иметься несколько пакетов с разными предварительными настройками. Например, Ghostscript доступен как пакет ghostscript и как пакет ghostscript-nox11 — в зависимости от того, установлен ли сервер X11. Создание нескольких пакетов одного приложения быстро становится бессмысленным, если приложение имеет более одного-двух параметров компиляции.

Перед установкой любого приложения необходимо зайти на http://vuxml.freebsd.org/, где находится информация по вопросам безопасности приложений, или установить ports-mgmt/portaudit. После установки наберите portaudit -F -a для проверки всех установленных приложений на наличие известных уязвимостей.

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

5.3. Поиск программного обеспечения

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

  • На сайте FreeBSD по адресу http://www.FreeBSD.org/ports/ поддерживается обновляемый список всех имеющихся приложений для FreeBSD, в котором можно выполнять поиск. Поиск порта можно выполнить либо по имени приложения, либо по названию категории.
  • Dan Langille поддерживает сайт FreshPorts, на котором есть удобный поиск, а также на нём отслеживаются изменения в приложениях из Коллекции Портов. Зарегистрированным пользователям доступна возможность создавать собственные списки наблюдаемых портов и автоматически получать оповещения об их обновлениях по электронной почте.
  • Если вы не знаете названия нужного вам приложения, попытайтесь воспользоваться сайтом типа Freecode (http://www.freecode.com/) для поиска приложения, а затем возвратитесь на сайт FreeBSD, чтобы проверить, есть ли порт для этого приложения.
  • Если вам необходимо определить, в какой категории находится порт, наберите whereis file , где file — программа, которую вы хотите установить:
 lsof: /usr/ports/sysutils/lsof

Как вариант, можно воспользоваться echo(1):

 /usr/ports/sysutils/lsof

Учтите, что в выводе также будут присутствовать совпадающие с шаблоном имена файлов, сохраненные в /usr/ports/distfiles .

  Port: lsof-4.56.4 Path: /usr/ports/sysutils/lsof Info: Lists information about open files 

Команда make search выполняет поиск в файле с индексной информацией. Если получено сообщение, что требуется файл INDEX , запустите make fetchindex для загрузки актуального индексного файла. После загрузки файла INDEX команда make search сможет выполнить запрошенный поиск.

Строка "Path:" указывает, где находится порт.
Чтобы получить лаконичный вывод, задайте цель quicksearch :

  Port: lsof-4.87.a,7 Path: /usr/ports/sysutils/lsof Info: Lists information about open files string или make quicksearch key=string , где string представляет собой некоторый текст, относящийся к искомому порту. Текст ищется в комментариях, описаниях или зависимостях. Этот способ можно использовать для поиска портов, связанных с некоторой темой, когда название программы неизвестно.

В обоих случаях ( search и quicksearch ) строка поиска нечувствительна к регистру. Поиск "LSOF" приводит к тому же самому результату, что и поиск "lsof".

5.4. Использование бинарных пакетов

Во FreeBSD есть несколько утилит для управления пакетами:

  • Для установки, удаления и получения перечня установленных пакетов на работающей системе может быть запущена утилита sysinstall . Обратитесь к Установка пакетов (Install Packages) за более детальной информацией.
  • Утилиты командной строки для управления пакетами, которые являются темой данного раздела.

5.4.1. Установка пакета

Для установки бинарного пакета FreeBSD из локального файла или с сервера в сети используйте pkg_add(1).

Пример 1. Загрузка пакета вручную и его локальная установка

 Connected to ftp2.FreeBSD.org. 220 ftp2.FreeBSD.org FTP server   get lsof-4.56.4.tgz 

Если у вас нет источника пакетов, например, такого как набор CD-ROM дисков с FreeBSD, то добавьте опцию -r для pkg_add(1). Утилита автоматически определит правильный формат объектных файлов и релиз, а затем загрузит и установит пакет с сервера FTP без какого-либо дополнительного взаимодействия с пользователем.

Чтобы задействовать альтернативное зеркало пакетов FreeBSD, укажите его адрес в переменной окружения PACKAGESITE . Для загрузки файлов утилита pkg_add(1) использует fetch(3). Последняя учитывает значения различных переменных окружения, включая FTP_PASSIVE_MODE , FTP_PROXY и FTP_PASSWORD . Если вы находитесь за сетевым экраном, или для работы с FTP/HTTP вам необходимо использовать прокси, то определите соответствующие переменные. Обратитесь к справочной странице по fetch(3) для получения полного списка переменных. Заметьте, что в примере выше вместо lsof-4.56.4 используется lsof . В случае загрузки из сети номер версии в имени пакета должен быть опущен.

Если вы используете FreeBSD-CURRENT или FreeBSD-STABLE, то утилита pkg_add(1) загрузит последнюю версию устанавливаемой программы. Если же вы используете версию -RELEASE, то pkg_add(1) установит версию пакета, который был собран для конкретного релиза. Это поведение возможно изменить переопределив значение PACKAGESITE . Например, в системе FreeBSD 8.1-RELEASE pkg_add(1) по умолчанию попытается скачать пакеты с ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/ . Чтобы обязать pkg_add(1) загружать пакеты для FreeBSD 8-STABLE, присвойте PACKAGESITE значение ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/ .

Файлы пакетов распространяются в форматах .tgz и .tbz . Пакеты находятся по адресу ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages или в каталоге /packages дистрибутива FreeBSD на DVD. Структура каталогов с пакетами подобна тому, как организовано дерево /usr/ports . Каждая категория имеет собственный каталог, и каждый пакет помещается в каталог All .

5.4.2. Управление пакетами

Для вывода перечня установленных пакетов и их описаний может быть задействована pkg_info(1).

 colordiff-1.0.13 A tool to colorize diff output docbook-1.2 Meta-port  the different versions of the DocBook DTD . 

Утилита pkg_version(1) выводит отчёт о версиях всех установленных пакетов и сравнивает их версии с текущими версиями соответствующих приложений, доступных из локального дерева портов.

 colordiff Символы во второй колонке указывают сравнительную разницу в возрасте установленной версии и версии, находящейся в локальном дереве портов.

Версия установленного пакета соответствует версии, находящейся в локальном дереве портов.

Версия установленного пакета старее, чем та, что имеется в локальном дереве портов.

Версия установленного пакета новее чем та, что есть в дереве портов. Скорее всего, локальное дерево портов устарело.

В индексном файле портов установленный пакет не найден. Это может случиться если установленный порт был переименован или удалён из Коллекции Портов.

Имеется несколько версий пакета.

Установленный пакет есть в индексном файле, но по какой-то причине утилите pkg_version не удалось сравнить номер версии установленного пакета и соответствующей записи в файле.

5.4.3. Удаление пакета

Для удаления ранее установленных пакетов с программным обеспечением используйте утилиту pkg_delete(1).

Следует отметить, что для pkg_delete(1) требуется полное имя пакета и номер версии; вышеприведенная команда не сработала бы, если б ей было указано xchat вместо xchat-1.7.1. Для нахождения версии установленного пакета задействуйте утилиту pkg_version(1). Или же, напечатайте групповой символ (wildcard) вместо номера версии:

в этом случае будут удалены все пакеты, имена которых начинаются на xchat .

5.4.4. Разное

Вся информация о пакетах, включая перечни файлов и описания каждого установленного пакета, хранится в каталоге /var/db/pkg .

5.5. Использование pkgng для управления бинарными пакетами

pkgng - это усовершенствованный инструмент, пришедший на смену традиционным утилитам управления пакетами FreeBSD. Он обладает множеством функциональных возможностей, ускоряющих и облегчающих работу с бинарными пакетами. Первый релиз pkgng состоялся в августе 2012 года.

pkgng не является заменой для утилит управления портами, таких как ports-mgmt/portmaster или ports-mgmt/portupgrade. В то время, как ports-mgmt/portmaster и ports-mgmt/portupgrade позволяют устанавливать приложения сторонних разработчиков как из бинарных пакетов, так и из Коллекции Портов, утилита pkgng дает возможность устанавливать приложения исключительно из бинарных пакетов.

5.5.1. Начало работы с pkgng

Во FreeBSD 9.1 и более поздние включена программа "самонастройки" ("bootstrap") pkgng. Она скачивает и устанавливает основную утилиту pkgng.

Для запуска самонастройки, выполните:

Для более ранних версий FreeBSD утилиту pkgng необходимо установить из Коллекции Портов или из бинарных пакетов.

Для установки pkgng из порта, запустите следующее:

Для установки из бинарного пакета, выполните:

Действующие инсталляции FreeBSD требуют преобразования базы данных установленных пакетов утилиты pkg_install к новому формату. Для выполнения конвертирования, запустите:

Вышеприведенный шаг не требуется для новых инсталляций, в которых не было установлено программ сторонних разработчиков.

Этот шаг необратим. После перевода базы данных установленных пакетов к формату pkgng утилитами pkg_install более пользоваться не следует.

В процессе конвертирования базы данных установленных пакетов могут возникать сообщения об ошибках. На данном этапе их можно игнорировать, так как перечень программ сторонних разработчиков, информация о которых не была преобразована, будет перечислен по завершении работы pkg2ng . Над этим перечнем придется поработать вручную.

Чтобы убедиться, что Коллекция Портов FreeBSD регистрирует новые программы при помощи pkgng, а не pkg_install, для версий FreeBSD, предшествующих 10.X, в файл /etc/make.conf необходимо внести следующую запись:

WITH_PKGNG= yes

5.5.2. Настройка окружения pkgng

Система управления пакетами pkgng при выполнении большинства операций обращается к пакетному репозиторию. Адрес используемого по умолчанию репозитория указан в /usr/local/etc/pkg.conf или в переменной окружения PACKAGESITE . Последняя переопределяет адрес, указанный в конфигурационном файле.

Дополнительные опции конфигурации pkgng описаны в pkg.conf(5).

5.5.3. Основные операции pkgng

Информацию по работе с pkgng можно найти на странице справочника pkg(8), или в выводе утилиты pkg , запущенной без аргументов.

Каждый аргумент команды pkgng описан на соответствующей странице справочника. Например, чтобы ознакомиться со страницей справочника для pkg install , запустите любую из двух нижеследующих команд:

5.5.3.1. Получение информации об установленных пакетах при помощи pkgng

Информация об установленных в системе пакетах может быть отображена при помощи команды pkg info . Подобно до pkg_info(1), в выводе перечисляются версии и описания всех установленных пакетов.

Если необходима информация о конкретном пакете, выполните:

Например, для получения версии pkgng, который установлен в системе, запустите:

 pkg-1.0.2 New generation package manager
5.5.3.2. Установка и удаление пакетов при помощи pkgng

В общем, бинарные пакеты устанавливаются при помощи:

Команда pkg install обращается к пакетному репозиторию, это упоминалось в Настройка окружения pkgng. Команда pkg-add(8), напротив, не выполняет обращений к пакетному репозиторию, а также игнорирует переменную PACKAGESITE . Как следствие - зависимости не отслеживаются, и необходимые зависимые компоненты не скачиваются с удаленного источника. В этом разделе описана работа с pkg install . За подробностями работы с pkg add обратитесь к справочной странице по pkg-add(8).

Утилита pkg install может устанавливать дополнительные бинарные пакеты. Например, для установки curl, выполните:

 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 Новый пакет, как и любые дополнительные пакеты, которые были установлены как зависимости, перечисляются в списке установленных пакетов:
 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

Пакеты, в которых более нет необходимости, могут быть удалены при помощи pkg delete . Например, если выяснится, что curl не нужен:

 The following packages will be deleted: curl-7.24.0_1 The deletion will free 3 MB Proceed with deleting packages 

Пакеты, версии которых устарели, можно найти при помощи команды pkg version . Версии установленных пакетов сравниваются с версиями приложений из локального дерева портов, а в случае отсутствия портов pkg-version(8) обращается к удаленному репозиторию пакетов.

При помощи pkgng можно обновлять пакеты до новых версий. Предположим, вышла новая версия curl. Установленный пакет можно обновить к новой версии, выполнив:

 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  

Изредка в приложениях из Коллекции Портов обнаруживаются уязвимости. В pkgng встроена возможность выполнять аудит безопасности, действующая подобно приложению из ports-mgmt/portaudit. Для выполнения аудита установленных в систему программ, выполните:

5.5.4. Сложные вопросы работы с pkgng

5.5.4.1. Автоматическое удаление неиспользуемых зависимостей при помощи pkgng

После удаления пакета в системе могут остаться неиспользуемые зависимости, наподобие security/ca_root_nss из примера выше. Такие пакеты остаются установленными, несмотря на то, что они более не требуются другим пакетам. Определить и удалить неиспользуемые пакеты, которые были установлены как зависимости, можно при помощи:

 Packages to be autoremoved: ca_root_nss-3.13.5 The autoremoval will free 723 kB Proceed with autoremoval of packages 

В отличие от традиционной системы управления пакетами, pkgng располагает своим собственным механизмом резервного копирования базы данных. Для ручного создания резервной копии базы данных установленных пакетов, выполните:

Замените имя файла pkgng.db на более подходящее.

В дополнение, pkgng содержит скрипт periodic(8), позволяющий выполнять ежедневное автоматическое копирование базы данных установленных пакетов. Для активации данной возможности задайте переменной daily_backup_pkgng_enable значение YES в файле periodic.conf(5).

Для предотвращения периодического запуска аналогичного скрипта системы pkg_install, также выполняющего резервное копирование базы данных установленных пакетов, задайте переменной daily_backup_pkgdb_enable значение NO в файле periodic.conf(5).

Для восстановления содержимого базы данных установленных пакетов из резервной копии, выполните:

5.5.4.3. Удаление копий устаревших пакетов в системе pkgng

По умолчанию, pkgng сохраняет копии установленных бинарных пакетов в каталог, указанный переменной PKG_CACHEDIR в pkg.conf(5). При обновлении пакетов командой pkg upgrade старые версии обновленных пакетов автоматически не удаляются.

Для удаления устаревших версий бинарных пакетов из кеш-каталога, выполните:

5.5.4.4. Изменение метаданных пакетов pkgng

Со временем программы из Коллекции Портов могут претерпевать изменения старшего (major) номера версии. В отличие от pkg_install, pkgng располагает встроенной командой для обновления информации о происхождении (origin) пакета. Например, изначально порт lang/php5 был версии 5.3 . Позже этот порт был переименован в lang/php53, а под именем lang/php5 был создан порт версии 5.4 . Утилитам системы pkg_install для обновления информации о происхождении (origin) пакета в собственной базе данных установленных пакетов потребовалась бы помощь дополнительного программного обеспечения, такого как ports-mgmt/portmaster.

В отличие от ports-mgmt/portmaster и ports-mgmt/portupgrade для портов, порядок перечисления новой и старой версий отличаются. Для pkgng необходим следующий порядок:

Например, в вышеприведенном случае для замены информации о происхождении пакета, выполните:

Еще один пример: для изменения информации о происхождении пакета с lang/ruby18 на lang/ruby19, выполните:

И последний пример: для замены информации о происхождении пакета разделяемой библиотеки libglut с graphics/libglut на graphics/freeglut, запустите:

Выполняя замену информации о происхождении пакетов, в большинстве случаев также требуется переустановить пакеты, которые зависят от изменившегося пакета. Для принудительной переустановки зависящих пакетов, выполните:

5.6. Использование Коллекции Портов

В этом разделе даны базовые сведения по использованию Коллекции Портов для установки или удаления программ. Детальное описание существующих целей make и переменных окружения находится в ports(7).

В июле 2012 года проект Портов FreeBSD сменил систему контроля версий: на смену CVS пришел Subversion. Рекомендуемым способом работы с деревом портов является Portsnap. Пользователи, которым требуется локальная подгонка портов (то есть, поддержание дополнительных локальных патчей), возможно предпочтут непосредственное использование Subversion. 28 февраля 2013 года сервис CVSup был выведен из эксплуатации, и дальнейшее использование последнего не рекомендуется.

5.6.1. Получение Коллекции Портов

Коллекция Портов - это набор файлов, состоящий из Makefile , патчей и файлов описаний, хранимых в /usr/ports . Этот набор файлов предназначен для построения и установки приложений во FreeBSD. В нижеследующих разделах описано несколько способов получения Коллекции Портов на тот случай, если Коллекция не была установлена во время инсталляции FreeBSD.

Procedure: Метод Portsnap

Portsnap это быстрый и удобный инструмент для получения Коллекции Портов, и в то же время - предпочитаемый выбор большинства пользователей.

  1. Скачайте сжатый снэпшот Коллекции Портов в /var/db/portsnap .

Установка Коллекции портов FreeBSD

Программа установки FreeBSD позволяет установить Коллекцию Портов вместе с установкой операционной системы. Обратитесь к странице Справочника bsdinstall для FreeBSD 9.X и более новых версий, или sysinstall для FreeBSD 8.X и более старых версий.

Если Коллекция Портов изначально не установлена, вы можете её добавить с помощью portsnap или Subversion.

Дата последнего изменения: 19 июня 2021 г. выполнил Danilo G. Baio

Юридическая информация | © 1995-2023 Проект FreeBSD Все права защищены. Название FreeBSD является зарегистрированным торговым знаком The FreeBSD Foundation и используется Проектом FreeBSD с разрешения Фонд FreeBSD. Контакты

Если была выбрана установка FreeBSD в комплектации MINIMAL, и не было установлено дерево портов, то нужно его установить. Для установки требуется сначала скачать архив ports.tar.gz c ftp://freebsd.org.

Скачивать надо порты имеющие статус stable . Это значит, что все зависимости учтены и не получится так, что потребуется какой-нибудь архив не присутствующий на ресурсах в Интернет.

Итак, вы скачали архив и теперь нам требуется закачать его на машину, чтобы распаковать и иметь возможность с ними работать.

Для закачивания архива на сервер, с рабочей станции Windows нам потребуется специальная программа, которая может по SSH заливать файлы. К примеру можно использовать:

SSH Security Shell

Заливаем с помощью вышеказанных программ архив в каталог /usr . Заходим в каталог /usr и запускаем распаковку этого архива:

# tar -zxvf ports.tar.gz

После того, архив распакован, можно начинать устанавливать программы. Например, для того, чтобы начать работать с операционной системой лучше установить Midnight Comander. Для этого в консоли набираем:

Вылазиет окошко с возможными параметрами, выбираем чего хотим установить.

После кофигурирования начинаем установку:

и собственно, завершением всего будет очистка:

Если порт надо удалить, то можно воспользоваться:

Чтобы вывести список установленных портов воспользуемся командой:

Или если не хочется удалять все зависимости, а приложение надо переставить, то

Процедура установки программ подразумевает конфигурацию программы, то есть с какими параметрами мы хотим её устанавливать, при этом вылазиет меню, в котором можно указывать параметры программы. Правда оно не всегда работает и приходится править файлMakefile. Все конфигурации там.

После того, как мы сконфигурировали программу, порт идёт смотреть в каталог distfilesналичие исходника для неё.

Если в каталоге distfiles исходника нет, порт начинает искать в Интернете на ресурсах, указанных в файле .Makefile. Если найти не может, то надо будет вручную найти и скачать этот исходнить и подсунуть его в каталог distfiles.

Установка приложений FreeBSD: порты и пакеты

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

После чтения этой главы вы будете знать:
• Как устанавливать бинарные пакеты с программным обеспечением сторонних разработчиков;
• Как собирать программное обеспечение сторонних разработчиков при помощи Коллекции Портов;
• Как удалять ранее установленные пакеты или порты;
• Как переопределить значения, используемые по умолчанию в Коллекции Портов;
• Как обновить ваши порты.

Обзор установки программного обеспечения

Если вы использовали UNIX®-системы ранее, то знаете, что стандартная процедура установки программного обеспечения сторонних разработчиков выглядит примерно так:

1. Загрузка программного обеспечения, которое может распространяться в форме исходных текстов или двоичных файлов.
2. Распаковка программного обеспечения из дистрибутивного формата (обычно tar-архива, сжатого при помощи compress(1), gzip(1) или bzip2(1)).
3. Поиск документации (возможно, подойдут файлы INSTALL, README или несколько файлов из подкаталога doc/) и её чтение в поиске описания установки программного обеспечения.
4. Если программное обеспечение распространялось в форме исходных текстов, его компиляция. Сюда может быть включено редактирования файла Makefile, запуск скрипта configure и другие работы.
5. Тестирование и установка программного обеспечения.

И это только всё проходит нормально. Если вы устанавливаете программный пакет, который был специально перенесён на FreeBSD, то вам может даже потребоваться редактировать код для того, чтобы он нормально заработал.

Если вы хотите, то можете продолжать устанавливать программное обеспечение во FreeBSD ‘‘традиционным’‘ способом. Однако FreeBSD предоставляет две технологии, которые могут сохранить вам много усилий: пакеты и порты. На момент написания таким образом были доступны более 13,300 сторонних приложений.

Для любого конкретно взятого приложения пакет FreeBSD является одним файлом, который вы должны загрузить. Пакет содержит уже откомпилированные копии всех команд приложения, а также все конфигурационные файлы и документацию. Загруженным файлом пакета можно управлять такими командами FreeBSD, как pkg_add(1), pkg_delete(1), pkg_info(1) и так далее. Установка нового приложения может выполняться единственной командой.

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

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

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

Как пакеты, так и порты принимают во внимание зависимости. Предположим, что вы хотите установить приложение, которое зависит от некоторой установленной библиотеки. И приложение, и библиотека доступны во FreeBSD в виде портов и пакетов. Если вы используете команду pkg_add или систему портов для добавления приложений, то в обоих случаях будет обнаружено, что библиотека не была установлена, и сначала будет автоматически выполнена установка библиотеки.
Видя, что обе технологии весьма похожи, вы можете удивиться, почему во FreeBSD используются обе. И пакеты, и порты имеют свои преимущества, так что выбор используемой вами системы зависит от ваших собственных предпочтений.

Преимущества пакетов:
• Сжатый tar-архив обычно меньше, чем сжатый tar-архив, содержащий исходный код приложения;
• Пакеты не требуют никакой дополнительной компиляции. Для таких больших приложений, как Mozilla, KDE или GNOME, это может быть важно, в частности, если вы работаете на медленной системе;
• Пакеты не требуют понимания процесса компиляции программного обеспечения во FreeBSD.

Преимущества портов:
• Пакеты обычно компилируются с консервативными параметрами, потому что они должны работать на максимальном количестве систем. При установке из порта вы можете изменять параметры компиляции для того, чтобы (к примеру) генерировался код, специфичный для процессора Pentium IV или Athlon;
• Некоторые приложения имеют опции времени компиляции, связанные с тем, что они могут или не могут делать. К примеру, Apache может быть настроен с широким набором различных опций. При построении из порта вы можете не принимать параметры по умолчанию, и задать их самостоятельно. В некоторых случаях для одного и того же приложения будут иметься несколько пакетов для указания конкретных настроек. Например, Ghostscript имеется как пакет ghostscript и как пакет ghostscript-nox11, в зависимости от того, установили вы сервер X11 или нет. Такой тип грубой настройки возможен при использовании пакетов, но быстро становится недостижим, если приложение имеет более одного или двух параметров компиляции;
• Условия лицензирования некоторых дистрибутивов программного обеспечения запрещает распространение в двоичном виде. Они должны распространяться в виде исходного кода;
• Некоторые не доверяют дистрибутивам в двоичном виде. При использовании исходного кода вы (по крайней мере теоретически) можете прочесть его и попытаться найти потенциальные проблемы самостоятельно;
• Если у вас есть собственные патчи, вам нужен исходный код для того, чтобы их применять;
• Некоторым нравится иметь исходный код, чтобы его можно было просматривать и править, заимствовать из него (конечно, при разрешающем это лицензионном соглашении) и тому подобное.

Внимание: Перед установкой любого приложения необходимо зайти на http://vuxml.freebsd.org/, где находится информация по вопросам безопасности приложений. Вы можете также установить security/portaudit, который автоматически проверит все установленные приложения на наличие известных уязвимостей, проверка также будет выполняться перед сборкой какого-либо порта. Вы можете использовать portaudit -Fa и после установки пакетов.

Поиск нужного вам приложения

Перед тем, как устанавливать какое-либо приложение, вам нужно знать, что вы хотите и как называется нужное вам приложение. Список имеющихся для FreeBSD приложений постоянно растёт. К счастью, есть несколько способов найти то, что вам нужно:
• На сайте FreeBSD поддерживается обновляемый список имеющихся приложений для FreeBSD, в котором можно выполнять поиск, по адресу http://www.FreeBSD.org/ports/. Порты разбиты на категории, и вы можете либо выполнить поиск приложения по имени (если его знаете), либо просмотреть список всех приложений, относящихся к определённой категории;
• Dan Langille поддерживает сайт FreshPorts по адресу http://www.FreshPorts.org/. На нём отслеживаются изменения в приложениях из дерева портов, как только они происходят, он позволяет вам ‘‘отслеживать’‘ один или несколько портов, и может высылать оповещение по электронной почте при их обновлении;
• Если вы не знаете названия нужного вам приложения, попытайтесь воспользоваться сайтом типа FreshMeat (http://www.freshmeat.net/) для поиска приложения, а затем возвратитесь на сайт FreeBSD, чтобы проверить, есть ли порт для этого приложения;
• Если вы знаете точное имя порта, и хотите определить, в какой категории он находится, используйте команду whereis(1). Просто наберите в приглашении whereis file’, где file – программа, которую вы хотите установить. И если она имеется в системе, об этом будет сообщено, как показано ниже:

# whereis lsof lsof: /usr/ports/sysutils/lsof

Это говорит о том, что lsof (системная утилита) находится в каталоге /usr/ports/sysutils/lsof;
• Ещё одним способом поиска некоторого порта является использование встроенной возможности поиска в Коллекции Портов. Чтобы ею воспользоваться, вы должны находиться в каталоге /usr/ports. Очутившись в этом каталоге, выполните команду make search name=program-name, где program-name – это название программы, которую вы хотите найти. Например, если вы ищете lsof:

# cd /usr/ports # make search name=lsof Port: lsof-4.56.4 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: [email protected] Index: sysutils B-deps: R-deps:

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

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

В обоих этих случаях строка поиска нечувствительна к регистру. Поиск LSOF приводит к тому же самому результату, что и поиск lsof.

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

Установка пакета
Для установки пакетов программного обеспечения для FreeBSD из локальных файлов или с сервера в сети вы можете использовать утилиту pkg_add(1).

Пример 4-1. Загрузка пакета вручную и его локальная установка

# ftp -a ftp2.FreeBSD.org 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 [email protected]. 230- 230- 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /pub/FreeBSD/ports/packages/sysutils/ 250 CWD command successful. ftp> get lsof-4.56.4.tgz 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) ftp> exit # pkg_add lsof-4.56.4.tgz

Если у вас нет исходных текстов локальных пакетов (например, набор CD-ROM с FreeBSD), то проще всего, наверное, воспользоваться опцией -r для pkg_add(1). Это приведёт к тому, что утилита автоматически определит правильный формат объектных файлов и релиз, а затем загрузит и установит пакет с сервера FTP.

# pkg_add -r lsof

В примере выше нужный пакет будет загружен и установлен без всякого дополнительного взаимодействия с пользователем. Если вместо основного сайта вы хотите указать другое зеркало пакетов FreeBSD, то для переопределения используемых по умолчанию значений вам необходимо задать соответствующим образом значение переменной PACKAGESITE. Для загрузки файлов утилита pkg_add(1) использует функцию fetch(3), которая принимает во внимание различные переменные окружения, включая FTP_PASSIVE_MODE, FTP_PROXY и FTP_PASSWORD. Если вы находитесь за сетевым экраном или для работы с FTP/HTTP вам необходимо использовать прокси, то определите соответствующие переменные. Обратитесь к справочной странице по fetch(3) для получения полного списка переменных. Заметьте, что в примере выше вместо lsof-4.56.4 используется lsof. При использовании функций загрузки с сети номер версии в имени пакета должен быть опущен. Утилита pkg_add(1) автоматически загрузит последнюю версию приложения.

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

Структура каталогов системы пакетов соответствует структуре системы портов; они взаимодействуют друг с другом для формирования единой системы пакетов/портов.

Управление пакетами

pkg_info(1) является утилитой для вывода списка и описаний различных установленных пакетов.

# pkg_info 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 .

pkg_version(1) является утилитой для вывода отчёта о версиях всех установленных пакетов. Она сравнивает версию имеющегося пакета с текущей версией, находящейся в дереве портов.

# pkg_version cvsup = docbook = .

Символы во второй колонке указывают сравнительную разницу в возрасте установленной версии и версии, находящейся в локальном дереве портов. Символ — Значение:
= — Версия установленного пакета соответствует версии, находящейся в локальном дереве портов;
— Установленная версия новее чем та, что есть в дереве портов. (Скорее всего, локальное дерево портов устарело);
? — В индексном файле портов установленный пакет не может быть найден. (Это может случиться, например, если установленный порт был удалён из Коллекции Портов или переименован);
* — Имеется несколько версий пакета.

Удаление пакета

Для удаления ранее установленных пакетов с программным обеспечением используйте утилиту pkg_delete(1).

# pkg_delete xchat-1.7.1

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

Использование Коллекции Портов

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

Получение Коллекции Портов
Перед тем, как вы сможете устанавливать порты, установите Коллекцию Портов — она представляет собой в основном набор файлов Makefile, патчей, файлов описаний, и размещается в каталоге /usr/ports.

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

Метод с использованием Sysinstall:
В этом методе повторно используется sysinstall (/stand/sysinstall в FreeBSD версий ниже, чем 5.2) для ручной установки Коллекции Портов.

1. Работая как пользователь root, запустите sysinstall так, как это показано ниже:

# sysinstall

2. Опуститесь вниз и выберите Configure, нажмите Enter;
3. Опуститесь вниз и выберите Distributions, затем нажмите Enter;
4. Опуститесь вниз к пункту ports, нажмите клавишу Пробел;
5. Поднимитесь вверх к Exit, нажмите Enter;
6. Выберите желаемый носитель для установки, например, CDROM, FTP и так далее;
7. Перейдите на пункт меню Exit и нажмите Enter;
8. Нажмите X для выхода из sysinstall.

Альтернативный метод получения и постоянной актуализации Коллекции Портов заключается в использовании CVSup. Посмотрите файл CVSup для портов, /usr/share/examples/cvsup/ports-supfile. Прочтите раздел Использование CVSup (Разд. A.5) для получения более полной информации об использовании CVSup и этого файла.

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

1. Установите порт net/cvsup. Обратитесь к разделу Установка CVSup (Разд. A.5.2) для получения более подробной информации;
2. Работая как пользователь root, скопируйте /usr/share/examples/cvsup/ports-supfile в новое место, например, в каталог /root или в ваш домашний каталог;
3. Отредактируйте ports-supfile;
4. Измените CHANGE_THIS.FreeBSD.org на близкий к вам сервер CVSup. Посмотрите Зеркала CVSup (Разд. A.5.7) для получения полного списка зеркалирующих сайтов;
5. Запустите cvsup:

# cvsup -g -L 2 /root/ports-supfile

6. При повторных запусках этой команды все последние изменения (кроме реального перестроения портов для вашей системы) будут загружаться и переноситься в вашу Коллекцию Портов.

Установка портов

Когда речь заходит о Коллекции Портов, то первым делом вы должны понять, что именно подразумевается под словом ‘‘скелет’‘. По сути скелетом порта является минимальный набор файлов, который указывает вашей системе FreeBSD, как корректно откомпилировать и установить программу.

Скелет каждого порта включает:
Makefile – файл содержит различные директивы, которые определяют, как приложение должно быть откомпилировано и куда в вашей системе оно должно быть установлено;
distinfo – файл содержит информацию о файлах, которые должны существовать на вашей системе для успешной сборки порта, и их контрольные суммы, для проверки при помощи md5(1) того, что файлы в процессе загрузки не были повреждены;
• Каталог files. Этот каталог содержит патчи, использование которых необходимо для компиляции и установки программы в вашей системе FreeBSD. Патчи – это, как правило, маленькие файлы, в которых содержатся изменения, которые нужно внести в какой-то конкретный файл. Они имеют обычный текстовый формат и в основном содержат указания типа ‘‘Удалить строку 10’‘ или ‘‘Заменить строку 26 на такую …’‘. Патчи также называются ‘‘diff-файлами’‘ или просто ‘‘диффами’‘, потому что они генерируются программой diff(1). Этот каталог также может содержать другие файлы, используемые для построения порта;
pkg-descr. Это более подробное, зачастую многострочное описание программы;
pkg-plist. Это список всех файлов, которые будут установлены портом. В нем также содержатся указания системе портов на удаление определенных файлов во время удаления порта.

В некоторых портах присутствуют и другие файлы, такие, как pkg-message. Система портов использует эти файлы для обработки особых ситуаций. Если вы хотите узнать более подробно об этих файлах и о портах вообще, то обратитесь к Руководству по созданию портов для FreeBSD.

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

Замечание: Для установки портов вы должны войти в систему как пользователь root.
Внимание: Перед установкой любого порта необходимо убедиться в наличии свежей Коллекции Портов и заглянуть на http://vuxml.freebsd.org/, где могут освещаться вопросы безопасности, связанные с этим портом.

Проверка на наличие уязвимостей может быть автоматически выполнена portaudit перед установкой нового приложения. Эту программу можно найти в Коллекции Портов (/usr/ports/security/portaudit). Запустите portaudit -F перед установкой нового порта для загрузки свежей базы данных уязвимостей. Проверка безопасности и обновление базы данных должны выполняться при повседневной проверке безопасности системы. За дальнейшей информацией обращайтесь к страницам справочника portaudit(1) и periodic(8).

Установка портов с CD-ROM

Официальные образы CD-ROM Проекта FreeBSD больше не содержат дистрибутивные файлы. На них есть достаточно места, которое лучше использовать для предкомпилированных пакетов. Продукты на CD-ROM, такие, как FreeBSD PowerPak, включают дистрибутивные файлы, и вы можете заказать их от таких поставщиков, как FreeBSD Mall. В этом разделе предполагается, что у вас есть такой набор CD-ROM с FreeBSD.

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

# cd /usr/ports/sysutils/lsof

Оказавшись в каталоге lsof, вы увидите структуру порта. Следующим шагом является компиляция, или построение (’‘build’‘) порта. Это выполняется простой выдачей команды make в ответ на приглашение командного процессора. Как только вы это сделаете, то увидите вывод команды, выглядящий примерно так:

# make >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from file:/cdrom/ports/distfiles/. => 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 . [вывод команды при компиляции опущен] . #

Заметьте, что как только компиляция закончится, вы снова вернётесь к приглашению вашего командного процессора. Следующим шагом является установка порта. Чтобы это сделать, вам нужно просто добавить одно слово к команде make, а именно слово install:

# make install => 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. #

Как только вы вернулись к приглашению вашей оболочки, вы должны суметь запустить приложение, которое только что установили. Так как lsof является программой, которая запускается с повышенными правами, выдаётся предупреждение о безопасности. Во время построения и установки портов вы должны принимать во внимание все выдаваемые предупреждения.

Замечание: Вы можете сэкономить лишний шаг, просто выдав команду make install вместо make и последующей make install в двух отдельных шагах.

Замечание: Некоторые командные процессоры для ускорения поиска выполнимых файлов и команд кэшируют имена программ, доступных для вызова из каталогов, перечисленных в переменной окружения PATH. Если вы используете один из таких командных процессоров, то перед использованием только что добавленных программ вам может понадобиться вызвать команду rehash после установки порта. Эта команда будет работать с такими оболочками, как, например, tcsh. При работе с такими командными процессорами, как sh или shells/bash, воспользуйтесь командой hash -r. Дополнительную информацию можно найти в документации к вашему командному процессору.

Замечание: Пожалуйста, будьте готовы к тому, что лицензии некоторых портов не позволяют помещать их на CD-ROM. Это может делаться из-за обязательности заполнения регистрационной формы перед загрузкой, или запрета на дальнейшее распространение, либо по какой-то другой причине. Если вы хотите установить порт, которого нет на CD-ROM, вам нужно иметь подключение к Интернет; чтобы это сделать (обратитесь к следующему разделу).

Установка портов из Интернет

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

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

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

# make install >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> 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) => 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 . [вывод команды компиляции опущен] . .. => 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. #

Как вы видите, единственным отличием является строка, в которой указывается, откуда система загружает дистрибутивный файл порта.

Для загрузки файлов система портов использует утилиту fetch(1), которая принимает во внимание различные переменные окружения, включая FTP_PASSIVE_MODE, FTP_PROXY и FTP_PASSWORD. Если вы находитесь за сетевым экраном или для работы с FTP/HTTP вам необходимо использовать прокси, то определите соответствующие переменные. Обратитесь к справочной странице по fetch(3) для получения полного списка переменных.

Пользователям, которые не могут быть постоянно подключены к сети, поможет команда make fetch. Просто запустите эту команду в каталоге самого верхнего уровня (/usr/ports), и требуемые файлы будут загружены. Эта команда будет работать также и с вложенными категориями, например: /usr/ports/net. Заметьте, что если порт имеет зависимости от библиотек или других портов, то он не будет также загружать дистрибутивные файлы этих портов. Замените fetch на fetch-recursive, если вы хотите выполнить загрузку также и всех этих зависимостей порта.

Замечание: Вы можете построить все порты в категории за раз, запустив команду make в каталоге верхнего уровня, как и в вышеописанном методе с make fetch. Однако это опасно, так как некоторые порты не могут сосуществовать. В других случаях некоторые порты могут устанавливать два различных файла с одним и тем же именем.

В некоторых редких случая пользователям необходимо получить tar-архивы с сайтов, отличающихся от MASTER_SITES (это место, откуда файлы обычно загружаются). Вы можете переопределять значение MASTER_SITES посредством следующей команды:

# cd /usr/ports/directory # make MASTER_SITE_OVERRIDE= \ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

В этом примере мы изменили значение переменной MASTER_SITES на ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.

Замечание: Некоторые порты позволяют (или даже требуют) задавать параметры, которые включают или выключают построение отдельных частей приложения, которые не нужны, некоторые параметры безопасности, а также прочие настройки. К некоторым из них, часто упоминаемым, относятся пакеты www/mozilla, security/gpgme и mail/sylpheed-claws. При наличии подобных параметров будет выдано сообщение.

Переназначение каталогов с портами по умолчанию

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

# make PORTSDIR=/usr/home/example/ports install

будет компилировать порт в каталоге /usr/home/example/ports, а установит всё в /usr/local.

# make PREFIX=/usr/home/example/local install

будет компилировать его в каталоге /usr/ports, а установит в /usr/home/example/local.

# make PORTSDIR=../ports PREFIX=../local install

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

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

Работа с imake

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

Удаление установленных портов

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

# cd /usr/ports/sysutils/lsof # make deinstall ===> Deinstalling for lsof-4.57

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

Последовательность команд make deinstall и make reinstall не сработает, если вы запустите команду make clean. Если вы хотите убрать порт из системы после очистки каталога, используйте команду pkg_delete(1), как это описано в разделе о пакетах Руководства.

Порты и дисковое пространство

Использование Коллекции Портов со временем требует всё большего дискового пространства. Из-за тенденции к постоянному росту дерева портов, после построения и установки программного обеспечения из портов вы не должны забывать об очистке каталогов work командой make clean. При этом будет удаляться каталог work, возникающий после построения и установки порта. Вы можете также удалить исходные файлы программы из каталога distfiles, а позже удалить установленные порты, если они более не используются.

Некоторые пользователи ограничивают набор доступных категорий портов, помещая в файл refuse соответствующую запись. В этом случае, при запуске программы CVSup она не будет загружать файлы из указанных категорий.

Обновление портов

Замечание: После обновления Коллекции Портов, и перед тем, как обновить приложение из порта, сверьтесь с файлом /usr/ports/UPDATING. В нем дана информация по различным вопросам и дополнительным шагам, которые могут быть необходимы для обновления порта.

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

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

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

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

Для простой загрузки дистрибутивных файлов без построения или установки чего бы то ни было, задайте флаг -F. Дополнительную информацию можно получить на странице справки по утилите portupgrade(1).

Замечание: Важно регулярно обновлять базу данных пакетов при помощи команды pkgdb -F для восстановления целостности, особенно когда portupgrade запрашивает вас это сделать. Не прерывайте работы portupgrade при обновлении базы данных пакетов, это может привести к рассогласованию данных.

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

Действия после установки

После установки нового приложения вам обычно требуется прочесть какую-либо документацию, если она есть, отредактировать нужные конфигурационные файлы, проверить, что приложение запускается во время загрузки системы (если это даемон), и так далее.

Очевидно, что шаги, в точности требуемые для конфигурации каждого приложения, отличаются. Однако, если если вы только что установили новое приложение и вам интересно, ‘‘Что же дальше?’‘, то вам могут помочь следующие советы:
• Воспользуйтесь командой pkg_info(1) для определения того, куда и какие файлы были установлены. К примеру, если вы только что установили FooPackage версии 1.0.0, то по команде:

# pkg_info -L foopackage-1.0.0 | less

будет выведен список всех файлов, установленных пакетом. Обратите особое внимание на файлы в каталогах man/, которые являются справочными страницами, etc/, которые являются конфигурационными файлами, и doc/, которые являются более подробной документацией.

Если вы не уверены, какая версия приложения была только что установлена, то по команде вида:

# pkg_info | grep -i foopackage

будет выведен список всех установленных пакетов, в названии которых присутствует foopackage. Замените foopackage в командной строке на то, что вам нужно.
• Как только вы определите, куда были установлены справочные страницы приложения, просмотрите их при помощи команды man(1). Подобным же образом просмотрите примеры конфигурационных файлов и всю дополнительную документацию, которая была установлена;
• Если у приложения имеется веб-сервер, поищите там дополнительную документацию, ответы на часто задаваемые вопросы и так далее. Если вы не уверены, каков адрес веб-сайта, он может быть указан в выводе команды:

# pkg_info foopackage-1.0.0

Строка WWW:, если она есть, должна содержать URL Web-сайта приложения.
• Порты, которые должны запускаться при загрузке системы (такие, как сервисы интернет), как правило, устанавливают скрипт в каталог /usr/local/etc/rc.d. Вы должны просмотреть скрипт на предмет его корректности и отредактировать или переименовать его, если это нужно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *