После того как мы установили FreeBSD, необходимо обновить коллекцию. портов. В общем, что такое порт и коллекция портов? Термин port — сокращение от portability, то есть переносимость: один и тот же порт может быть установлен на машины с разной архитектурой и версией ОС, тогда как пакеты собираются для конкретной версии FreeBSD и аппаратной платформы. Большинство портов позволяют создавать пакеты (или «пэкэджи» от англ. package — пакет, посылка), с помощью «цели» package для утилиты make. Пакет представляет собой архив, содержащий собранные исполняемые и другие необходимые файлы, а также данные и скрипты для быстрой автоматической установки или удаления данной программы. Вместе с программой ставятся все зависимости — другие пакеты, с программами или библиотеками необходимые данной программе.
Недостатком распространения программ в пакетах является ограничение на архитектуру, а также — отсутствие гибкости присущей портам — сложные порты могут конфигурироваться на тот или иной вариант сборки (называемый flavor — дословно «аромат»), пакеты же, как правило, собираются для одного (простейшего) или нескольких популярных вариантов конфигурации. К тому же условия лицензирования некоторых дистрибутивов программного обеспечения запрещает распространение в двоичном виде, что приводит к недопустимости распространения данных приложений в виде пакетов.
Кроме всего этого, для обеспечения работоспособности на максимальном количестве систем сборка пакетов происходит с консервативными параметрами. Так, для архитектуры x86, типичным является генерация кода под процессор i486, в то время как генерация кода под процессоры семейства 686 (Pentium Pro и выше) по некоторым оценкам может дать прирост производительности (в математических вычислениях) до 20 % и уменьшить размеры исполняемых файлов. Разумеется, такие тонкости критичны для серверов с большой вычислительной загрузкой.
Порт в операционной системе FreeBSD, это папка с минимальным набором файлов, скелетом, необходимым для нахождения и скачивания на локальную машину исходных текстов программного обеспечения, его конфигурирования, компиляции и наконец установки уже готовой программы в соответствующие каталоги. Все эти манипуляции выполняются утилитой make с использованием конфигурационных файлов порта. Файлы порта представляют из себя сценарии, записанные в обычные текстовые файлы.
Коллекцией портов FreeBSD называется древовидная структура в которой размещаются все порты. Коллекция портов располагается по адресу /usr/ports, в директории ports, в свою очередь располагаются поддиректории, относящиеся к определенному классу программного обеспечения. И так, как же обновить порты? Думаю, ответ на вопрос, зачем обновлять коллекцию портов, все знают. Обновление желательно проводить сразу после установки операционной системы и перед установкой программ.
Самым удобным способом обновления, является использование утилиты portsnap. Эта утилита присутствует в системе и её не нужно дополнительно устанавливать, что облегчает нам работу. Эта утилита не работает напрямую с коллекцией портов /usr/ports а использует рабочий каталог /var/db/portsnap. В этот каталог скачивается сзжатая версия коллекция портов, а уже от туда обновляется основное коллекция портов. Конфигурационный файл утилиты находится /etc/portsnap.conf, менять его не нужно, он подходит большинстве пользователей. Но если вы хотите поменять сервер, от куда будут качаться порты, или директорию загрузки, то можете отредактировать конфигурационный файл утилиты.
Portsnap имеет несколько команд:
fetch — Скачивает снимок, портов с указанного в конфигурации сервера. Используется только для интерактивной работы, не через cron
cron — Используется для запуска из планировщика заданий cron.
extract — Разворачивает коллекцию портов, данная команда полностью удаляет существующую коллекцию портов, включая все внесенные в него изменения, как правило выполняется в первый раз и в случае, если нужно получить, чистая коллекция портов или при использовании с опцией path
update — Служит для обновления основного дерева портов.
path — Это дополнительная опция, используется с командой extract, для обновления конкретного порта, или нескольких портов.
Приступаем, непосредственно, к обновления нашего дерева портов. Если это первый запуск portsnap, то выполняем следующие действия:
itserver# portsnap fetch
Looking up portsnap.FreeBSD.org mirrors... 4 mirrors found.
Fetching public key from portsnap2.FreeBSD.org... done.
Fetching snapshot tag from portsnap2.FreeBSD.org... done.
Fetching snapshot metadata... done.
2asd8asd8as0da8sda9df5e15ed516bbf15f7cf1e358 100% of 73 MB 184 kBps 00m00s
Extracting snapshot... done.
Verifying snapshot integrity... done.
Fetching snapshot tag from portsnap2.FreeBSD.org... done.
Fetching snapshot metadata... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 0 metadata files... done.
Fetching 1 patches. done.
Applying patches... done.
Fetching 0 new ports or files... done.
Наберитесь терпения - этот процесс может занять продолжительное время и зависит от многих факторов — скорость интернета, как давно вы обновляли порты.
Далее распаковываем коллекцию:
itserver# portsnap extract
/Mk
/usr/ports/Templates
/usr/ports/Tools
/usr/ports/accessibility
/usr/ports/arabic
.......
/usr/ports/x11/yelp/
/usr/ports/x11/zenity/
Building new INDEX files... done.
Этот процесс, как правило, занимает продолжительное время и не зависит от того, как давно вы обновляли порты, так как во время выполнения этой команды распаковывается коллекцию портов целиком. Вот тут скорость зависит от производительности вашей системы.
Ну и завершающий этап, обновление:
Если Вы обновляетесь впервые, то это будет выглядеть примерно вот так:
yurasik# portsnap update
Removing old files and directories... done.
Extracting new files:
/usr/ports/devel/Makefile
/usr/ports/devel/p5-DateTime-Format-SQLite/
/usr/ports/lang/neko/
.........
/usr/ports/www/xpi-noscript/
Building new INDEX files... done.
Вот и все.