Главная | Контакты



Главная > Операционные системы > UNIX > BSD > FreeBSD

FreeBSD установка, обновление и работа с портами

Способы установки ПО

Содержание

Способы установки ПО

Разделение пространства для базового и пользовательского ПО

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

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

  1. Скачиваем архив с исходными текстами с сайта разработчика.
  2. Распаковываем его.
  3. Читаем 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 мегабайт и сравниваем контрольные суммы исходного файла и скаченного. Если суммы не совпадают, значит следует продиагностировать сетевой адаптер.

Материал взят с сайта: http://nix.zeya.org/wiki/%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D1%8B%D0%BC_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC_%D0%B2%D0%BE_freebsd

Обновление дополнительного ПО в FreeBSD

Содержание

Обновление с использованием pkg

Какие пакеты можно/нужно обновить

Опирается на версию дерева портов

# pkg version

Какие пакеты нужно обновить

# pkg audit -F

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

# pkg upgrade asterisk18

# ln -s /usr/local/lib/libxml2.so.5 /usr/local/lib/libxml2.so.2

Обновление с использованием портов

Обновление дерева портов

[server:~] # portsnap fetch update

[server:~] # less /usr/ports/UPDATING

Обновление ПО в ручную

[server:~] # cd /usr/ports/security/clamav

[server:ports/security/clamav] # make

[server:ports/security/clamav] # pkg_delete -x clamav
[server:ports/security/clamav] # make install clean

[server:~] # /usr/local/etc/rc.d/clamav-clamd restart

Обновление ПО программой portmaster

Установка portmaster

[server:~] # pkg_add -r portmaster

Вывод списка установленных портов по категориям

[server:~] # portmaster -l

Сравнение версии установленного по с версиями в дереве портов

[server:~] # portmaster -L

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

[server:~] # portmaster libgmp

Обновление всех устаревших пакетов с предварительным запуском make config для них

[server:~] # portmaster --force-config -a

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

[server:~] # portmaster --force-config -af

Удаление пакета и нужных только ему пакетов

[server:~] # portmaster -e clamav

Обновление ПО программой portupgrade

Установка portupgrade

[server:~] # pkg_add -r portupgrade

Сравнение версии установленного по с версиями в дереве портов

[server:~] # portversion -v

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

[server:~] # portupgrade libgmp

Обновление пакета и всех зависимых от него пакетов

[server:~] # portupgrade --batch -r libgmp

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

[server:~] # portupgrade --batch -aRr

Обновление индекса portupgrade

[server:~] # portsdb -u

Исправление базы данных установленных пакетов (в случае необходимости)

[server:~] # pkgdb -Ff

Дополнительные материалы

Обновление дерева портов и индекса с использование cvsup

[server:~] # csup -h cvsup4.ru.FreeBSD.org /usr/share/examples/cvsup/ports-supfile

Для устаревших систем может использоваться метка версии портов наподобии:

*default release=cvs tag=RELEASE_5_EOL
[server:~] # cd /usr/ports

[server:/usr/ports/] # make index
ИЛИ
[server:/usr/ports/] # make fetchindex


Материал взят с сайта: http://wiki.val.bmstu.ru/doku.php?id=%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%BE_%D0%B2_freebsd

Материал взят с сайта:


Главная > Операционные системы > UNIX > BSD > FreeBSD