30 августа 2012 г.

Порты FreeBSD

Порты FreeBSD

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


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


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

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

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

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

Существует несколько способов найти необходимое вам приложение:

1. Если вы знаете точное имя порта, и хотите определить, в какой категории он находится, используйте команду whereis(1). Просто наберите в приглашении ''whereis file'', где file - программа, которую вы хотите установить. И если она имеется в системе, об этом будет сообщено, как показано ниже:

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

Это говорит о том, что lsof (системная утилита) находится в каталоге
/usr/ports/sysutils/lsof.

2. Ещё одним способом поиска некоторого порта является использование встроенной возможности поиска в Коллекции Портов. Чтобы ею воспользоваться, вы должны находиться в каталоге /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: obrien@FreeBSD.org 
Index: sysutils 
B-deps: 
R-deps: 

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

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

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

Что содержит порт?

Каждый порт включает:

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

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

Каталог files. Этот каталог содержит патчи, использование которых необходимо для компиляции и установки программы в вашей системе FreeBSD. Патчи - это, как правило, маленькие файлы, в которых содержатся изменения, которые нужно внести в какой-то конкретный файл. Они имеют обычный текстовый формат и в основном содержат указания типа ''Удалить строку 10'' или ''Заменить строку 26 на такую ...''. Патчи также называются ''diff-файлами'' или просто ''диффами'', потому что они генерируются программой diff(1)Этот каталог также может содержать другие файлы, используемые для построения порта.

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

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

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

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

Чтобы начать установку, перейдите в каталог с нужным вам портом: 
# cd /usr/ports/sysutils/lsof

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

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

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

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

Мы удалим порт из нашего предыдущего примера (а это была программа 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.

Комментариев нет:

Отправить комментарий