Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

2004 г

Руководство FreeBSD
(FreeBSD Handbook)

Проект Русской Документации FreeBSD

содержание

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

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

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

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

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

Метод с использованием Sysinstall

В этом методе повторно используется sysinstall для ручной установки коллекции портов.

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

    # /stand/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. При повторных запусках этой команды все последние изменения (кроме реального перестроения портов для вашей системы) будут сгружаться и переноситься в вашу коллекцию портов.

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

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

  • Makefile. 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 перед установкой нового приложения. Эту программу можно найти в коллекции портов (security/portaudit). Запустите portaudit -F перед установкой нового порта для загрузки свежей базы данных уязвимостей. Проверка безопасности и обновление базы данных должны выполняться при повседневной проверке безопасности системы. За дальнейшей информацией обращайтесь к страницам справочника portaudit(1) и periodic(8).

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

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

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

# 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), так и командных процессоров, доступных в виде портов (например, shells/zsh).

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

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

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

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

Иногда бывает полезным (или необходимым) использование других каталогов с портами и дистрибутивными файлами. Для переопределения каталогов, используемых по умолчанию, используются переменные 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

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

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

4.5.2.4. Работа с imake

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

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

Теперь, когда вы знаете, как устанавливать порты, вы наверное, уже задумывались о том, как же их удалять, просто даже на тот случай, если вы установили один из них, а позже решили, что установили не тот порт. Мы удалим порт из нашего предыдущего примера (а это была программа lsof, если вы обратили внимание). Как и при установке портов, первым делом вы должны перейти в каталог с портом, /usr/ports/sysutils/lsof. После смены каталога вы готовы к удалению xchat. Это делается командой 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), как это описано в разделе о пакетах Руководства.

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

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

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

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

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

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

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

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

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

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

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...