Рубрика:
Администрирование /
Администрирование
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
Гаспар Чилингаров
Устанавливаем и обновляем программное обеспечение в системе FreeBSD
Что такое пакет? Что такое порт?
В ОС FreeBSD существует два механизма для установки программного обеспечения – пакеты и порты. Пакеты – заранее скомпилированные файлы с бинарными файлами. Они не требуют компиляции из исходных файлов и более просты в установке. Пакеты неудобны только тем, что скомпилированы с копределённым набором опций по умолчанию, под конкретную платформу, а вам для конкретной задачи нужны дополнительные опции. Порты предоставляют автоматизированный механизм для установки программ из исходных файлов – начиная с получения (скачивания) исходных файлов, изменения исходных файлов для успешной компиляции программы для системы FreeBSD и механизм инсталляции/деинсталляции ПО.
Версии пакетов и портов
Вы можете думать о пакетах как о конкретной версии программы, а о порте – как об описании, как создать версию пакета. Через некоторое время порт может быть обновлен и он уже будет генерировать пакет с другим номером версии. То есть mysql51-server – это название порта с версией сервера MySQL 5.1.x, а пакет mysql-server-5.1.12 – это уже скомпилированные бинарные файлы сервера MySQL версии 5.1.12 . Иногда после номера версии добавляется знак подчеркивания и число – это показывает на версию изменения порта, т.е. если версия программного обеспечения не изменилась, а в порт были внесены изменения, чтобы обеспечить лучшую интеграцию данного ПО в систему FreeBSD (lynx-2.8.5_2 – текстовый браузер lynx версии 2.8.5, в порт которого 2 раза вносились изменения). Когда меняется (повышается) версия программного обеспечения, версия порта сбрасывается и не пишется до первого обновления порта.
Какое программное обеспечение готово для использования?
Посмотреть список программного обеспечения, перенесенного на систему FreeBSD, вы можете по адресу http://www.freebsd.org/ports. Вы сумеете узнать также точное название пакета, который вас интересует.
Как установить пакет?
Для установки пакетов можно использовать команду sysinstall (меню «Configure», подменю «Packages»), однако это не даст вам навыков по установке пакетов вручную. Из командной строки пакеты устанавливаются при помощи команды pkg_add. Наиболее часто используемые пакеты поставляются на самом диске FreeBSD в директории packages. Для их установки достаточно смонтрировать CD-диск (команда «mount /cdrom») и выполнить команду:
pkg_add /cdrom/packages/All/имя_пакета-версия.tgz
Если вы не знаете точного имени и версии пакета, то его можно узнать при помощи команды:
ls /cdrom/packages/All/имя_пакета*
Если вы скачали пакет из сети, то он устанавливается аналогично:
pkg_add имя_файла
Если пакета нет на диске или вы хотите получить последнюю версию пакета, то можно попробовать команду:
pkg_add -rv имя_порта
Скажем, для установки веб-сервера Apache версии 1.3.x можно набрать команду:
pkg_add -rv apache13
которая обратится к серверу FreeBSD и сама скачает пакет, подходящий для вашей версии FreeBSD, во временную директорию и установит его. Если пакет для своей работы требует дополнительные библиотеки или другие пакеты, то команда «pkg_add» скачает и их тоже. После установки все временные файлы удаляются.
Команда:
pkg_add -K -rv apache13
не только скачает и установит порт, но и сохранит скачанный файл пакета в текущей директории.
Удаление установленного ПО
Для удаления установленного ПО необходимо использовать команду:
pkg_delete имя_пакета
которая корректно удалит установленные пакетом файлы. Пакеты, установленные как зависимости, удалены не будут.
Сохранение установленных пакетов
Если вы установили программное обеспечение из пакетов или при помощи портов, то вы можете всегда создать пакет для переноса ПО на другую систему или для удобства установки в следующий раз.
Команда:
pkg_create -b имя_пакета-версия
создаст в текущей директории пакет, который можно устанавливать при помощи команды «pkg_add». Это особенно удобно, когда вы сконфигурировали ПО, установленное из портов для своих задач, и хотите создать пакет, который можно использовать в дальнейшем.
Какой пакет установил данный файл?
Узнать, какой пакет установил данный файл, можно при помощи команды:
pkg_info -W абсолютное_имя_файла
Просмотр списка установленных пакетов
Для просмотра можно использовать команду «pkg_info», которая выводит название пакета, версию и короткое описание. Другой способ – просто посмотреть список пакетов:
ls /var/db/pkg
В директории /var/db/pkg команды pkg* хранят базу всех установленных пакетов. Посмотреть детальную информацию по одному пакету можно при помощи команды:
pkg_info имя_пакета
скажем:
pkg_info xorg-6.9.0
Обновление портов при помощи системы CVSup
Для использования системы CVSup необходимо добавить несколько строк в файл /etc/make.conf (пример приведенной конфигурации есть в файле /usr/share/examples/etc/make.conf). Эти строчки в /etc/make.conf конфигурируют обновление коллекции портов через протокол CVSup, который передает только изменения, произошедшие в коллекции портов, что существенно меньше, чем скачивание полной коллекции. Вам потребуется либо прямое соединение с Интернетом, либо с трансляцией адресов (NAT). Протокол CVSup не может работать через HTTP-прокси.
SUP_UPDATE=YES
SUP=/usr/bin/csup
SUPFLAGS=-g -L 2 -z
SUPHOST=cvsup.uk.FreeBSD.org
SUPFILE=/usr/share/examples/cvsup/standard-supfile
PORTSSUPFILE=/usr/share/examples/cvsup/ports-supfile
Если у вас FreeBSD версии 6.0 или ниже, то у вас должна быть строка:
SUP=/usr/local/bin/cvsup
вместо указанной:
SUP=/usr/bin/csup
и для обновления портов вам необходимо поставить пакет cvsup при помощи:
pkg_add -rv cvsup-without-gui
После того как вы добавили эти строки в /etc/make.conf, необходимо перейти в директорию /usr/ports и запустить команду:
make update
После успешного завершения у вас будет коллекция портов с последними обновлениями.
Работа с портами
Коллекция всех портов находится в директории /usr/ports. Если у вас она не установлена, то вы можете установить ее при помощи команды sysinstall (меню «Configure», подменю «Distributions», пункт меню «ports»). Другие способы – скачать всю коллекцию портов одним файлом, так же как и при обновлениях, или воспользоваться утилитой portsnap.
Автоматизация установки и обновления портов
Для автоматизации процесса установки и обновления портов вам потребуется пакет portupgrade.
Его можно установить либо из порта /usr/ports/sysutils/portupgrade, либо при помощи команды:
pkg_add -rv portupgrade
Для обновления ПО сперва нужно обновить коллекцию портов (как это делать, описано выше). После этого вы можете инсталлировать и обновлять порты при помощи следующих команд:
portinstall имя_порта
скачать исходные файлы, скомпилировать, установить данный порт и очистить рабочую директорию.
portupgrade имя_порта
обновить порт по последней версии. При этом не нужно указывать версию установленного пакета, а нужно просто указать имя порта, скажем:
portupgrade 'имя_порта*'
обновить все порты начинающиеся с данного префикса, скажем:
portupgrade 'php5*'
обновит сам интерпретатор php и все его установленные расширения.
Именно для этого случая нам было нужно сохранить конфигурацию при помощи «make config» или записывая ее в файл /etc/make.conf. Portupgrade сам скачает новые версии исходных файлов, сконфигурирует их с теми опциями, которые были запомнены, сделает резервную копию старого пакета, удалит старую версию пакета, установит новую. Если этот процесс завершился успешно, то копия старого пакета будет удалена, если нет, то portupgrade установит ее обратно. Порты в FreeBSD разрабатываются так, чтобы при удалении порта не затрагивать файлы конфигурации. Таким образом, ваши старые файлы конфигурации останутся неизменными. Иногда это может привести к проблемам, и файлы конфигурации нужно исправлять для совместимости с новой версией установленного ПО.
portupgrade -R 'имя_порта'
обновит не только порт, но и его зависимости, которые необходимы для его работы.
portupgrade -a
обновит все установленные в системе пакеты.
Обновление коллекции портов
Коллекцию портов необходимо обновлять время от времени, если вы хотите отслеживать последние версии программ, доступные для системы FreeBSD. В частности, это нужно для получения обновлений, связанных с безопасностью ПО, – в новых версиях программ бывают исправлены ошибки. Есть несколько способов обновить коллекцию портов – скачать полностью новую коллекцию портов (на страничке http://www.freebsd.org/ru/ports линк «Сгрузите gzip-архив») и распаковать в директорию /usr/ports. Это самый простой способ, но и самый требовательный к трафику – каждый раз вы будете скачивать файл размером где-то в 35 Мб.
Установки ПО при помощи портов
Для установки порта необходимо перейти в его директорию (скажем, «cd /usr/ports/lang/php4» – для установки языка PHP). Имя порта можно узнать на сайте http://www.freebsd.org/ports либо перейти в директорию /usr/ports (командой «cd /usr/ports») и дать команду:
make search key=ключевое_слово
Например:
make search key=licq
для поиска всех портов, связанных с ICQ клиентом licq.
Возможные операции для компиляции порта (должны выполнятся в директории порта – то есть /usr/ports/lang/php4 в нашем случае):
- make config – запускает конфигуратор, если данный порт имеет диалоговый текстовый интерфейс конфигурации. Выбранная конфигурация будет использована и в дальнейшем при обновлении данного порта.
- make fetch – только скачивает необходимые файлы, но не компилирует порт. Исходные файлы портов скачиваются в директорию /usr/ports/distfiles.
- make – скачивает и компилирует порт. Если порт имеет опции, которые могут быть указаны в командной строке, он сообщит об этом до начала процесса компиляции. В командной строке опции задаются как:
make -DWITHOUT_X11=YES
то есть при помощи флага -Dимя_опции= значение. Если вы хотите сохранить эти опции, чтоб они использовались в дальнейшем при обновлениях, откройте файл /etc/make.conf и допишите их туда в виде опция=значение (т.е., скажем, WITHOUT_X11=YES). Эти опции будут применяться при компиляции всех портов.
- make all – то же самое, что и команда make без аргументов.
- make install – устанавливает скомпилированный порт.
- make clean – очищает директорию порта от рабочих файлов.
- make distclean – аналогично make clean, но также стирает скачанные исходные файлы.
- make deinstall – удаляет инсталлированную версию порта.
- make package – создает пакет для данной версии ПО. Эта команда подразумевает, что ПО установлено на жестком диске, в противном случае она выполняет «make install», после чего создает пакет.
На стадии компиляции и установки порт может автоматически установить другие порты, необходимые для его работы.
Разные опции команды make можно комбинировать друг с другом, т.е. «make install clean» приведет к скачиванию исходных текстов, компиляции, установке порта и очистке директории порта от рабочих файлов.
Обновление портов при помощи portsnap
Если у вас система FreeBSD 6.0 и выше или 5.5 и выше, то в базовой системе есть утилита portsnap, которая облегчает обновление коллекции портов. В первый раз команда «portsnap fetch» скачивает сжатую версию коллекции портов и сохраняет ее в /var/db/portsnap. В последующие разы команда «portsnap fetch» скачивает сжатые обновления для этого файла, что использует существенно меньший трафик, чем полное скачивание коллекции портов и даже обновление при помощи CVSup. Если у вас нет распакованной коллекции портов в /usr/ports, то ее можно создать при помощи команды «portsnap extract». Для обновления распакованной коллекции портов, после того как portsnap скачал сжатые изменения, используется команда «portsnap update».
То есть в первый раз вы должны выполнить команды:
portsnap fetch; portsnap extract
а в последующие разы:
portsnap fetch; portsnap update
Можно указать командам «portsnap extract» и «portsnap update», чтоб они работали не со всей коллекцией портов, а только с ее частью. Так:
portsnap update databases/mysql
обновит только порты в директории databases, имя которых начинается на mysql.
Другие команды для работы с портами
pkg_which имя_файла
покажет пакет, который установил на файловую систему данный файл.
portsclean
позволяет почистить /usr/ports от старых рабочих директорий, устаревших исходных файлов и т. д.
portsclean -C
очистить рабочие директории.
portsclean -D
удалить старые исходные файлы портов.
portsclean -DD
удалить все исходные файлы портов, которые не установлены в данный момент.
pkg_version
после обновления коллекции портов показывает, какие имеются более новые версии и требуются обновления.
pkg_deinstall 'имя_порта'
// или
pkg_deinstall 'имя_porta*'
позволяет удалить порт из системы или сразу удалить несколько портов из системы (по шаблону).
pkg_deinstall -r имя_порта
удалить порт и все порты, которые требуют его в качестве зависимости (dependency).
pkg_deinstall -R имя_порта
удалить порт и все порты, которые он требует в качестве зависимости (dependency).
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|