Freebsd установка из файла
Во FreeBSD я обнаружил два способа централизованной установки программ. Первый способ — установка программ из готовых пакетов, хранящихся на специальном сервере-репозитории, а второй способ — сборка программы из исходников-портов.
Пакет — архив txz, содержащий всё необходимое для работы программы. Плюс в скорости установки, но минус в неполном соответствии локальному железу. Я хочу сказать, что программа в пакете, возможно, скомпилирована под древний Intel 80486 процессор, тогда как на целевом сервере трудятся два ксеона. Работать будет, но не в полную силу. Ещё один минус, как мне кажется, заключается в несвоевременности получения заплаток к найденным дыркам в приложениях. Придётся подождать, пока добрые самаритяне произведут сборку пакета с применением заплатки.
Порт — представляет собой отдельную папку с файлами, содержащими исходные коды программы и инструкции для автоматической сборки. Эту совокупность файлов необходимо собрать в программу на локальном компьютере. Огромный минус, особенно для медленных машин, в скорости установки. Компиляция может затянуться на несколько дней. А плюс тот, что программа компилируется на железе, на котором будет работать, а значит, как мне кажется, при сборке будут учтены все особенности локального железа. То есть, если программа, которую я устанавливаю из пакета, возможно скомпилирована для Intel 486 с целью максимальной совместимости с многообразием возможного железа, то при сборке этой программы из портов на сервере с двумя ксеонами, вероятно будут использованы все современные технологии, реализованные на установленном железе. Также, огромный плюс в том, что при появлении заплатки для приложения, не нужно ждать доброго дядю-компилятора и выпуска обновлённого пакета, а можно самому своевременно применить заплатку. И ещё один плюс заключается в возможности сборки программы из порта с определёнными опциями, тогда как в пакете мы получаем программу с опциями по умолчанию?
Я пользую оба способа. Алгоритм предпочтения пока мне самому не вполне ясен. Чаще собираю из портов, но и pkgng исользую.
Установка программы из пакета
Для работы с пакетами, я использую новую систему pkgng. Во FreeBSD 9 приходится устанавливать новый pkgng рядом со старым pkg, произведя определённые процедуры по обновлению базы установленных пакетов. Во FreeBSD 10 по умолчанию установлен pkgng, а не pkg.
Система устарела. Для установки, удаления программ использовались отдельные команды: pkg_add, pkg_delete. Я не стану углубляться в описание этой системы.
Разрешение проблем
portsnap fetch failed
1. Если после скачивания базы портов выходит что-то типа "extraction corrupted", можно попробовать удалить содержимое каталога /var/db/portsnap, а затем снова инициировать процесс загрузки базы.
2. Встречается очень редко, но бывает, что сам сетевой интерфейс работает не совсем корректно и искажает данные. Косвенно на это указывает падение ssh-сессии в моменты интенсивного трафика:
Для проверки, через адаптер, который производилось скачивание базы, скачиваем по www или ftp какой-нибудь файл размером 10…100 мегабайт и сравниваем контрольные суммы исходного файла и скаченного. Если суммы не совпадают, значит следует продиагностировать сетевой адаптер.
Вот мы собственно и добрались до того момента, ради чего всё это затевалось. Операционная система - операционной системой, но нам нужно и работать :-) А для этого нам нужны дополнительные приложения.
Во 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!
Установка программы из порта
Поиск программы в дереве портов
Развёртывание дерева портов
В данный момент (2014-03-17) размер папки /usr/ports составляет 660 мегабайт.
Способы обновлений установленного программного обеспечения
portupgrade
portmanager
portmanager — это приложение устарело и более не используется?
portmaster
Для установки пакетов программного обеспечения для 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 . Список установленных файлов и описания всех пакетов могут быть найдены среди файлов этого каталога.
Если вы использовали Unix-системы ранее, то вы знаете, что стандартная процедура установки программного обеспечения сторонних разработчиков выглядит примерно так:
Сгрузка программного обеспечения, которое может распространяться в форме исходных текстов или двоичных файлов.
Распаковка программного обеспечения из дистрибутивного формата (обычно tar-архива, сжатого при помощи compress (1) или gzip (1) ).
Поиск документации (возможно, файл README или несколько файлов из подкаталога doc/ ) и её чтение в поиске описания установки программного обеспечения.
Если программное обеспечение распространялось в форме исходных текстов, его компиляция. Сюда может быть включено редактирования файла Makefile , запуск скрипта configure и другие работы.
Тестирование и установка программного обеспечения.
И это только всё проходит нормально. Если вы устанавливаете программный пакет, который был специально перенесён на FreeBSD, то вам может даже потребоваться редактировать код для того, чтобы он нормально заработал.
Если вы хотите, то можете продолжать устанавливать программное обеспечение во FreeBSD "традиционным" способом. Однако FreeBSD предоставляет две технологии, которые могут сохранить вам много усилий; пакеты и порты. На момент написания таким образом были доступны более 7,000 сторонних приложений.
Для любого конкретно взятого приложения пакет FreeBSD для такого приложения является одним файлом, который вы должны сгрузить. Пакет содержит уже откомпилированные копии всех команд приложения, а также все конфигурационные файлы и документацию. Сгруженным файлом пакета можно управлять командами управления пакетами FreeBSD, такими, как pkg_add (1) pkg_delete (1) , pkg_info (1) и так далее.
Установка нового приложения может выполняться единственной командой.
Порт FreeBSD для приложения является набором файлов, предназначенных для автоматизации процесса компиляции приложения из исходного кода.
Вспомните, что обычно вы должны выполнить некоторое количество шагов, если компилируете программу самостоятельно (распаковка, изменение кода, компиляция, установка). Файлы, составляющие порт, содержат всю информацию, необходимую для того, чтобы система сделала это за вас. Вы выполняете пару команд простых команд, и исходный код приложения автоматически сгружается, распаковывается, модифицируется, компилируется и устанавливается.
Действительно, система портов может также использоваться для генерации пакетов, которые позже могут управляться командой pkg_add и другими командами управления пакетами, о которых скоро будет рассказано.
Как пакеты, так и порты принимают во внимание зависимости . Предположим, что вы хотите установить приложение, которое зависит от некоторой установленной библиотеки. И приложение, и библиотека доступны во FreeBSD в виде портов и пакетов. Если вы используете команду pkg_add или систему портов для добавления приложений, то в обоих случаях будет обнаружено, что библиотека не была установлена, и при выполнении команд сначала будет выполнена установка библиотеки.
Видя, что обе технологии весьма похожи, вы можете удивиться, почему во FreeBSD используются обе. И пакеты, и порты имеют свои преимущества, так что выбор используемой вами системы зависит от ваших собственных предпочтений.
Сжатый tar-архив обычно меньше, чем сжатый tar-архив, содержащий исходный код приложения.
Пакеты не требуют никакой дополнительной компиляции. Для таких больших приложений, как Mozilla , KDE или GNOME , это может быть важно, в частности, если вы работаете на медленной системе.
Пакеты не требуют от вас понимания процесса компиляции программного обеспечения во FreeBSD.
Пакеты обычно компилируются с консервативными параметрами, потому что они должны работать на максимальном количестве систем. При установке из порта вы можете изменять параметры компиляции для того, чтобы (к примеру) генерировался код, специфичный для процессора Pentium III или Athlon.
Некоторые приложения имеют опции времени компиляции, связанные с тем, что они могут или не могут делать. К примеру, Apache может быть настроен с широким набором различных опций. При построении из порта вы можете не принимать параметры по умолчанию, и задать их самостоятельно.
В некоторых случаях для одного и того же приложения будут иметься несколько пакетов для указания конкретных настроек. Например, Ghostscript имеется как пакет ghostscript и как пакет ghostscript-nox11 , в зависимости от того, установили вы сервер X11 или нет. Такой тип грубой настройки возможен при использовании пакетов, но быстро становится недостижим, если приложение имеет более одного или двух параметров времени компиляции.
Условия лицензирования некоторых дистрибутивов программного обеспечения запрещает распространение в двоичном виде. Они должны распространяться в виде исходного кода.
Некоторые не доверяют дистрибутивам в двоичном виде. При использовании исходного кода вы по крайней мере (теоретически) можете прочесть его и попытаться найти потенциальные проблемы самостоятельно.
Если у вас есть собственные патчи, вам нужен исходный код для того, чтобы их применять.
Некоторым нравится иметь исходный код, чтобы его можно было смотреть и хакать, заимствовать из него (конечно, при разрешающей лицензионном соглашении) и тому подобное.
Чтобы отслеживать обновления портов, подпишитесь на список рассылки Список рассылки, посвящённый Портам FreeBSD .
В оставшейся части главы будет рассказано, как использовать пакеты и порты для установки и управления программным обеспечением сторонних разработчиков во FreeBSD.
Во 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`а :
Далее - читается документация, формируются конфиги и/или стартовые скрипты, если нужно - права доступа и всё это дело отлаживается.
Удалить пакет можно вручную, путём удаления файлов если знаете куда и что инсталлятор скопировал, либо перейти в каталог с исходными кодами и воспользоваться командой:
Так как исходные тексты в распакованном виде могут занимать довольно большое пространство на диске, рекомендуется после отладки компонентов пакета удалять все тексты, но оставлять сам архив с исходниками.
Обновление ПО, установленное из исходных текстов, производится "установкой поверх".
Установка программы
Удаление программы
pkgng
Список репозиториев находится в файле /etc/pkg/FreeBSD.conf? (Уточнить при следующей установке. Какая-то возня у меня была с указанием репозиториев при установке свежей FreeBSD.)
Читайте также: