Как установить приложение в freebsd
Вместе с FreeBSD в составе базового комплекта системы поставляется богатый набор системных утилит. Однако, очень скоро возникает необходимость в установке дополнительных приложений сторонних разработчиков.
FreeBSD даёт две взаимодополняющих технологии для установки программного обеспечения сторонних разработчиков в вашу систему:
- Коллекция Портов FreeBSD
- Бинарные пакеты с программным обеспечением
Любая из этих систем может быть использована для установки самых последних версий ваших любимых приложений с локальных носителей или прямо из сети.
На вопрос «Что такое порты и пакеты?» вам поможет статья BSD vs Linux. Что такое «Порт»?.
Пакеты
Установка пакета
где «-r» означает «remote», т.е. будет качаться с интернета.
Список установленных пакетов
или информация о пакете
Удаление пакета
Версия пакета
Поиск установленного пакета по части имени:
Порты
Установка
Повторный вывод послеустановочной информации:
Очень полезный ключ -L, выводит полный путь для каждого файла, который
был установлен для приложения:
Проверка, какие пакеты зависят от выбранного:
Проверка, сколько места занимает каждый из пакетов:
Переустановка
Удаление
Очистка от промежуточных сборок
Очистка от скачанных файлов
Предустановочная настройка (иначе установка будет производится по сохраненной при предыдущей сборке конфигурации)
Поиск порта по ключу
Поиск порта по названию
Это основные команды, более подробно на официальной странице руководства по FreeBSD
После установки ПО
Обновления дерева портов
Утилита portsnap включена в состав базового дистрибутива с FreeBSD 6.0, для более ранних версий необходима установка (/usr/ports/sysutils/portsnap/).
При первом обновлении необходимо выполнить следующие команды:
При последующих обновлениях
Пример,
Для ежедневного (каждую ночь в 03:00) обновления упакованного снимка и индексного файла при помощи portsnap и последующего отчета почтой об устаревших установленных пакетах добавьте в ваш файл /etc/crontab строку
0 3 * * * root portsnap cron && pkg_version -vIL=
Подробности можно почитать тут
Обновление пакетов
Утилиту portupgrade надо сначала установить.
Обновление
Используйте portupgrade pkgname, с флагом -r, если portupgrade должен обновить все пакеты, которые зависят от указанного, и использовать флаг -R для обвления всех пакетов, которые требуют указанный пакет.
Вот мы собственно и добрались до того момента, ради чего всё это затевалось. Операционная система - операционной системой, но нам нужно и работать :-) А для этого нам нужны дополнительные приложения.
Во FreeBSD все приложения имеют, как правило, несколько способов установки:
Надстройкой над системой пакетов является утилита sysinstall. Вновь зайдём в меню Configure вышеуказанной утилиты и обратим внимание на пункт Packages. Это и есть менеджер пакетов, которые хранятся на дисках с дистрибутивом ОС. После выбора этого пункта нам предложат выбрать источник установки.
Дальнейшее меню предложит нам выбрать или пакеты из какого-то раздела системы портов, либо все имеющиеся пакеты в дистрибутиве (All). Выбор нужных приложений не составляет труда, учитывая то, что при выборе пакета выбираются все зависимые от него пакеты. Надеюсь вы тут быстро освоитесь.
Теперь посмотрим, как можно устанавливать пакеты вручную. Собственно ничего в этом сложного нет, достаточно выполнить команду
После её выполнения произойдёт установка пакета, либо будет сообщено какие пакеты ещё не установлены, но требуются для работы приложения. Если эти пакеты уже имеются в той же самой папке, что они будут автоматически установлены. Установку пакета можно форсировать с помощью опции -f:
но это может оказаться эффективным только в том случае, если требуемая версия пакета имеет номер отличный от требуемого. Установку пакетов таким образом вы выполняете на свой страх и риск.
Также интересной опцией установки пакетов может являться вариант:
В этом случае будет произведён поиск пакета с указанным названием на ftp-сервере проекта FreeBSD, если заданный пакет будет обнаружен, то он будет скачан и установлен. Однако в этом случае повторная установка пакета уже не будет возможно, т.к. сам пакет после установки будет уничтожен. Так же будут скачаны и установлены все пакеты, от которых имеются зависомость.
Самый удобный способ установки приложений через утилиту portugrade. portupgrade это набор утилит, облегчающий установку и обновление пакетов из коллекции портов. Сама коллекция расположена по адресу /usr/ports. Все приложения разделены на категории, такие как: аудио, мультимедиа, графика, сетевые компоненты, WWW-сервера и клиенты и т.д. Коллекция портов напоминает собой живой организм, т.к. поддерживается большим числом людей. Порты обновляются после выхода новых версий приложений, а также при обнаружении каких-либо недоработок или неудобств в использовании установленных приложений. В отличие от других систем, вам не нужно бродить в интернете в поиске нужной программы, достаточно ознакомиться в содержимым коллекции портов. Большинство популярных приложений имеют уже готовые порты.
Установка приложений из портов не простое занятие, а очень простое. Достаточно набрать команду:
находясь в папке с интересующим приложением. Система проверить наличие необходимых исходных кодов в папке /usr/ports/distfiles и при их отсутствии загрузит их из источников распространения приложения. Если для работы приложения требуются какие-то дополнительные компоненты, то они будут установлены через соответствующие порты. Из этого достоинства вытекает "недостаток", ведь если у вас имеется доступ в интернет с довольно дорогой стоимостью мегабайта, нужно очень осторожно устанавливать приложения. Так например при установке веб-сервера с поддержкой PHP и MySQL может понадобится загрузка исходных кодов кроме Apache ещё и PHP и MySQL, что может составить довольно кругленькую сумму.
Если вы используете portupgrade, то установить приложение будет ещё проще. Достаточно дать команду
где port_name - имя необходимого порта и система сделает всё необходимое для установки приложения. Если запросу соответствуют несколько приложений, система спросит, какие именно вы хотите установить.
далее добавляем строку следующего содержания
Для упрощения исследования системы я бы посоветовал установить следующий порт: /usr/ports/misc/mc/ - файловый менеджер в стиле Norton Commander - Midnight Commander. Позволит вам наглядно познакомится со структурой каталогов вашей системы. Однако его использование значительно урезает возможности коммандной строки. С набором опыта вполне возможно, что вам даже покажется неудобным использовать mc!
Для установки пакетов программного обеспечения для FreeBSD из локальных файлов или с сервера в сети вы можете использовать утилиту pkg_add (1) .
Example 4-1. Сгрузка пакета и последующая его локальная установка
Если у вас нет исходных текстов локальных пакетов (например, набор компакт-дисков FreeBSD), то проще всего, наверное, воспользоваться опцией -r для pkg_add (1) . Это приведёт к тому, что утилита автоматически определит правильный формат объектных файлов и релиз, а затем сгрузит и установит пакет с сервера FTP.
В примере выше нужный пакет будет сгружен и установлен без всякого дополнительного взаимодействия с пользователем.
Структура каталогов системы пакетов идентична структуре каталога с портами; они взаимодействуют друг с другом для формирования единой системы пакетов/портов.
Для удаления ранее установленных пакетов с программным обеспечением используйте утилиту pkg_delete (1) .
pkg_info (1) является утилитой для вывода списка и описаний различных установленных пакетов.
pkg_version (1) является утилитой для вывода отчёта о версиях всех установленных пакетов. Она сравнивает версию имеющегося пакета с текущей версией, находящейся в дереве портов.
Символы во второй колонке указывают сравнительную разницу в возрасте установленной версии и версии, находящейся в локальном дереве портов.
Символ | Значение |
---|---|
= | Версия установленного пакета соответствует той, что находится в локальном дереве портов. |
< | Установленная версия старее, чем та, что имеется в дереве портов. |
> | Установленная версия новее чем та, что есть в дереве портов. (скорее всего, локальное дерево портов устарело) |
? | В индексном файле портов установленный пакет не может быть найден. |
* | Имеется несколько версий пакета. |
Вся информация о пакете хранится в каталоге /var/db/pkg . Список установленных файлов и описания всех пакетов могут быть найдены среди файлов этого каталога.
Во FreeBSD существует строгое разделение ПО на системное и пользовательское. Пользовательское делится на "установленное из бинарных пакетов" и "из портов" (исходных кодов). Всё базовое (системное) программное обеспечение для выполнения загрузки и аварийно-восстановительных работ - т.е. средства однопользовательского режима, устанавливается в каталоги:
, программы, установленные пользователем из бинарных пакетов, а также пользовательские домашние каталоги, находятся в поддриекториях директории /usr :
В корне, для удобства, на каталог /usr/home сделана символическая ссылка.
Программы, которые пользователь установил из исходников 3-ей стороны или портов устанавливаются в /usr/local/ :
Скрипты инициализации демонов в составе ПО, установленного из портов, располагаются в /usr/local/etc/rc.d/
Способы установки ПО
Во FreeBSD, также как и в большинстве *nix-систем, возможны несколько вариантов установки программного обеспечения. Первые доступны в большинстве *nix-систем, а третий вариант - технология "портов", родной для FreeBSD (Linux-дистрибутив Gentoo давно взял на вооружение эту технологию). Краткий обзор:
- "из бинарных пакетов" - готовое, предварительно скомпилированное ПО, настроенное для работы во FreeBSD. "Из пакетов" можно быстро поставить нужную программу, не прибегая к долгому процессу компиляции. Менеджер пакетов находит зависимости, скачивает нобходимые пакеты, распаковывает и настраивает их. Бинарные пакеты в репозиториях обновляются только с выходом нового релиза, когда как установка из исходных кодов и портов позволяет установить самую свежую версию;
- "из исходных кодов третьей стороны" - в этом случае пользователь скачивает официальный исходный код с сайта производителя, находит и разрешает все зависимости, компилирует его и устанавливает;
- "из портов" - по предварительно подготовленным сценариям поиска и установки ПО. "Порт", в контексте FreeBSD - каталог, содержащий файлы, описывающие: 1) какие зависимости существуюут у ПО, 2) где достать исходный код пакета, 3) как его собрать и какие патчи применить, 4) в какие каталоги скопировать собранные файлы. Весь процесс автоматизирован и, в зависимости от требований порта к сборке, пользователю будет выведен диалог для уточнения параметров сборки. Недостаток такого типа установки - весьма продолжительное время самой установки (в зависимости от скорости работы самого компьютера и сети Интернет), поскольку зависимости тоже устанавливаются из портов.
Какой же применить метод установки?
Всё зависит от ситуации:
- если нужно быстро установить какую-нибудь утилиту или программу широкого применения - проще и быстрее это сделать из бинарных пакетов;
- если требуется самая свежая версия и при этом нет лимита времени на установку - воспользуйтесь портами;
- если требуется изменение различных опций сборки и детальная настройка приложения - используйте исходные коды.
Поиск пакетов
Для бинарных пакетов есть свои встроенные средства поиска, об этом рассказано ниже.
Работа с бинарными пакетами
С версии FreeBSD 10 работает новая система бинарных пакетов PKG Next Genegation или pkgng. Пользователь может выбрать с какой системмой работать - классической pkg_* или новой pkgng. Если с новой, то обратного пути на старую уже не будет. Рассмотрим оба варианта.
Классический способ установки
С помощью pkgng
При обращении к менеджеру пакетов в первый раз, возможен вариант, что в системе он ещё не был установлен. Устанавливаем его:
, после чего будет выведена инструкция как произвести установку. Можно установить менеджер из портов:
, либо, используя классическое средство установки:
Когда pkg установлен, можно узнать как он работает:
Вывод информации об установленном пакете:
Поиск пакета в репозитории:
Удаление установленного пакета:
Автоудаление установленных, но не используемых пакетов:
Просмотр версий установленных пакетов:
- выведет список всех бинарных пакетов установленных в системе и их версий.
Апгрейд установленных пакетов:
- выведет список пакетов для обновления и предложит установку.
Работа с портами
Получение дерева портов из сети Интернет:
Первая команда скачивает архив всех портов, а вторая - его распаковывает. Если portsnap запускается впервые, или после очистки /var/db/portsnap, команду extract следует воспользоваться. Однако, для обновления существующего дерева портов выполняется:
Переход в каталог нужного порта и выполнение команд по сборке. Пример установки файлового менеджера Midnight Commander :
Порты отсортированы по категориям и 3-й уровень и есть имя категории. Например, как в данном случае - misc. К какой категории принадлежит порт можно найти вручную или через поисковую систему на сайте FreeBSD.org (смотреть строку с "Category").
Обновление пакетов, установленных из портов
Обновление посредством portupgrade
portupgrade требует доустановки кучи зависимостей.
Обновление всех портов одной командой:
Здесь, опция -a - указывает на проверку всех имеющихся портов, установленных в системе; -i - указывает на запрос подтверждения обновления каждого пакета.
Для обновления конкретного пакета, нужно указать его имя и параметр -R для учёта и обновления зависимостей:
Обновление посредством Portmaster
Использует базовые утилиты системы и не требует дополнительных пакетов. Если portmaster ещё не установлен, производим установку:
Проверка всех установленных пакетов и обновлений к ним:
Программа проведёт проверку установленных пакетов и выведет подробный список пакетов и их версий. Изучив список можно производить выборочный апгрейд через вход в каталог /usr/ports/имя_секции/имя_пакета и выполнение в каталоге команд make && make reinstall clean. Если необходим полный апгрейд с автоматизацией действий, можно воспользоваться следующей командой:
Здесь: -a - все пакеты, -i указывает спрашивать каждый раз разрешения на сборку пакета, -K -выполнение "make clean", после установки
Очистка от временных файлов
В процессе работы с портами в каталогах портов установленных содержатся исходные тексты и достаточное количество временных файлов, что расходует пространство диска. Например, каталог /usr/ports, после установки базовой системы и файлового менеджера mc (со всеми зависимостями), занимает порядка 2,8 Гб. Если в после установки порта не делать очистку (опция\команда clean), то каталог очень быстро увеличивается в размерах. Для очистки всех временных файлов после сборки можно сделать так:
Если установлен пакет portupgrade, то можно воспользоваться утилитой portsclean :
Очистка всех портов от временных файлов:
Очистка от дистрибутивных файлов в каталоге distfiles, которые не связаны ни с какими портами:
Для удаления всех дистрибутивных файлов, не связанных ни с одним портом:
Удаление программ из портов
Для удаления ПО установленного из портов, следует зайти в каталог порта и выполнить команду make с параметром deinstall :
Помимо этого у make есть параметры:
- reinstall - для переустановки порта
- clean - для очистки от временных файлов
Установка из исходных кодов
Это достаточно сложный для новичков в *nix способ, но освоив его, многие программы можно будет максимально конфигурировать под свои задачи.
Примерный план действий:
- Скачиваем архив с исходными текстами с сайта разработчика.
- Распаковываем его.
- Читаем README и INSTALL для ознакомления с процедурой установки и возможными опциями.
В принципе, дальше можно не продолжать. В вышеописанных файлах разработчик максимально доступно рассказывает о процессе установки. В большинстве случаев, дальнейший ход примерно таков:
1. Переходим в каталог с распакованными текстами.
2. Для знакомства со всеми опциями конфигурирования перед сборкой, выполняем:
3. Выбираем нужные параметры и запускаем процесс конфигурирования. Для примера, выключим IPv6 и установим "префикс" каталога, куда ставится программа:
4. Когда зависимости разрешены, можно приступить к сборке:
Здесь правило то же - сборка должна пройти до конца и без ошибок. На этом этапе также возможны разные проблемы с зависимостями.
5. Когда сборка завершена, устанавливаем все компоненты программы от имени root`а :
Далее - читается документация, формируются конфиги и/или стартовые скрипты, если нужно - права доступа и всё это дело отлаживается.
Удалить пакет можно вручную, путём удаления файлов если знаете куда и что инсталлятор скопировал, либо перейти в каталог с исходными кодами и воспользоваться командой:
Так как исходные тексты в распакованном виде могут занимать довольно большое пространство на диске, рекомендуется после отладки компонентов пакета удалять все тексты, но оставлять сам архив с исходниками.
Обновление ПО, установленное из исходных текстов, производится "установкой поверх".
Разрешение проблем
portsnap fetch failed
1. Если после скачивания базы портов выходит что-то типа "extraction corrupted", можно попробовать удалить содержимое каталога /var/db/portsnap, а затем снова инициировать процесс загрузки базы.
2. Встречается очень редко, но бывает, что сам сетевой интерфейс работает не совсем корректно и искажает данные. Косвенно на это указывает падение ssh-сессии в моменты интенсивного трафика:
Для проверки, через адаптер, который производилось скачивание базы, скачиваем по www или ftp какой-нибудь файл размером 10…100 мегабайт и сравниваем контрольные суммы исходного файла и скаченного. Если суммы не совпадают, значит следует продиагностировать сетевой адаптер.
Читайте также: