Freebsd установка из файла

Обновлено: 03.07.2024

Во 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 способ, но освоив его, многие программы можно будет максимально конфигурировать под свои задачи.

Примерный план действий:

  1. Скачиваем архив с исходными текстами с сайта разработчика.
  2. Распаковываем его.
  3. Читаем README и INSTALL для ознакомления с процедурой установки и возможными опциями.

В принципе, дальше можно не продолжать. В вышеописанных файлах разработчик максимально доступно рассказывает о процессе установки. В большинстве случаев, дальнейший ход примерно таков:

1. Переходим в каталог с распакованными текстами.

2. Для знакомства со всеми опциями конфигурирования перед сборкой, выполняем:

3. Выбираем нужные параметры и запускаем процесс конфигурирования. Для примера, выключим IPv6 и установим "префикс" каталога, куда ставится программа:

4. Когда зависимости разрешены, можно приступить к сборке:

Здесь правило то же - сборка должна пройти до конца и без ошибок. На этом этапе также возможны разные проблемы с зависимостями.

5. Когда сборка завершена, устанавливаем все компоненты программы от имени root`а :

Далее - читается документация, формируются конфиги и/или стартовые скрипты, если нужно - права доступа и всё это дело отлаживается.

Удалить пакет можно вручную, путём удаления файлов если знаете куда и что инсталлятор скопировал, либо перейти в каталог с исходными кодами и воспользоваться командой:

Так как исходные тексты в распакованном виде могут занимать довольно большое пространство на диске, рекомендуется после отладки компонентов пакета удалять все тексты, но оставлять сам архив с исходниками.

Обновление ПО, установленное из исходных текстов, производится "установкой поверх".

Разрешение проблем

portsnap fetch failed

1. Если после скачивания базы портов выходит что-то типа "extraction corrupted", можно попробовать удалить содержимое каталога /var/db/portsnap, а затем снова инициировать процесс загрузки базы.

2. Встречается очень редко, но бывает, что сам сетевой интерфейс работает не совсем корректно и искажает данные. Косвенно на это указывает падение ssh-сессии в моменты интенсивного трафика:

Для проверки, через адаптер, который производилось скачивание базы, скачиваем по www или ftp какой-нибудь файл размером 10…100 мегабайт и сравниваем контрольные суммы исходного файла и скаченного. Если суммы не совпадают, значит следует продиагностировать сетевой адаптер.

Во FreeBSD я обнаружил два способа централизованной установки программ. Первый способ — установка программ из готовых пакетов, хранящихся на специальном сервере-репозитории, а второй способ — сборка программы из исходников-портов.

Пакет — архив txz, содержащий всё необходимое для работы программы. Плюс в скорости установки, но минус в неполном соответствии локальному железу. Я хочу сказать, что программа в пакете, возможно, скомпилирована под древний Intel 80486 процессор, тогда как на целевом сервере трудятся два ксеона. Работать будет, но не в полную силу. Ещё один минус, как мне кажется, заключается в несвоевременности получения заплаток к найденным дыркам в приложениях. Придётся подождать, пока добрые самаритяне произведут сборку пакета с применением заплатки.

Порт — представляет собой отдельную папку с файлами, содержащими исходные коды программы и инструкции для автоматической сборки. Эту совокупность файлов необходимо собрать в программу на локальном компьютере. Огромный минус, особенно для медленных машин, в скорости установки. Компиляция может затянуться на несколько дней. А плюс тот, что программа компилируется на железе, на котором будет работать, а значит, как мне кажется, при сборке будут учтены все особенности локального железа. То есть, если программа, которую я устанавливаю из пакета, возможно скомпилирована для Intel 486 с целью максимальной совместимости с многообразием возможного железа, то при сборке этой программы из портов на сервере с двумя ксеонами, вероятно будут использованы все современные технологии, реализованные на установленном железе. Также, огромный плюс в том, что при появлении заплатки для приложения, не нужно ждать доброго дядю-компилятора и выпуска обновлённого пакета, а можно самому своевременно применить заплатку. И ещё один плюс заключается в возможности сборки программы из порта с определёнными опциями, тогда как в пакете мы получаем программу с опциями по умолчанию?

Я пользую оба способа. Алгоритм предпочтения пока мне самому не вполне ясен. Чаще собираю из портов, но и pkgng исользую.

Установка программы из пакета

Для работы с пакетами, я использую новую систему pkgng. Во FreeBSD 9 приходится устанавливать новый pkgng рядом со старым pkg, произведя определённые процедуры по обновлению базы установленных пакетов. Во FreeBSD 10 по умолчанию установлен pkgng, а не pkg.

Система устарела. Для установки, удаления программ использовались отдельные команды: pkg_add, pkg_delete. Я не стану углубляться в описание этой системы.

pkgng

Список репозиториев находится в файле /etc/pkg/FreeBSD.conf? (Уточнить при следующей установке. Какая-то возня у меня была с указанием репозиториев при установке свежей FreeBSD.)

Установка программы из порта

Развёртывание дерева портов

В данный момент (2014-03-17) размер папки /usr/ports составляет 660 мегабайт.

Поиск программы в дереве портов

Установка программы

Удаление программы

Способы обновлений установленного программного обеспечения

portupgrade

portmanager

portmanager — это приложение устарело и более не используется?

portmaster

Вместе с 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 для обвления всех пакетов, которые требуют указанный пакет.


После этого необходимо обновить репозиторий


Поиск пакетов

К примеру, чтобы найти пакет nginx, нужно выполнить:

На экране увидите список пакетов с именем nginx и номерами версий:


Чтобы получить подробную информацию о пакете, используем флаг –f.

К примеру, выводим информацию о nxinx. Тут видно что вводит в собранный пакет, и при отсутствии необходимого, вам лучше самостоятельно собрать пакет

Поиск по описанию

Если вы не знаете название пакета или хотя бы его часть, то есть возможность найти пакет по описанию. К примеру, чтобы найти все пакеты, содержащие в описании proxy, используйте:

Справка по командам

Чтобы получить список всех доступных опций pkg, используйте:

К примеру, чтобы получить подробности о команде search, вводим:

После того как необходимый пакет был найден, переходим к его установке.

Установка пакетов

Так как нам уже известно имя пакета, который нужно установить, используем команду:

Можно сразу установить несколько пакетов, разделив их только при помощи пробела:

Для примера установим mc


Если в оболочке tcsh или csh, с запуском возникнет проблема, необходимо восстановить список бинарных пакетов в PATH при помощи команды

Также важно помнить, если вы устанавливаете приложения, которые работают как сервисы, то необходимо дополнительно конфигурировать, например добавить в автоагрузку.

Запуск сервисов

Во FreeBSD, установленные через пакеты сервисы, предоставляют скрипт инициализации , которые можно найти в /usr/local/etc/rc.d

Для примера, запустим nginx

Чтобы включить сервис в автозагрузку, необходимо добавить строку в /etc/rc.conf . Это можно сделать двумя способами:

и второй способ

Теперь nginx запустится при загрузке системы, но при необходимости, можно запустить вручную:

Если есть необходимость запустить сервис без добавления в автозагрузку, можно воспользоваться onestart. В этом случае скрипт будет запущен сразу, без последующего автоматического запуска при загрузке системы.

Информации о пакете

Чтобы просмотреть информацию об установленном пакете

Команда выведет информацию о пакете, описание, опции, использованные при его компиляции, и список библиотек и зависимостей.

Обновление пакета

Чтобы получить последние доступные версии установленных ранее пакетов, используйте команду:

Удаление пакета

Удаление зависимостей

После удаления пакета в системе могут остаться ненужные зависимости. Чтобы удалить пакеты, которые больше не нужны ни одному из оставшихся в системе пакетов, выполните следующую команду:

К какому пакету относится файл

Полный список файлов в пакете:

Загружаем базу известных уязвимостей:

Проверяем установленные пакеты на предмет наличия известных уязвимостей, с ссылками на подробные отчеты:

Проверяем все установленные пакеты на предмет валидности контрольных сумм входящих в пакеты файлов:

Проверяем все установленные пакеты на предмет отсутствия требуемых зависимостей:

Читайте также: