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

Автор: Евгений Нифантьев
Статус: не завершено
ОС: FreeBSD
Последние изменения в тексте: 2014-09-13

Введение

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

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

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

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

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

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

pkg

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

pkgng

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

Список всех установленных пакетов:
# pkg info
Поиск названия пакета:
# pkg search mariadb
mariadb55-client-5.5.33a_1
mariadb55-server-5.5.33a_1

Получение информации о пакете:
# pkg info mariadb55-server
Установка пакета:
# pkg install mariadb55-server
Удаление установленной программы:
# pkg delete mariadb55-server
Уточнение изменений в списке доступных пакетов из подключённых репозиториев:
# pkg update
Обновление всех установленных пакетов:
# pkg upgrade

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

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

Для установки программ из портов будет удобно создать локальную копию дерева портов c сайта portsnap.freebsd.org.
Для создания и обновления дерева портов можно использовать несколько команд утилиты portsnap (http://www.freebsd.org/cgi/man.cgi?query=portsnap):
# portsnap fetch — позволит скачать дерево портов с какого-либо сайта.
# portsnap extract — одноразовая команда для первоначального развёртывания дерева на локальной машине. Дерево портов будет лежать в /usr/ports.
# portsnap fetch update — обновляет дерево до актуального состояния, что необходимо делать перед установкой и/или обновлением программ.

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

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

Искать папку с необходимым портом во множестве подпапок директории /usr/ports не так сложно, если использовать команды:
# whereis php5
php5: /usr/ports/lang/php5
# whereis apache24
apache24: /usr/ports/www/apache24

# echo /usr/ports/*/*apache*
/usr/ports/Mk/bsd.apache.mk /usr/ports/devel/apache-ant /usr/ports/distfiles/apache22 /usr/ports/net-mgmt/zenpack-apachemonitor /usr/ports/security/apache-xml-security-c /usr/ports/sysutils/apachetop /usr/ports/textproc/apache-solr /usr/ports/textproc/apache-solr3 /usr/ports/www/apache-forrest /usr/ports/www/apache-mode.el /usr/ports/www/apache22 /usr/ports/www/apache22-event-mpm /usr/ports/www/apache22-itk-mpm /usr/ports/www/apache22-peruser-mpm /usr/ports/www/apache22-worker-mpm /usr/ports/www/apache24 /usr/ports/www/mkapachepw /usr/ports/www/py-apachelog

# cd /usr/ports
# make quicksearch name=apache24
Port:   apache24-2.4.4_2
Path:   /usr/ports/www/apache24
Info:   Version 2.4.x of Apache web server
<cit from http://www.freebsd.org/doc/ru/books/handbook/ports-finding-applications.html>"Для выполнения более глубокого поиска используйте make search key=string или make quicksearch key=string, где string представляет собой некоторый текст, относящийся к искомому порту. Текст ищется в комментариях, описаниях или зависимостях. Этот способ можно использовать для поиска портов, связанных с некоторой темой, когда название программы неизвестно."

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

Установка приложения происходит из соответствующей найденной папки. Сначала переходим в папку:
# cd `whereis -q apache24`
или 
# cd /usr/ports/www/apache24
И уже находясь в папке запускаем компиляцию программы:
# make install clean
или из любого места, но с указанием целевой директории (опция -C программы make):
# make install clean -C /usr/ports/www/apache24

При компилировании программы из порта возможно появление псевдографических меню для выбора дополнительных настроек. Эти настройки сохраняются, и повторно, при переустановке пакета, не выводятся. Чтобы вновь увидеть эти диалоговые окна необходимо выполнить команды:
# cd /usr/ports/www/apache24
# make config

для изменения ранее установленных опций.
Или
# make rmconfig
для удаления  ранее установленных опций.
Далее выполняем команду:
# make reinstall clean
Или даже сразу:
# make config reinstall clean
(команда clean для make нужно, чтобы удалить временную рабочую папку work, куда скачивались исходники, применялись к этим исходникам заплатки и где производилась компиляция программы. В большинстве случаев этот оставшийся мусор не нужен.)

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

Удаление приложения происходит из соответствующей найденной папки:
# cd /usr/ports/www/apache24
# make deinstall

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

portupgrade

portupgrade видимо уже устаревшая программа, которая поможет автоматически обновить установленные приложения. Умеет работать с pkgng.
Установка приложения portupgrade из дерева портов:
# make install clean -C /usr/ports/ports-mgmt/portupgrade
# cd /usr/ports
# portupgrade -ai
для обновления всех установленных приложений с принудительным подтверждением (нажатием Yes).

portmanager

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

portmaster

portmaster заменяет/дополняет portupgrade. Умеет работать с pkgng. Имеет ряд преимуществ перед portupgrade?
Установка приложения portmaster из дерева портов:
# make install clean -C /usr/ports/ports-mgmt/portmaster
# cd /usr/ports
# portmaster -ad — для обновления всех установленных приложений без лишних запросов на удаление устаревших копий портов.

————————————————————————————-

Ссылки:

http://www.freebsd.org/doc/ru/books/handbook/ports.html

http://www.opennet.ru/tips/2715_pkgng_freebsd_pkg_ports_package.shtml