Содержание
Способы установки ПО
Разделение пространства для базового и пользовательского ПО
Во FreeBSD существует строгое разделение ПО на системное и пользовательское. Пользовательское делится на "установленное из бинарных пакетов" и "из портов" (исходных кодов). Всё базовое (системное) программное обеспечение для выполнения загрузки и аварийно-восстановительных работ - т.е. средства однопользовательского режима, устанавливается в каталоги:
/boot /bin /etc /sbin /lib /root
, программы, установленные пользователем из бинарных пакетов, а также пользовательские домашние каталоги, находятся в поддриекториях директории /usr :
/usr/bin /usr/etc /usr/sbin /usr/lib /usr/home/user
В корне, для удобства, на каталог /usr/home сделана символическая ссылка.
Программы, которые пользователь установил из исходников 3-ей стороны или портов устанавливаются в /usr/local/ :
/usr/local/bin /usr/local/etc /usr/local/sbin /usr/local/lib
Скрипты инициализации демонов в составе ПО, установленного из портов, располагаются в /usr/local/etc/rc.d/
Способы установки ПО
Во FreeBSD, также как и в большинстве *nix-систем, возможны несколько вариантов установки программного обеспечения. Первые доступны в большинстве *nix-систем, а третий вариант - технология "портов", родной для FreeBSD (Linux-дистрибутив Gentoo давно взял на вооружение эту технологию). Краткий обзор:
- "из бинарных пакетов" - готовое, предварительно скомпилированное ПО, настроенное для работы во FreeBSD. "Из пакетов" можно быстро поставить нужную программу, не прибегая к долгому процессу компиляции. Менеджер пакетов находит зависимости, скачивает нобходимые пакеты, распаковывает и настраивает их. Бинарные пакеты в репозиториях обновляются только с выходом нового релиза, когда как установка из исходных кодов и портов позволяет установить самую свежую версию;
- "из исходных кодов третьей стороны" - в этом случае пользователь скачивает официальный исходный код с сайта производителя, находит и разрешает все зависимости, компилирует его и устанавливает;
- "из портов" - по предварительно подготовленным сценариям поиска и установки ПО. "Порт", в контексте FreeBSD - каталог, содержащий файлы, описывающие: 1) какие зависимости существуюут у ПО, 2) где достать исходный код пакета, 3) как его собрать и какие патчи применить, 4) в какие каталоги скопировать собранные файлы. Весь процесс автоматизирован и, в зависимости от требований порта к сборке, пользователю будет выведен диалог для уточнения параметров сборки. Недостаток такого типа установки - весьма продолжительное время самой установки (в зависимости от скорости работы самого компьютера и сети Интернет), поскольку зависимости тоже устанавливаются из портов.
Какой же применить метод установки?
Всё зависит от ситуации:
- если нужно быстро установить какую-нибудь утилиту или программу широкого применения - проще и быстрее это сделать из бинарных пакетов;
- если требуется самая свежая версия и при этом нет лимита времени на установку - воспользуйтесь портами;
- если требуется изменение различных опций сборки и детальная настройка приложения - используйте исходные коды.
Поиск пакетов
Краткие описания пакетов в репозиториях (бинарных и исходных текстов) FreeBSD можно посмотреть на сайте http://www.freebsd.org/ports/index.html . По этой информации можно уточнить имя пакета, категорию и зависимости. Имя пригодится для установки из бинарных пакетов, а категория пригодится для установки из портов.
Для бинарных пакетов есть свои встроенные средства поиска, об этом рассказано ниже.
Работа с бинарными пакетами
С версии FreeBSD 10 работает новая система бинарных пакетов PKG Next Genegation или pkgng. Пользователь может выбрать с какой системмой работать - классической pkg_* или новой pkgng. Если с новой, то обратного пути на старую уже не будет. Рассмотрим оба варианта.
Классический способ установки
С помощью pkgng
При обращении к менеджеру пакетов в первый раз, возможен вариант, что в системе он ещё небыл установлен. Устанавливаем его:
# pkg
, после чего будет выведена инструкция как произвести установку. Можно установить менеджер из портов:
# cd /usr/ports/ports-mgmt/pkg # make # make install clean
, либо, используя классическое средство установки:
# pkg_add -r pkg
Когда pkg установлен, можно узнать как он работает:
# pkg help install
или
# man pkg-install
Установка пакета:
# pkg install packagename
Вывод информации об установленном пакете:
# pkg info packagename
Поиск пакета в репозитории:
# pkg search packagename
Удаление установленного пакета:
# pkg delete packagename
Автоудаление установленных, но не используемых пакетов:
# pkg autoremove
Просмотр версий установленных пакетов:
# pkg version
- выведет список всех бинарных пакетов установленных в системе и их версий.
Апгрейд установленных пакетов:
# pkg upgrade
- выведет список пакетов для обновления и предложит установку.
Работа с портами
Получение дерева портов из сети Интернет:
# portsnap fetch # portsnap fetch extract
Первая команда скачивает архив всех портов, а вторая - его распаковывает. Если portsnap запускается впервые, или после очистки /var/db/portsnap, команду extract следует воспользоваться. Однако, для обновления существующего дерева портов выполняется:
# portsnap fetch # portsnap update
Переход в каталог нужного порта и выполнение команд по сборке. Пример установки файлового менеджера Midnight Commander :
# cd /usr/ports/misc/mc # make && make install clean
Порты отсортированы по категориям и 3-й уровень и есть имя категории. Например, как в данном случае - misc. К какой категории принадлежит порт можно найти вручную или через поисковую систему на сайте FreeBSD.org (смотреть строку с "Category").
Обновление пакетов, установленных из портов
Обновление посредством portupgrade
portupgrade требует доустановки кучи зависимостей.
Обновление всех портов одной командой:
# portupgrade -ai
Здесь, опция -a - указывает на проверку всех имеющихся портов, установленных в системе; -i - указывает на запрос подтверждения обновления каждого пакета.
Для обновления конкретного пакета, нужно указать его имя и параметр -R для учёта и обновления зависимостей:
# portupgrade -R firefox
Обновление посредством Portmaster
Использует базовые утилиты системы и не требует дополнительных пакетов. Если portmaster ещё не установлен, производим установку:
# cd /usr/ports/ports-mgmt/portmaster # make install clean
Проверка всех установленных пакетов и обновлений к ним:
# portmaster -L
Программа проведёт проверку установленных пакетов и выведет подробный список пакетов и их версий. Изучив список можно производить выборочный апгрейд через вход в каталог /usr/ports/имя_секции/имя_пакета и выполнение в каталоге команд make && make reinstall clean. Если необходим полный апгрейд с автоматизацией действий, можно воспользоваться следующей командой:
# portmaster -aiK
Здесь: -a - все пакеты, -i указывает спрашивать каждый раз разрешения на сборку пакета, -K -выполнение "make clean", после установки
Очистка от временных файлов
В процессе работы с портами в каталогах портов установленных содержатся исходные тексты и достаточное количество временных файлов, что расходует пространство диска. Например, каталог /usr/ports, после установкиа базовой системы и файлового менеджера mc (со всеми зависимостями), занимает порядка 2,8 Гб. Если в после установки порта не делать очистку (опция\команда clean), то каталог очень быстро увеличивается в размерах. Для очистки всех временных файлов после сборки можно сделать так:
# cd /usr/local/ports # make clean
Если установлен пакет portupgrade, то можно воспользоваться утилитой portsclean :
Очистка всех портов от временных файлов:
# portsclean -C
Очистка от дистрибутивных файлов в каталоге distfiles, которые не связаны ни с какими портами:
# portsclean -D
Для удаления всех дистрибутивных файлов, не связанных ни с одним портом:
# portsclean -DD
Удаление программ из портов
Для удаления ПО установленного из портов, следует зайти в каталог порта и выполнить команду make с параметром deinstall :
# cd /usr/ports/misc/mc # make deinstall
Помимо этого у make есть параметры:
- reinstall - для переустановки порта
- clean - для очистки от временных файлов
Установка из исходных кодов
Это достаточно сложный для новичков в *nix способ, но освоив его, многие программы можно будет максимально конфигурировать под свои задачи.
Примерный план действий:
- Скачиваем архив с исходными текстами с сайта разработчика.
- Распаковываем его.
- Читаем README и INSTALL для ознакомления с процедурой установки и возможными опциями.
В принципе, дальше можно не продолжать. В вышеописанных файлах разработчик максимально доступно рассказывает о процессе установки. В большинстве случаев, дальнейший ход примерно таков:
1. Переходим в каталог с распакованными текстами.
2. Для знакомства со всеми опциями конфигурирования перед сборкой, выполняем:
$ ./configure --help
3. Выбираем нужные параметры и запускаем процесс конфигурирования. Для примера, выключим IPv6 и установим "префикс" каталога, куда ставится программа:
$ ./configure --PREFIX=/usr/local --disable-ipv6=yes
После, запустится процесс конфигурирования. Возможно, что конфигуратор выведет сообщение, что не хватает какой-то библиотеки или программы и остановит процесс. В этом случае, пользователю нужно доустановить всё необходимое, а затем вернуться на этот шаг и снова выполнить команду конфигурирования, чтобы та прошла до конца.
4. Когда зависимости разрешены, можно приступить к сборке:
$ make
Здесь правило то же - сборка должна пройти до конца и без ошибок. На этом этапе также возможны разные проблемы с зависимостями.
5. Когда сборка завершена, устанавливаем все компоненты программы от имени root`а :
# make install
Далее - читается документация, формируются конфиги и/или стартовые скрипты, если нужно - права доступа и всё это дело отлаживается.
Удалить пакет можно вручную, путём удаления файлов если знаете куда и что инсталлятор скопировал, либо перейти в каталог с исходными кодами и воспользоваться командой:
# make remove
Так как исходные тексты в распакованном виде могут занимать довольно большое пространство на диске, рекомендуется после отладки компонентов пакета удалять все тексты, но оставлять сам архив с исходниками.
Обновление ПО, установленное из исходных текстов, производится "установкой поверх".
Разрешение проблем
portsnap fetch failed
1. Если после скачивания базы портов выходит что-то типа "extraction corrupted", можно попробовать удалить содержимое каталога /var/db/portsnap, а затем снова инициировать процесс загрузки базы.
2. Встречается очень редко, но бывает, что сам сетевой интерфейс работает не совсем корректно и искажает данные. Косвенно на это указывает падение ssh-сессии в моменты интенсивного трафика:
cat /var/log/messages ... Dec 27 14:06:29 srv sshd[775]: error: Received disconnect from 192.168.1.5: 2: Packet corrupt ...
Для проверки, через адаптер, который производилось скачивание базы, скачиваем по www или ftp какой-нибудь файл размером 10…100 мегабайт и сравниваем контрольные суммы исходного файла и скаченного. Если суммы не совпадают, значит следует продиагностировать сетевой адаптер.