diff --git a/ru_RU.KOI8-R/books/handbook/ports/chapter.sgml b/ru_RU.KOI8-R/books/handbook/ports/chapter.sgml index c121416bf7..6015cc207b 100644 --- a/ru_RU.KOI8-R/books/handbook/ports/chapter.sgml +++ b/ru_RU.KOI8-R/books/handbook/ports/chapter.sgml @@ -1,1081 +1,1297 @@ + Установка приложений: порты и пакаджи -Установка приложений: Коллекция портов + + Обзор -Переписал &a.jim;, 22 ноября 1999. Оригинальная работа была - выполнена различными людьми. + порты - - Введение + пакаджи - Коллекция портов FreeBSD позволяет вам компилировать и устанавливать - широкий набор приложений с минимальными усилиями. + Вместе с FreeBSD в составе базового комплекта системы поставляется + богатый набор системный утилит. Однако для выполнения какой-то + реальной работы очень скоро возникает необходимость в установке + дополнительных приложений сторонних разработчиков. FreeBSD даёт две + взаимодополняющих технологии для установки программного обеспечения + сторонних разработчиков в вашу систему: Коллекция Портов FreeBSD и + бинарные пакеты с программным обеспечением. Любая из этих систем может + быть использована для установки самых последних версий ваших любимых + приложений с локальных носителей или прямо из сети. - В общем-то, она представляет собой группу скелетных файлов, содержащих минимальный - набор команд, требуемых для корректной компиляции и установки приложений - в системе FreeBSD. + После чтения этой главы вы будете знать: - Даже если вы свято верите во все эти якобы открытые стандарты, - компиляция программ на различных UNIX-платформах бывает весьма хитрой - задачей. Случается, что вам везет и нужная программа компилируется на - вашей системе, устанавливает все файлы в нужные каталоги и запускается - без проблем как есть, однако такое встречается достаточно - редко. В большинстве случаев обнаруживается, что вам нужно вносить - изменения для того, чтобы заставить программу работать. Здесь-то вам и - придет на помощь Коллекция портов FreeBSD. + + + Как устанавливать бинарные пакеты с программным обеспечением + сторонних разработчиков. + - Общими целями создания Коллекции портов является избавление от всех - этих телодвижений, которые нужно выполнять для того, чтобы программа - работала правильно, и создание простого и безболезненного процесса - установки. когда вы имеете дело с Коллекцией портов, то вся тяжелая - работа уже сделана, и вы можете установить любой порт из Коллекции, - просто дав команду make install. - + + Как строить программное обеспечение сторонних разработчиков при + помощи коллекции портов. + - - Использование Коллекции Портов + + Как удалять ранее установленные пакаджи или порты. + - В этих разделах описаны основные приемы использования коллекции - портов для установки и удаления программ из вашей системы. + + Как переопределить значения, используемые по умолчанию в + коллекции портов. + - - Установка портов + + Как обновить ваши порты. + + + + + + Обзор установки программного обеспечения + + Если вы использовали &unix;-системы ранее, то знаете, что + стандартная процедура установки программного обеспечения сторонних + разработчиков выглядит примерно так: + + + + Сгрузка программного обеспечения, которое может распространяться + в форме исходных текстов или двоичных файлов. + + + + Распаковка программного обеспечения из дистрибутивного формата + (обычно tar-архива, сжатого при помощи &man.compress.1;, + &man.gzip.1; или &man.bzip2.1;). + + + + Поиск документации (возможно, подойдут файлы + INSTALL, README + или несколько файлов из подкаталога doc/) и её + чтение в поиске описания установки программного обеспечения. + + + + Если программное обеспечение распространялось в форме исходных + текстов, его компиляция. Сюда может быть включено редактирования + файла Makefile, запуск скрипта + configure и другие работы. + + + + Тестирование и установка программного обеспечения. + + + + И это только всё проходит нормально. Если вы устанавливаете + программный пакет, который был специально перенесён на FreeBSD, то вам + может даже потребоваться редактировать код для того, чтобы он нормально + заработал. + + Если вы хотите, то можете продолжать устанавливать программное + обеспечение во FreeBSD традиционным способом. Однако + FreeBSD предоставляет две технологии, которые могут сохранить вам много + усилий: пакаджи и порты. На момент написания таким образом были + доступны более &os.numports; сторонних приложений. + + Для любого конкретно взятого приложения пакет FreeBSD для такого + приложения является одним файлом, который вы должны сгрузить. Пакет + содержит уже откомпилированные копии всех команд приложения, а также + все конфигурационные файлы и документацию. Сгруженным файлом пакета + можно управлять командами управления пакетами FreeBSD, такими, как + &man.pkg.add.1; &man.pkg.delete.1;, &man.pkg.info.1; и так далее. + Установка нового приложения может выполняться единственной + командой. + + Порт FreeBSD для приложения является набором файлов, предназначенных + для автоматизации процесса компиляции приложения из исходного + кода. + + Вспомните, что обычно вы должны выполнить некоторое количество + шагов, если компилируете программу самостоятельно (сгрузка. распаковка, + изменение кода, компиляция, установка). Файлы, составляющие порт, + содержат всю информацию, необходимую для того, чтобы система сделала это + за вас. Вы задаёте пару простых команд, и исходный код приложения + автоматически сгружается, распаковывается, модифицируется, компилируется + и устанавливается. + + Действительно, система портов может также использоваться для + генерации пакетов, которые позже могут управляться командой + pkg_add и другими командами управления пакетами, о + которых скоро будет рассказано. + + Как пакеты, так и порты принимают во внимание + зависимости. Предположим, что вы хотите установить + приложение, которое зависит от некоторой установленной библиотеки. И + приложение, и библиотека доступны во FreeBSD в виде портов и пакетов. + Если вы используете команду pkg_add или систему + портов для добавления приложений, то в обоих случаях будет обнаружено, + что библиотека не была установлена, и сначала будет автоматически + выполнена установка библиотеки. + + Видя, что обе технологии весьма похожи, вы можете удивиться, почему + во FreeBSD используются обе. И пакеты, и порты имеют свои + преимущества, так что выбор используемой вами системы зависит от ваших + собственных предпочтений. - Когда речь заходит о Коллекции портов, то первым делом вы должны - понять, что именно подразумевается под словом скелет. - По сути скелетом порта является минимальный набор файлов, которые нужны - программе для ее корректной компиляции и установки во FreeBSD. Скелет - каждого порта включает: + + Преимущества пакетов + + + Сжатый tar-архив обычно меньше, чем сжатый tar-архив, содержащий + исходный код приложения. + + + + Пакеты не требуют никакой дополнительной компиляции. Для таких + больших приложений, как Mozilla, + KDE или GNOME, + это может быть важно, в частности, если вы работаете на медленной + системе. + + + + Пакеты не требуют понимания процесса компиляции + программного обеспечения во FreeBSD. + + + Преимущества портов + - Makefile. Makefile - содержит различные директивы, которые определяют, как приложение - должно быть откомпилировано и куда в вашей системе оно должно быть - установлено + Пакеты обычно компилируются с консервативными параметрами, + потому что они должны работать на максимальном количестве систем. + При установке из порта вы можете изменять параметры компиляции для + того, чтобы (к примеру) генерировался код, специфичный для + процессора Pentium IV или Athlon. - Каталог files. В каталоге - files находится файл с именем - md5. Этот файл именуется в честь алгоритма, - используемого для подсчета контрольных сумм портов. Контрольная - сумма - это число, получаемое после сложения всех данных вашего - файла, который вы хотите проверить. Если меняется какой-либо - символ, то контрольная сумма уже будет отличаться от оригинальной - и будет выведено сообщение об ошибке, чтобы вы могли выяснить, где - произошли изменения. - - В каталоге files могут также находиться и - другие файлы, необходимые для порта, но которые не подходят для - размещения где-то в другом месте структуры каталогов. + Некоторые приложения имеют опции времени компиляции, связанные с + тем, что они могут или не могут делать. К примеру, + Apache может быть настроен с широким + набором различных опций. При построении из порта вы можете не + принимать параметры по умолчанию, и задать их самостоятельно. + + В некоторых случаях для одного и того же приложения будут + иметься несколько пакетов для указания конкретных настроек. + Например, Ghostscript имеется как пакет + ghostscript и как пакет + ghostscript-nox11, в зависимости от того, + установили вы сервер X11 или нет. Такой тип грубой настройки + возможен при использовании пакетов, но быстро становится + недостижим, если приложение имеет более одного или двух параметров + времени компиляции. - Каталог patches. Этот каталог - содержит патчи, использование которых необходимо для компиляции и - установки программы в вашей системе FreeBSD. Патчи - это, как - правило, маленькие файлы, в которых содержатся изменения, которые - нужно внести в какой-то конкретный файл. Они имеют обычный - текстовый формат и в основном содержат указания типа Удалить - строку 10 или Заменить строку 26 на такую .... - Патчи также называются diff-файлами или просто - диффами, потому что они генерируются программой - diff. + Условия лицензирования некоторых дистрибутивов программного + обеспечения запрещает распространение в двоичном виде. Они должны + распространяться в виде исходного кода. - Каталог pkg. В нем, как правило, - находятся три файла. Случается, что там помещают и более трех - файлов, но это уже зависит от конкретного порта. Большинству - требуются только три. Файлы такие: - - - - COMMENT. Это однострочное описание - программы. - - - - DESCR. Это более подробное, - зачастую многострочное описание программы. - - - - PLIST. Это список всех файлов, - которые будут установлены портом. В нем также содержатся - указания системе портов на удаление определенных файлов во - время удаления порта. - - + Некоторые не доверяют дистрибутивам в двоичном виде. При + использовании исходного кода вы по крайней мере (теоретически) + можете прочесть его и попытаться найти потенциальные проблемы + самостоятельно. + + + + Если у вас есть собственные патчи, вам нужен исходный код для + того, чтобы их применять. + + + + Некоторым нравится иметь исходный код, чтобы его можно было + смотреть и хакать, заимствовать из него (конечно, при разрешающей + лицензионном соглашении) и тому подобное. - Теперь, когда вы имеете достаточное количество информации о том, - для чего предназначена Коллекция портов, вы в состоянии установить ваш - первый порт. Это может быть сделано двумя способами, каждый из - которых будет описан ниже. - - Однако, прежде чем мы этим займемся, вам нужно выбрать порт для - установки. Есть несколько способов сделать это, самый простой из - которых заключается в использовании списка портов на сайте FreeBSD - . Вы можете просто полистать весь список портов или - воспользоваться возможностями поиска на сайте. Каждый порт также - включает описание, так что вы можете прочесть некоторую информацию о - каждом из портов, прежде чем решить его установить. - - Другой метод заключается в использовании команды - whereis. Чтобы ей воспользоваться, просто наберите - в приглашении whereis <программа, которую вы хотите - установить> и если она имеется в вашей системе, вам - об этом будет сообщено, примерно так: - - -&prompt.root; whereis xchat -xchat: /usr/ports/irc/xchat -&prompt.root; - - - Это значит, что xchat (клиентская программа для irc) находится в - каталоге /usr/ports/irc/xchat. - - Еще одним способом поиска конкретного порта является использование - встроенной возможности поиска Коллекции портов. Чтобы ею - воспользоваться, вы должны находиться в каталоге - /usr/ports. Очутившись в этом каталоге, выполните - команду make search key=program-name, где - program-name - это название программы, которую вы хотите - найти. Например, если вы ищете xchat: - - -&prompt.root; cd /usr/ports -&prompt.root; make search key=xchat -Port: xchat-1.3.8 -Path: /usr/ports/irc/xchat -Info: An X11 IRC client using the GTK+ toolkit, and optionally, GNOME -Maint: jim@FreeBSD.org -Index: irc -B-deps: XFree86-3.3.5 bzip2-0.9.5d gettext-0.10.35 giflib-4.1.0 glib-1.2.6 gmake-3.77 gtk-1.2.6 - imlib-1.9.8 jpeg-6b png-1.0.3 tiff-3.5.1 -R-deps: XFree86-3.3.5 gettext-0.10.35 giflib-4.1.0 glib-1.2.6 gtk-1.2.6 imlib-1.9.8 jpeg-6b - png-1.0.3 tiff-3.5.1 - - - Вам следует обратить особое внимание на строчку Path:, - так как в ней указывается, где найти программу. Остальная сообщаемая - информация для непосредственно установки порта не нужна, поэтому здесь - она не описывается. - - - Для установки портов вы должны иметь привилегии пользователя - root. - - - Теперь, когда вы нашли порт, который хотите установить, можно - выполнять реальную установку. - - - Установка портов с компакт-диска - - Как вы, наверное, уже предположили, исходя из названия раздела, - все, что здесь будет описано, предполагает, что у вас имеется набор - компакт-дисков FreeBSD. Если у вас его нет, вы можете заказать его с - сайта - FreeBSD Mall. - - Предположим, что ваш компакт-диск с FreeBSD находится в - дисководе, он смонтирован в каталог /cdrom (а - точкой монтирования обязан быть каталог - /cdrom), и вы готовы к установке порта. Чтобы - начать, смените текущий каталог на тот, в котором находится порт, - который вы хотите установить: - - -&prompt.root; cd /usr/ports/irc/xchat - - - Оказавшись в каталоге xchat, вы увидите скелет порта. Следующим - шагом является шаг компиляции (также называемый шагом построения) - порта. Это выполняется простой выдачей команды - make в ответ на приглашение командного процессора. - Как только вы это сделаете, вы увидите нечто, выглядящее примерно - так: - - -&prompt.root; make ->> xchat-1.3.8.tar.bz2 doesn't seem to exist on this system. + Чтобы отслеживать обновления портов, подпишитесь на списки рассылки + &a.ports; и &a.ports-bugs;. + + В оставшейся части главы будет рассказано, как использовать пакеты + и порты для установки и управления программным обеспечением сторонних + разработчиков во FreeBSD. + + + + Поиск нужного вам приложения + + Перед тем, как устанавливать какое-либо приложение, вам нужно знать, + что вы хотите и как называется нужное вам приложение. + + Список имеющихся для FreeBSD приложений постоянно растёт. К счастью, + есть несколько способов найти то, что вам нужно: + + + + На сайте FreeBSD поддерживается обновляемый список имеющихся + приложений для FreeBSD, в котором можно выполнять поиск, по адресу + + http://www.FreeBSD.org/ports/. Порты разбиты на категории, + и вы можете либо выполнить поиск приложения по имени (если его + знаете), либо просмотреть список всех приложений, относящихся к + определённой категории. + + + FreshPorts + + + Dan Langille поддерживает сайт FreshPorts по адресу . + На нём отслеживаются изменения в приложениях из дерева портов, как + только они происходят, он позволяет вам отслеживать + один или несколько портов, и может высылать оповещение по электронной + почте при их обновлении. + + + FreshMeat + + + Если вы не знаете названия нужного вам приложения, попытайтесь + воспользоваться сайтом типа FreshMeat () + для поиска приложения, а затем возвратитесь на сайт FreeBSD, чтобы + проверить, есть ли порт для этого приложения. + + + + + + + + + Chern + Lee + Текст предоставил + + + + + + + Использование системы пакетов + + + Установка пакета + + + пакеты + установка + + + + pkg_add + + + Для установки пакетов программного обеспечения для FreeBSD из + локальных файлов или с сервера в сети вы можете использовать утилиту + &man.pkg.add.1;. + + + Сгрузка пакета вручную и его локальная установка + + &prompt.root; 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 freebsd@vienna.verio.net. +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 +&prompt.root; pkg_add lsof-4.56.4.tgz + + + Если у вас нет исходных текстов локальных пакетов (например, + набор CD-ROM с FreeBSD), то проще всего, наверное, воспользоваться + опцией для &man.pkg.add.1;. Это приведёт к тому, + что утилита автоматически определит правильный формат объектных файлов + и релиз, а затем сгрузит и установит пакет с сервера FTP. + + + pkg_add + + + &prompt.root; pkg_add -r lsof + + В примере выше нужный пакадж будет сгружен и установлен без всякого + дополнительного взаимодействия с пользователем. + Если вместо основного сайта вы хотите указать другое зеркало пакаджей + &os;, то для переопределения используемых по умолчанию значений вам + необходимо задать соответствующим образом значение переменной + PACKAGESITE. + Для сгрузки файлов утилита &man.pkg.add.1; использует функцию + &man.fetch.3;, которая принимает во внимание различные переменные + окружения, включая FTP_PASSIVE_MODE, + FTP_PROXY и FTP_PASSWORD. Если вы + находитесь за сетевым экраном или для работы с работы с FTP/HTTP вам + необходимо использовать прокси, то определите соответствующие + переменные. Обратитесь к справочной странице по &man.fetch.3; для + получения полного списка переменных. + Заметьте, что в примере выше вместо + lsof-4.56.4 используется lsof. + При использовании функций сгрузки с сети номер версии в имени пакаджа + должен быть опущен. Утилита &man.pkg.add.1; автоматически сгрузит + последнюю версию приложения. + + Файлы пакаджей распространяются в форматах + .tgz и .tbz. Вы можете найти + их по адресу или + взять с дистрибутива FreeBSD на CD-ROM. Каждый CD из комплекта + FreeBSD на 4 дисках (а также PowerPak и тому подобное) содержит + пакаджи в каталоге /packages. Расположение + пакаджей похоже на то, как организовано дерево + /usr/ports. Каждая категория имеет собственный + каталог, и каждый пакет помещается в каталог + All. + + Структура каталогов системы пакаджей соответствует структуре + системы портов; они взаимодействуют друг с другом для формирования + единой системы пакаджей/портов. + + + + Управление пакаджами + + + пакеты + управление + + + &man.pkg.info.1; является утилитой для вывода списка и описаний + различных установленных пакетов. + + + pkg_info + + + &prompt.root; 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 +... + + &man.pkg.version.1; является утилитой для вывода отчёта о версиях + всех установленных пакетов. Она сравнивает версию имеющегося пакета + с текущей версией, находящейся в дереве портов. + + + pkg_version + + + &prompt.root; pkg_version +cvsup = +docbook = +... + + Символы во второй колонке указывают сравнительную разницу в + возрасте установленной версии и версии, находящейся в локальном дереве + портов. + + + + + + Символ + + Значение + + + + + + = + + Версия установленного пакаджа соответствует версии, + находящейся в локальном дереве портов. + + + + < + + Установленная версия старее, чем та, что имеется в + дереве портов. + + + + > + + Установленная версия новее чем та, что есть в дереве + портов. (Скорее всего, локальное дерево портов + устарело.) + + + + ? + + В индексном файле портов установленный пакет не может быть + найден. (Это может случиться, например, если установленный + порт был удалён из коллекции портов или переименован.) + + + + * + + Имеется несколько версий пакета. + + + + + + + + Удаление пакаджа + + + pkg_delete + + + + пакаджи + + удаление + + + Для удаления ранее установленных пакетов с программным + обеспечением используйте утилиту &man.pkg.delete.1;. + + &prompt.root; pkg_delete xchat-1.7.1 + + + + Разное + + Вся информация о пакете хранится в каталоге + /var/db/pkg. Список установленных файлов и + описания всех пакетов могут быть найдены среди файлов этого + каталога. + + + + + Использование Коллекции Портов + + В этих разделах описаны основные приемы использования коллекции + портов для установки и удаления программ из вашей системы. + + + Получение Коллекции Портов + + Перед тем, как вы сможете устанавливать порты, вы сначала должны + установить коллекцию портов—она представляет собой в основном + набор файлов Makefile, патчей, файлов описаний, и + она размещается в каталоге /usr/ports. + + При установке вашей системы FreeBSD утилита + Sysinstall запрашивает, требуется ли вам + установка коллекции портов. Если вы ответили отрицательно, то можете + следовать следующим указаниям для установки коллекции портов: + + + Метод с использованием Sysinstall + + В этом методе повторно используется + sysinstall для ручной установки коллекции + портов. + + + Работая как пользователь root, запустите + /stand/sysinstall так, как это показано + ниже: + + &prompt.root; /stand/sysinstall + + + + Опуститесь вниз и выберите + Configure, нажмите + Enter + + + + Опуститесь вниз и выберите + Distributions, + затем нажмите Enter + + + + Опуститесь вниз к пункту ports, + нажмите клавишу Пробел + + + + Поднимитесь вверх к Exit, нажмите + Enter + + + + Выберите желаемый носитель для установки, например, CDROM, + FTP и так далее. + + + + Перейдите на пункт меню Exit и + нажмите Enter. + + + + Нажмите X для выхода из + sysinstall. + + + + Альтернативный метод получения и постоянной актуализации + вашей коллекции портов заключается в использовании + CVSup. Посмотрите на файл + CVSup из портов, + /usr/share/examples/cvsup/ports-supfile. + Прочтите раздел Использование CVSup + () для получения более полной информации об + использовании CVSup и этого файла. + + + Метод с использованием CVSup + + Это быстрый способ для получения коллекции портов при помощи + CVSup. Если вы хотите поддерживать ваше + дерево портов в актуальном состоянии, или узнать больше о + CVSup, то прочтите вышеотмеченные + разделы. + + + Установите порт net/cvsup. Обратитесь к разделу + Установка CVSup () для получения более подробной + информации. + + + + Работая как пользователь root, скопируйте + /usr/share/examples/cvsup/ports-supfile в + новое место, например, в каталог /root или в + ваш домашний каталог. + + + + Отредактируйте ports-supfile. + + + + Измените CHANGE_THIS.FreeBSD.org на + близкий к вам сервер CVSup. Посмотрите + раздел Зеркала CVSup () для получения полного списка + зеркалирующих сайтов. + + + + Запустите + cvsup + + &prompt.root; cvsup -g -L 2 /root/ports-supfile + + + + При повторных запусках этой команды все последние изменения + (кроме реального перестроения портов для вашей системы) будут + сгружаться и переноситься в вашу коллекцию портов. + + + + + + Установка портов + + + порты + + установка + + + Когда речь заходит о коллекции портов, то первым делом вы должны + понять, что именно подразумевается под словом скелет. + По сути скелетом порта является минимальный набор файлов, который + указывает вашей системе FreeBSD, как корректно откомпилировать и + установить программу. Скелет каждого порта включает: + + + + Makefile. Makefile + содержит различные директивы, которые определяют, как приложение + должно быть откомпилировано и куда в вашей системе оно должно быть + установлено. + + + + Файл distinfo. Этот файл содержит + информацию о файлах, которые должны существовать на вашей + системе для успешной сборки порта, и их контрольные суммы, для + проверки при помощи &man.md5.1; того, что файлы в процессе сгрузки + не были повреждены. + + + + Каталог files. Этот каталог + содержит патчи, использование которых необходимо для компиляции и + установки программы в вашей системе FreeBSD. Патчи - это, как + правило, маленькие файлы, в которых содержатся изменения, которые + нужно внести в какой-то конкретный файл. Они имеют обычный + текстовый формат и в основном содержат указания типа Удалить + строку 10 или Заменить строку 26 на + такую .... Патчи также называются + diff-файлами или просто диффами, + потому что они генерируются программой &man.diff.1;. + + Этот каталог также может содержать другие файлы, используемые + для построения порта. + + + + pkg-descr. Это более подробное, + зачастую многострочное описание программы. + + + + pkg-plist. Это список всех файлов, + которые будут установлены портом. В нем также содержатся + указания системе портов на удаление определенных файлов во + время удаления порта. + + + + В некоторых портах присутствуют и другие файлы, такие, как + pkg-message. Система портов использует эти файлы + для обработки особых ситуаций. Если вы хотите узнать более подробно + об этих файлах и о портах вообще, то обратитесь к Руководству по созданию портов для + FreeBSD. + + Теперь, когда вы имеете достаточное количество информации о том, + для чего предназначена коллекция портов, вы в состоянии установить ваш + первый порт. Это может быть сделано двумя способами, каждый из + которых будет описан ниже. + + Однако, прежде чем мы этим займёмся, вам нужно выбрать порт для + установки. Есть несколько способов сделать это, самый простой из + которых заключается в использовании списка портов на сайте + FreeBSD. Вы можете просто полистать весь список портов или + воспользоваться возможностями поиска на сайте. Каждый порт также + включает описание, так что вы можете прочесть некоторую информацию о + каждом из портов, прежде чем решить его установить. + + Другой метод заключается в использовании команды &man.whereis.1;. + Чтобы ей воспользоваться, просто наберите + в приглашении whereis file + , где file - программа, + которую вы хотите установить. И если она имеется в вашей системе, вам + об этом будет сообщено, как показано ниже: + + &prompt.root; whereis lsof +lsof: /usr/ports/sysutils/lsof + + Это говорит о том, что lsof (системная утилита) + находится в каталоге + /usr/ports/sysutils/lsof. + + Ещё одним способом поиска некоторого порта является использование + встроенной возможности поиска в коллекции портов. Чтобы ею + воспользоваться, вы должны находиться в каталоге + /usr/ports. Очутившись в этом каталоге, выполните + команду make search name=program-name, где + program-name - это название программы, которую вы хотите + найти. Например, если вы ищете lsof: + + &prompt.root; cd /usr/ports +&prompt.root; 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:, так как в ней указывается, где найти порт. + Остальная сообщаемая информация для установки порта не + нужна, поэтому здесь она описываться не будет. + + Для выполнения более глубокого поиска вы можете также использовать + make search key=string, + где string + представляет собой некоторый текст, который ищется. При этом будет + выполнен поиск в именах портов, комментариях, описаниях и + зависимостях, и его можно использовать для поиска портов, связанных с + некоторой темой, если вы не знаете названия программы, которую вы + ищете. + + В обоих этих случаях строка поиска нечувствительна к регистру. + Поиск LSOF приводит к тому же самому результату, что и + поиск lsof. + + + Для установки портов вы должны войти в систему как пользователь + root. + + + Теперь, когда вы нашли порт, который хотите установить, можно + выполнять реальную установку. В порт включаются инструкции + относительно того, как выполнять построение из исходного кода, но не + сам код. Вы можете получить исходный код с CD-ROM или из Интернет. + Исходный код распространяется в том виде, какой предпочёл выбрать + разработчик. Зачастую это tar-файл, обработанный утилитой gzip, но он + может также быть упакованным каким-то другим инструментом или быть + не сжатым. Исходный код программы, в каком бы то виде он ни был, + называется дистрибутивным (distfile). Вы можете + получить дистрибутивный файл с CD-ROM или через Интернет. + + + Установка портов с CD-ROM + + + порты + + установка с CD-ROM + + + Официальные образы CD-ROM Проекта FreeBSD больше не содержат + дистрибутивные файлы. На них есть достаточно места, которое лучше + использовать для предкомпилированных пакаджей. Продукты на CD-ROM, + такие, как FreeBSD PowerPak, включают дистрибутивные файлы, и вы + можете заказать их от таких поставщиков, как FreeBSD Mall. В этом + разделе предполагается, что у вас есть такой набор CD-ROM с + FreeBSD. + + Вставьте ваш CD-ROM с FreeBSD в привод. Смонтируйте его в + каталог /cdrom. (Если вы используете другую + точку монтирования, то установка работать не будет.) Чтобы начать, + перейдите в каталог с портом, который вы хотите установить: + + &prompt.root; cd /usr/ports/sysutils/lsof + + Оказавшись в каталоге lsof, вы увидите + структуру порта. Следующим шагом является компиляция, или построение + (build) порта. Это выполняется простой выдачей + команды make в ответ на приглашение командного + процессора. Как только вы это сделаете, то увидите выдачу, + выглядящую примерно так: + + &prompt.root; 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 xchat-1.3.8 ->> Checksum OK for xchat-1.3.8.tar.bz2. -===> xchat-1.3.8 depends on executable: bzip2 - found -===> xchat-1.3.8 depends on executable: gmake - found -===> xchat-1.3.8 depends on shared library: gtk12.2 - found -===> xchat-1.3.8 depends on shared library: Imlib.5 - found -===> xchat-1.3.8 depends on shared library: X11.6 - found -===> Patching for xchat-1.3.8 -===> Applying FreeBSD patches for xchat-1.3.8 -===> Configuring for xchat-1.3.8 +===> Extracting for lsof-4.57 ... -[вывод конфигуратора опущен] +[выдача при распаковке опущена] ... -===> Building for xchat-1.3.8 +>> 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 ... -[компиляция опущена] +[выдача при конфигурации опущена] ... -&prompt.root; - - - Заметьте, что, как только компиляция закончится, вы снова - вернетесь к приглашению вашего командного процессора. Следующим - шагом является установка порта. Чтобы это сделать, вам нужно просто - добавить одно слово к команде make, а именно слово - install: - - -&prompt.root; make install -===> Installing for xchat-1.3.8 -===> xchat-1.3.8 depends on shared library: gtk12.2 - found -===> xchat-1.3.8 depends on shared library: Imlib.5 - found -===> xchat-1.3.8 depends on shared library: X11.6 - found +===> Building for lsof-4.57 ... -[процедуры установки опущены] +[выдача при компиляции опущена] ... -===> Generating temporary packing list -===> Installing xchat docs in /usr/X11R6/share/doc/xchat -===> Registering installation for xchat-1.3.8 -&prompt.root; - +&prompt.root; - Как только вы вернулись к приглашению вашей оболочки, вы должны - суметь запустить приложение, которое только что установили. + Заметьте, что, как только компиляция закончится, вы снова + вернётесь к приглашению вашего командного процессора. Следующим + шагом является установка порта. Чтобы это сделать, вам нужно просто + добавить одно слово к команде make, а именно слово + install: - - Вы можете сэкономить лишний шаг, просто выдав команду - make install вместо make и - последующей make install в двух отдельных - шагах. - - - - Пожалуйста, будьте готовы к тому, что лицензии некоторых - портов не позволяют помещать их на компакт-диск. Это может - делаться по разным причинам, например, из-за обязательности - заполнения регистрационной формы перед сгрузкой, если дальнейшее - распространение запрещено, и так далее. Если вы хотите установить - порт, которого нет на компакт-диске, вам нужно иметь подключение к - Интернет, чтобы это сделать (обратитесь к следующему разделу). - - - - - Установка портов из Интернет - - Как и в предыдущем разделе, здесь предполагается, что у вас - имеется работающее подключение к Интернет. Если это не ваш случай, - вам нужно производить установку с - компакт-диска. - - Установка порта из Интернет производится точно так же, как если - бы делали ее с компакт-диска. Единственным отличием между ними - является тот факт, что исходный код сгружается из Интернет, а не - берется с компакт-диска. - - Выполняются те же самые шаги: - - -&prompt.root; make install ->> xchat-1.3.8.tar.bz2 doesn't seem to exist on this system. ->> Attempting to fetch from http://xchat.org/files/v1.3/. -Receiving xchat-1.3.8.tar.bz2 (305543 bytes): 100% -305543 bytes transferred in 2.9 seconds (102.81 Kbytes/s) -===> Extracting for xchat-1.3.8 ->> Checksum OK for xchat-1.3.8.tar.bz2. -===> xchat-1.3.8 depends on executable: bzip2 - found -===> xchat-1.3.8 depends on executable: gmake - found -===> xchat-1.3.8 depends on shared library: gtk12.2 - found -===> xchat-1.3.8 depends on shared library: Imlib.5 - found -===> xchat-1.3.8 depends on shared library: X11.6 - found -===> Patching for xchat-1.3.8 -===> Applying FreeBSD patches for xchat-1.3.8 -===> Configuring for xchat-1.3.8 + &prompt.root; 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. +&prompt.root; + + Как только вы вернулись к приглашению вашей оболочки, вы должны + суметь запустить приложение, которое только что установили. Так как + lsof является программой, которая запускается с + повышенными правами, то выдаётся предупреждение о безопасности. Во + время построения и установки портов вы должны принимать во внимание + все выдаваемые предупреждения. + + + Вы можете сэкономить лишний шаг, просто выдав команду + make install вместо make и + последующей make install в двух отдельных + шагах. + + + + Некоторые командные процессоры для ускорения поиска выполнимых + файлов и команд кэшируют имена таких программ, которые доступны для + вызова из каталогов, перечисленных в переменной окружения + PATH. Если вы используете один из таких командных + процессоров, то перед использованием только что добавленных команд + вам может понадобиться вызвать директиву rehash + после установки порта. Это верно как для оболочек, являющихся + частями базового системного набора (например, + tcsh), так и командных процессоров, доступных в + виде портов (например, shells/zsh). + + + + Пожалуйста, будьте готовы к тому, что лицензии некоторых + портов не позволяют помещать их на CD-ROM. Это может + делаться из-за обязательности заполнения регистрационной формы + перед сгрузкой или запрета на дальнейшее распространение, либо по + какой-то другой причине. Если вы хотите установить порт, которого + нет на CD-ROM, вам нужно иметь подключение к Интернет, чтобы это + сделать (обратитесь к следующему разделу). + + + + + Установка портов из Интернет + + Как и в предыдущем разделе, здесь предполагается, что у вас + имеется работающее подключение к Интернет. Если это не ваш случай, + вам нужно выполнять установку с + CD-ROM либо поместить копию дистрибутивного файла в каталог + /usr/ports/distfiles вручную. + + Установка порта из Интернет производится точно так же, как если + бы делали её с CD-ROM. Единственным отличием между ними + является тот факт, что дистрибутивный файл сгружается из Интернет, а + не считывается с CD-ROM. + + Выполняются те же самые шаги: + + &prompt.root; 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 xchat-1.3.8 +===> Building for lsof-4.57 ... -[компиляция опущена] +[выдача компиляции опущена] ... -===> Installing for xchat-1.3.8 -===> xchat-1.3.8 depends on shared library: gtk12.2 - found -===> xchat-1.3.8 depends on shared library: Imlib.5 - found -===> xchat-1.3.8 depends on shared library: X11.6 - found +===> Installing for lsof-4.57 ... -[процедуры установки опущены] +[выдача процедуры установки опущена] ... ===> Generating temporary packing list -===> Installing xchat docs in /usr/X11R6/share/doc/xchat -===> Registering installation for xchat-1.3.8 -&prompt.root; - - - Как вы видите, единственным отличием является строка, в которой - указывается, откуда система сгружает порт. - - Это все об установке портов на вашу систему. Далее вы узнаете, - как удалить порт из вашей системы. - - - - - Удаление установленных портов - - Теперь, когда вы знаете, как устанавливать порты, вы наверное, уже - задумывались о том, как же их удалять, просто даже на тот случай, если - вы установили один из них, а позже решили, что установили не тот порт. - Следующие несколько абзацев будут посвящены именно - этому вопросу. - - Сейчас мы займемся удалением порта из нашего предыдущего примера - (а это была программа xchat, если вы обратили внимание). Как и при - установке портов, первым делом вы должны перейти в каталог с портом, - которым, как вы помните, был /usr/ports/irc/xchat. - После смены каталога вы готовы к удалению xchat. Это делается командой - make deinstall (подходящее название?): - - -&prompt.root; cd /usr/ports/irc/xchat +===> 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; + + Как вы видите, единственным отличием является строка, в которой + указывается, откуда система сгружает дистрибутивный файл + порта. + + Для сгрузки файлов система портов использует утилиту + &man.fetch.1;, которая принимает во внимание различные переменные + окружения, включая FTP_PASSIVE_MODE, + FTP_PROXY и FTP_PASSWORD. Если вы + находитесь за сетевым экраном или для работы с работы с FTP/HTTP вам + необходимо использовать прокси, то определите соответствующие + переменные. Обратитесь к справочной странице по &man.fetch.3; для + получения полного списка переменных. + + Пользователям, которые не могут быть постоянно подключенными + к сети, поможет команда make + fetch. Просто запустите эту + команду в каталоге самого верхнего уровня + (/usr/ports), и требуемые файлы будут сгружены. + Эта команда будут работать также и с вложенными категориями, + например: /usr/ports/net. + Заметьте, что если порт имеет зависимости от библиотек или других + портов, то он не будет также сгружать + дистрибутивные файлы этих портов. Замените + fetch на + fetch-recursive, если вы хотите выполнить + сгрузку также и всех этих зависимостей порта. + + + Вы можете построить все порты в категории за раз, запустив + команду make в каталоге верхнего уровня, как и + в вышеописанном методе с make + fetch. Однако это опасно, так как + некоторые порты не могут сосуществовать. В других случаях + некоторые порты могут устанавливать два различных файла с одним и + тем же именем. + + + В некоторых редких случая пользователям необходимо получить + tar-архивы с сайтов, отличающихся от MASTER_SITES + (это место, откуда файлы обычно сгружаются). Вы можете + переопределять значение MASTER_SITES посредством + следующей команды: + + &prompt.root; cd /usr/ports/directory + + &prompt.root; 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. + К примеру: + + &prompt.root; make PORTSDIR=/usr/home/example/ports install + + будет компилировать порт в каталоге + /usr/home/example/ports, а установит всё в + /usr/local. + + &prompt.root; make PREFIX=/usr/home/example/local install + + будет компилировать его в каталоге + /usr/ports, а установит в + /usr/home/example/local. + + И, конечно, + + &prompt.root; make PORTSDIR=../ports PREFIX=../local install + + использует обе возможности (полная команда слишком длинна для + написания на этой странице, однако вы должны уловить общую + идею). + + Альтернативным способом является задание значений этих переменных + в параметрах вашего окружения. Обратитесь к страницам справки по + вашему командному процессору для получения инструкций о том, как это + сделать. + + + + Работа с <command>imake</command> + + Некоторые порты, использующие imake (часть + X Windows System) нормально не работают с PREFIX, + и будут пытаться установиться в дерево + /usr/X11R6. Аналогично некоторые Perl-порты + игнорируют значения PREFIX и устанавливаются в + дерево Perl. Заставить такие порты воспринимать переменную + PREFIX является сложной или невыполнимой + задачей. + + + + + Удаление установленных портов + + + порты + + удаление + + + Теперь, когда вы знаете, как устанавливать порты, вы наверное, уже + задумывались о том, как же их удалять, просто даже на тот случай, если + вы установили один из них, а позже решили, что установили не тот порт. + Мы удалим порт из нашего предыдущего примера (а это была программа + lsof, если вы обратили внимание). Как и при + установке портов, первым делом вы должны перейти в каталог с портом, + /usr/ports/sysutils/lsof. После смены каталога вы + готовы к удалению xchat. Это делается командой + make deinstall: + + &prompt.root; cd /usr/ports/sysutils/lsof &prompt.root; make deinstall -===> Deinstalling for xchat-1.3.8 -&prompt.root; - - - Это было достаточно легко. Вы успешно удалили xchat из вашей - системы. Если вам захочется переустановить эту программу, то это - можно будет сделать, выдав команду make reinstall - из каталога /usr/ports/irc/xchat. - - - - - Устранение некоторых проблем - - В этом разделе затронуты некоторые из наиболее часто задаваемых - вопросов о Коллекции портов и описаны основные методы устранения - проблем, а также рассказано, что делать, если порт не работает. - - - Некоторые Вопросы и Ответы - - - - - Я думал, здесь будут обсуждаться модемы??! - - - - А, вы, наверное, имеете в виду последовательные порты на - задней панели вашего компьютера. Здесь мы используем слово - порт в смысле результата портирования - (переноса) программы с одной версии UNIX на другую. - - - - - - Я думал, что для установки дополнительных программ - вы посоветуете использовать пакаджи? - - - - Да, обычно это самый легкий и быстрый способ сделать - это. - - - - - - Если так, то зачем тогда возиться с портами? - - - - На это есть несколько причин: - - - - Условия лицензирования некоторых пакетов программного - обеспечения запрещают распространение в виде двоичного кода. - Они должны распространяться в виде исходного кода. - - - - Некоторые не доверяют дистрибутивам в виде двоичного - кода. В конце концов, исходный код вы можете (теоретически) - прочесть сами и найти причины появления возможных - проблем. - - - - Если у вас есть свои собственные патчи, то вам нужен - исходный код для того, чтобы их применить. - - - - У Вас может быть своё мнение по поводу того, как именно - должна быть скомпилирована программа, и это мнение может - отличаться от мнения того человека, который создавал - пакадж—некоторые очень строго придерживаются - определённых настроек параметров оптимизации, а также того, - строить ли отладочные версии, а затем убирать отладочную - информацию командой strip или нет, и так далее. - - - - Как правило. пакаджи строятся с весьма консервативными, - стандартными настройками. Если в порте присутствует параметр - компиляции, задающий использование кода, специфичного для - некоторого процессора или нестандартного адаптера, то Вы - можете включить его использование сами, не привлекая людей, - создающих порты, к генерации множества различных версий - пакаджей. - - Самым обычным исключением их этого правила являются размеры - бумаги. Хотя может быть создан пакадж с поддержкой по - умолчанию различных размеров бумаги, зачастую мы делаем - несколько пакаджей, по одному на конкретный размер - бумаги. - - - - Некоторым нравится иметь всегда под рукой исходный код, - так что они могут его читать, если им станет скучно, хакать - его, заимствовать оттуда что-либо (конечно, если это - позволяет лицензионное соглашение), и так далее. - - - - Если у вас нет исходных текстов, то это не программы! - ;-) - - - - - - - - Что такое патч? - - - - Патч - это маленький файл, в котором указано, как перейти от - одной версии файла к другой. Он имеет формат обычного текста, и, - как правило, содержит указания типа удалить строку - 23, добавить вот эти две строки после строки - 468 или заменить строку 197 вот на такую. - Их также называют дифф-файлами или просто диффами, потому что - они создаются программой diff. - - - - - - Что это за tar-файлы? - - - - Это файлы, оканчивающиеся на .tar или, - как вариант, на .tar.gz, - .tar.Z, .tar.bz2 и даже - .tgz. - - В основном такие файлы представляют собой дерево каталогов, - которое было заархивировано в один файл - (.tar) и (может быть) подвергнуто сжатию - (.gz). Такая методика первоначально - использовалась для архивов на лентах Tape - ARchives (откуда, собственно, и пошло слово - tar), и она широко используется для - распространения исходного кода программ в Интернет. - - Вы можете просмотреть, какие файлы находятся в этих архивах, - или даже самостоятельно извлечь их с помощью стандартной для UNIX - программы tar, включенной в стандартную поставку системы FreeBSD, - как здесь: - - -&prompt.user; tar tvzf foobar.tar.gz -&prompt.user; tar xzvf foobar.tar.gz -&prompt.user; tar tvf foobar.tar -&prompt.user; tar xvf foobar.tar - - - - - - - А контрольная сумма? - - - - Это число, получаемое в результате сложения содержимого того - файла, который вы хотите проконтролировать. Если меняется хоть - один символ, контрольные суммы перестают совпадать, так что - простое их сравнение поможет выявить изменение. - - - - - - Я делал все, что здесь сказано, при компиляции портов с - компакт-диска и все прекрасно работало до тех пор, пока я не - попытался установить порт программы kermit. - - -&prompt.root; make install ->> cku190.tar.gz doesn't seem to exist on this system. ->> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/. - - - Почему он не может быть найден? У меня не тот - компакт-диск? - - - - Как уже было сказано в главе о компиляции портов с компакт-диска, - некоторые порты не могут быть помещены на CDROM из-за их - лицензионных ограничений. Kermit является примером такого - приложения. Его условия лицензирования не позволяют нам - поместить его tar-файл на компакт-диск, так что вам придется - скачать его вручную—извините! - - Причиной, по которой вы получили все эти сообщения об - ошибках, является то, что в тот момент вы не были подключены к - Интернет. Как только вы скачаете этот файл с любого из - MASTER_SITES (перечисленных в Makefile), то сможете начать - процесс установки заново. - - - - - - Я это сделал, но, когда я попытался поместить этот файл в - каталог /usr/ports/distfiles, то получил - сообщение об ошибке, сообщающее об отсутствии прав - доступа. - - - - При работе система портов ищет tar-файл в каталоге - /usr/ports/distfiles, однако вы не сможете - скопировать туда ничего, потому что это на самом деле это - символическая ссылка на компакт-диск, который доступен только для - чтения. Вы можете заставить систему выполнять поиск в другом - месте, сделав следующее: - - -&prompt.root; make DISTDIR=/where/you/put/it install - - - - - - - Система портов работает, только когда все находится в - каталоге /usr/ports? Администратор нашей - системы сказал, что я должен держать все свои файлы в - /u/people/guests/wurzburger, но тогда ничего - не работает. - - - - Для того, чтобы указать системе построения портов на - использование других каталогов, вы можете использовать переменные - PORTSDIR и PREFIX. В - частности, - - -&prompt.root; make PORTSDIR=/u/people/guests/wurzburger/ports install - - - будет строить порт в каталоге - /u/people/guests/wurzburger/ports, а - устанавливать все в /usr/local. - - -&prompt.root; make PREFIX=/u/people/guests/wurzburger/local install - - - будет строить порт в каталоге /usr/ports - и устанавливать в - /u/people/guests/wurzburger/local. - - И, наконец, - - -&prompt.root; make PORTSDIR=../ports PREFIX=../local install - - - использует обе переменные (этот пример слишком длинен для - помещения на страницу полностью, но вы должны уловить общую - идею). - - Некоторые порты, использующие &man.imake.1; (часть X Windows - System), не очень хорошо работают с PREFIX, и - всё равно будут пытыться устанавливаться в каталог - /usr/X11R6. Подобным же образом некоторые - порты на языке Perl игнорируют значение PREFIX и - устанавливаются в дерево Perl. Заставить такие порты работать с - PREFIX трудно или невозможно. - - Если вам не нравится набирать все это каждый раз при - установке портов, можно поместить эти переменные в ваше - окружение. Прочтите страницы Справочника по вашему командному - процессору и найдите, как это сделать. - - - - - - У меня нет компакт-диска с FreeBSD, но я хочу скопировать все - tar-файлы вручную на мою систему, чтобы при установке порта не - ждать каждый раз, когда же он скачается. Есть ли способ получить - все эти файлы сразу? - - - - Чтобы скачать все tar-файлы для Коллекции портов, - сделайте вот что: - - -&prompt.root; cd /usr/ports -&prompt.root; make fetch - - - Чтобы скачать все tar-файлы для какого-то одного каталога - из дерева портов, выполните следующее: - - -&prompt.root; cd /usr/ports/directory -&prompt.root; make fetch - - - ну а что касается одного конкретного порта—ну, я думаю, - вы уже догадались, что вам нужно сделать. - - - - - - Я знаю, что, скорее всего, быстрее получится скачивать - tar-файлы с одного из ближайших зеркальных серверов FreeBSD. - Есть ли способ указать, что порты нужно сгружать оттуда, а не - с серверов, указанных в качестве MASTER_SITES? - - - - Да. Если вы, например, знаете, что ftp.FreeBSD.org гораздо ближе к вам, чем - сайты, перечисленные в строке MASTER_SITES, то - сделайте так: - - -&prompt.root; cd /usr/ports/directory -&prompt.root; make MASTER_SITE_OVERRIDE= \ -ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch - - - - - - - Я хочу знать, какие файлы нужно будет скачать при выполнении - команды make до того, как они начнут - скачиваться. - - - - Команда make fetch-list выдаст список - файлов, которые нужны для построения порта. - - - - - - Есть ли способ предотвратить компиляцию порта? Я хочу - немножко покопаться в исходных текстах до того, как буду - устанавливать порт, однако несколько поднадоедает каждый раз - следить и нажимать в нужный момент control-C. - - - - При выполнении команды make extract - процесс построения остановится после того, как будет сгружен и - распакован исходный код порта. - - - - - - Я пытаюсь создать собственный порт и хочу отключить - компиляцию до тех пор, пока не увижу, что мои патчи работают - нормально. Есть ли команда типа make extract, - но работающая для патчей? - - - - Ага, make patch - это то, что вы ищете. - Также вам может оказаться полезным параметр - PATCH_DEBUG. И кстати, благодарим вас за ваши - усилия! - - - - - - Я слышал, что некоторые параметры работы компилятора могут - приводить к ошибкам. Это правда? Как я могу быть уверенным, что - порт компилируется с правильными параметрами? - - - - Да, в версии 2.6.3 компилятора gcc - (которая поставлялась с FreeBSD 2.1.0 и 2.1.5), параметр - мог приводить к генерации ошибочного кода, - если вы не использовали также опцию - . (Большинство портов не - используют параметр ). У вас - должно получиться указание используемых - параметров компилятора примерно следующим образом: - - -&prompt.root; make CFLAGS='-O2 -fno-strength-reduce' install - - - или посредством редактирования - /etc/make.conf, но, к сожалению, не все - порты это поддерживают. Самый надежный способ - это выполнить - команду make configure, а затем перейти в - каталог с исходными текстами и изучить файлы Makefile - вручную, но это может оказаться утомительным занятием, если - исходный код имеет много подкаталогов, каждый с собственными - make-файлами. - - Параметры компиляции по умолчанию во FreeBSD достаточно - консервативны, так что если Вы их не меняли, то и проблем возникнуть - не должно. - - - - - - Портов так много, что трудно найти именно тот, который мне - нужен. Есть ли где-нибудь список всех имеющихся портов? - - - - Взгляните на файл INDEX в каталоге - /usr/ports. Если вы хотите выполнить поиск - в коллекции портов по ключевому слову, вы это тоже осуществимо. - Например, вы можете найти порты, связанные с языком - программирования LISP, с помощью команды: - - -&prompt.user; cd /usr/ports -&prompt.user; make search key=lisp - - - - - - - Я начал устанавливать порт foo, однако - система неожиданно остановила компиляцию и стала компилировать - порт bar. Что, собственно, произошло? - - - - Порту foo требуется что-то, имеющееся в - порту bar — например, если - foo использует графику, в - bar может присутствовать библиотека с - полезными функциями обработки графики. Или - bar может быть инструментом, который необходим - для компиляции порта foo. - - - - - - - Я установил программу grizzle из портов и - оказалось, что это бесполезная трата дискового пространства. Я - хочу удалить ее, но не знаю, где находятся все файлы этой - программы. Что посоветуете? - - - - Нет проблем, просто сделайте следующее: - - -&prompt.root; pkg_delete grizzle-6.5 - - - Альтернативным способом является: - - -&prompt.root; cd /usr/ports/somewhere/grizzle -&prompt.root; make deinstall - - - - - - - Минуточку, вы же должны знать номер версии для использования - в этой команде. Вы всерьез полагаете, что я должен их все - помнить?? - - - - Вовсе нет, вы можете выяснить это с помощью: - - -&prompt.root; pkg_info -a | grep grizzle -Information for grizzle-6.5: -grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up -arcade game. - - - - - - - Если говорить о дисковом пространстве, то каталог с портами, - похоже, занимает ужасно много места. Можно ли удалять отсюда - что-нибудь? - - - - Да, если вы установили программу и достаточно уверены, - что ее исходные тексты вам больше не понадобятся, то хранить их - вовсе не обязательно. Лучше сделать это так: - - -&prompt.root; cd /usr/ports -&prompt.root; make clean - - - в результате чего будет сделан проход по всем подкаталогам и - произойдет удаление всего, кроме скелетов каждого порта. - - - - - - Я попробовал сделать так, но все равно все эти архивы или как - там вы их называете, остались в каталоге - distfiles. Могу ли я удалить и их - тоже? - - - - Да, если вы уверены, что с ними покончено, то их тоже можно - удалить. Их можно удалить вручную, или командой - make distclean. - - - - - - Мне нравится иметь все больше и больше программ для того, - чтобы поиграться с ними. Есть ли способ установить все порты за - раз? - - - - Просто сделайте вот так: - - -&prompt.root; cd /usr/ports -&prompt.root; make install - - - Будьте внимательны, потому что некоторые порты могут - устанавливать файлы с уже имеющимися именами. Если Вы - устанавливаете два работающих с графикой приложения, и оба они - устанавливают файл /usr/local/bin/plot, то - у вас однозначно возникнут проблемы. - - - - - - OK, я попробовал сделать это, но подумал, что этот процесс - займет очень много времени, так что пошел спать, оставив все - работать. Когда же я посмотрел утром на компьютер, то было - откомпилировано только три с половиной порта. Что-то было - сделано не так? - - - - Нет, проблема в том, что некоторые порты задают вам вопросы, - на которые мы не можем ответить за вас (например, Хотите - ли вы печатать на листы формата A4 или US letter?), но - на эти вопросы кто-то должен ответить. - - - - - - Я вовсе не хочу провести весь день, пялясь в монитор. Есть - идеи получше? - - - - OK, перед тем, как идти в кроватку/на работу/парк отдыха, - сделайте вот что: - - -&prompt.root cd /usr/ports -&prompt.root; make -DBATCH install - - - При этом будут установлены все порты, которым - не нужно взаимодействовать с пользователем. - Затем, когда вы вернетесь, сделайте: - - -&prompt.root; cd /usr/ports -&prompt.root; make -DIS_INTERACTIVE install - - - чтобы завершить работу. - - - - - - На моей работе используется программа - frobble, которая есть в вашей Коллекции - портов, однако мы ее несколько исправили, чтобы получить то, что - нужно. Есть ли способ создания наших собственных пакаджей для их - распространения по нашим сайтам? - - - - Нет проблем, полагая, что вы знаете, как сделать патчи - с вашими изменениями: - - -&prompt.root; cd /usr/ports/somewhere/frobble -&prompt.root; make extract -&prompt.root; cd work/frobble-2.8 -[Apply your patches] -&prompt.root; cd ../.. -&prompt.root; make package - - - - - - - Эта система портов - весьма хитрая штука. Я не могу понять, - как вы это делаете. В чем секрет? - - - - Здесь нет никакого секрета, просто взгляните на файлы - bsd.port.mk и - bsd.port.subdir.mk в каталоге с - make-файлами. - - (Читателям, испытывающим дурноту при чтении скриптов, - советуем не переходить по этой ссылке...) - - - - - - - Помогите! Этот порт не работает! +===> Deinstalling for lsof-4.57 + + Это было достаточно легко. Вы удалили lsof из + вашей системы. Если вам захочется переустановить эту программу, то это + можно будет сделать, выдав команду make reinstall + из каталога /usr/ports/sysutils/lsof. + + Последовательность команд make deinstall и + make reinstall не сработает, если вы запустите + команду make clean. Если вы хотите убрать порт из + системы после зачистки каталога, используйте команду + &man.pkg.delete.1;, как это описано в разделе о пакаджах Руководства. + + + + Порты и дисковое пространство + + + порты + + дисковое пространство + + + Использование коллекции портов может определённо стоить вам + дискового пространства. По этой причине вы не должны забывать о + зачистке рабочих каталогов при помощи команды make + clean. При этом будет удаляться каталог + work, возникающий после построения и установки + порта. Вы можете также удалить tar-файлы из каталога + distfiles, а позже удалить установленные порты, + если они не используются. + + Некоторые пользователи ограничивают набор категорий портов, + помещая в файл refuse соответствующую запись. + В этом случае при запуске программы CVSup + она не будет сгружать файлы из указанных категорий. + + + + Обновление портов + + + portupgrade + + + + порты + + обновление + + + Поддержание ваших портов в актуальном состоянии может оказаться + нудным занятием. К примеру, чтобы обновить порт, вам нужно перейти в + каталог с портами, построить порт, удалить старый порт, установить + новый, а затем вычистить его после построения. Представьте, сколько + действий (пять) нужно сделать! Скучно, да? Это было большой + проблемой для системных администраторов, но теперь есть утилиты, + выполняющие эти действия за нас. Например, утилита + sysutils/portupgrade сделает всё за + вас сама! Просто установите её, как обычный порт, при помощи команды + make install clean. + + Теперь создайте базу данных командой pkgdb -F. + Она выяснит перечень установленных портов и создаст файл базы данных + в каталоге /var/db/pkg. Теперь при вызове + команды portupgrade -a, она будет использовать эту + базу данных и файл портов INDEX. Наконец, + portupgrade сгрузит, построит, сделает + резервную копию, установит и очистит порты, которые были обновлены. + portupgrade имеет массу параметров для + использования в разных ситуациях, из которых наибольшего внимания + заслуживает описываемая далее. + + Если вы хотите обновить только определённое приложение, но не + полностью базу данных, используйте portupgrade + pkgname, с флагом + , если portupgrade + должен отработать все пакаджи, которые зависят от указанного, и + использовать флаг для отработки всех пакаджей, + которые требуют указанные пакаджи. Для использования при установке + пакаджей, а не портов, укажите флаг , а для простой + сгрузки дистрибутивных файлов без построения или установки чего бы то + ни было задайте флаг . Дополнительную информацию + можно получить на странице справки по + утилите &man.portupgrade.1;. + + + Важно регулярно обновлять базу данных пакаджей при помощи + команды pkgdb -F для восстановления целостности, + особенно когда portupgrade запрашивает + вас это сделать. Не прерывайте работы + portupgrade при обновлении базы данных + пакаджей, это может привести к рассогласованию данных. + + + Существуют и другие утилиты, которые делают подобные вещи, + посмотрите в каталоге ports/sysutils и выберите + то, что вам подходит. + + + + + Действия после установки + + После установки нового приложения вам обычно требуется прочесть + какую-либо документацию, если она есть, отредактировать нужные + конфигурационные файлы, проверить, что приложение запускается во время + загрузки системы (если это даемон), и так далее. + + Очевидно, что в шаги, в точности требуемые для конфигурации каждого + приложения, отличаются. Однако, если если вы только что установили + новое приложение и вам интересно, Что же дальше?, то вам + могут помочь следующие советы: + + + + Воспользуйтесь командой &man.pkg.info.1; для определения того, + куда и какие файлы были установлены. К примеру, если вы только что + установили FooPackage версии 1.0.0, то по команде + + &prompt.root; pkg_info -L foopackage-1.0.0 | less + + будут выведен список всех файлов, установленных пакетов. + Обратите особое внимание на файлы в каталогах + man/, которые являются справочными страницами, + etc/, которые будут являться конфигурационными + файлами, и doc/, которые будут являться более + подробной документацией. + + Если вы не уверены, какая версия приложения была только что + установлена, то по команде типа + + &prompt.root; pkg_info | grep -i foopackage + + будут выведен список всех установленных пакаджей, в названии + которых присутствует foopackage Замените + foopackage в командной строке на то, что вам + нужно. + + + + Как только вы определите, куда были установлены справочные + страницы приложения, просмотрите их при помощи команды &man.man.1;. + Подобным же образом просмотрите примеры конфигурационных файлов и + всю дополнительную документацию, которая была поставлена. + + + + Если у приложения имеется веб-сервер, поищите там дополнительную + документацию, ответы на часто задаваемые вопросами и так далее. Если + вы не уверены, каков адрес веб-сайта, он может быть указан в выводе + команды + + &prompt.root; pkg_info foopackage-1.0.0 + + Строка WWW:, если она есть, должна содержать + URL Web-сайта приложения. + + + + Порты, которые должны запускаться при загрузке системы (такие, + как серверы Internet), как правило, устанавливают примерный скрипт в + каталог /usr/local/etc/rc.d. Вы должны + просмотреть скрипт на предмет его корректности и отредактировать или + переименовать его, если это нужно. Обратитесь к разделу о Запуске сервисов для + получения более полной информации. + + + + + + Обработка нерабочих портов Если вы встретили порт, который у вас не работает, есть несколько вещей, которые вы можете сделать, а именно: - Исправьте его! - Раздел о создании - портов должен вам помочь. + Исправьте его! В Руководстве по созданию + портов содержится подробная информация об инфраструктуре + Портов, так что вы сможете исправить иногда + встречающиеся порты с ошибками или даже создать собственные! - Надавите—только по электронной почте! - Сначала пошлите письмо человеку, сопровождающему порт. Наберите - команду make maintainer или прочтите - Makefile, чтобы найти его адрес. Не забудьте - указать имя и версию порта (скопировав строчку - $FreeBSD: из файла Makefile) - и включите в письмо весь вывод, предшествующий возникновению ошибки. + Надавите—только по электронной + почте! Сначала пошлите письмо человеку, сопровождающему + порт. Наберите команду make maintainer или + прочтите Makefile, чтобы найти его адрес. Не + забудьте указать имя и версию порта (скопировав строчку + $FreeBSD: из файла + Makefile) и включите в письмо весь + вывод, предшествующий возникновению ошибки. Если вы не получили ответа от этого человека, то можете - воспользоваться командой send-pr для посылки + воспользоваться командой &man.send-pr.1; для посылки сообщения об ошибке. - Забудьте об этом. Это самый простой путь—лишь весьма - незначительное число портов можно отнести к разряду жизненно - необходимых. Также имеется большая вероятность того, что - все проблемы будут исправлены в следующей версии при обновлении - порта. - - - - Сгрузите пакадж с ближайшего к вам сервера. - Основная коллекция пакаджей находится на сервере + Сгрузите пакадж с ближайшего к вам FTP-сервера. + Основная коллекция пакетов находится на сервере ftp.FreeBSD.org в каталоге + url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/">каталоге с пакаджами, но первым делом проверьте местное зеркало! Это, скорее всего, будет работать, и сделать это, кроме того, будет гораздо быстрее, чем пытаться компилировать порты из исходного кода. Воспользуйтесь программой &man.pkg.add.1; для - установки пакаджа в вашей системе. + установки пакета в вашей системе. - - - - - Вопросы повышенной сложности - - Описание, которое здесь было, для удобства перемещено в отдельное Руководство по портированию. - Пожалуйста, обращайтесь к нему, если вы собираетесь создавать и присылать - нам ваши порты. - - +