Утилита управления портами, portupgrade во FreeBSD

Система портов во FreeBSD сама по себе очень удобная, но кроме того существуют дополнительные утилиты, самая удобная и продвинутая из них – portupgrade.

Portupgrade – это не одна утилита, а целый пакет утилит по управлению портами.

В пакет portupgrade входят:

portupgrade – одноименная утилита, средство автоматического обновления установленных программ

portinstall – утилита установки новых программ, присутствующих в системе портов FreeBSD

portversion – утилита показывающая установленный софт и наличие обновлений для него.

portsclean – утилита очистки мусора остающигося после сборки портов

portsdb – утилита создающая базу программ, присутствующих в портах FreeBSD

ports_glob – предназначена для поиска по базе портов

portcvsweb – браузер для CVSWeb

pkgdu – утилита, предназначенная для подсчета дискового пространства занятого уcтановленныыми программами

pkgdb – еще одна утилита для управления базой портов

pkg_which – предназначен для поиска по базе портов

pkg_sort – утилита сортирует порты в соответствии c зависимостями

pkg_fetch – утилита для скачки собранных(бинарных) пакетов

pkg_deinstall – средство для массового удаления установленного софта

Основными интересующими нас утилитами из этого состава – это portupgrade, portinstall, portversion, portsclean, pkgdb и pkg_deinstall. Их и рассмотрим подробно. А начнем их изучение с конфигурационного файла /usr/local/etc/pkgtools.conf.

portupgrade написан на Ruby, и его конфигурауционный файл, тоже представляет из себя скрипт на Ruby. В нем чаще всего используются такие настройки:

Не пересобирать определенный пакет:

HOLD_PKGS = [

'bsdpan-*',

'openoffice-*',

]

Мы исключили из обновления пакеты c именами начинающимися на bsdpan и openoffice.

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

MAKE_ARGS = {

'databases/mysql50-*' => [

'WITH_CHARSET=cp1251',

'WITH_XCHARSET=all',

'WITH_PROC_SCOPE_PTH=yes',

'BUILD_STATIC=yes',

],

}

В файле настроек присутствует масса разных опций, но две приведенные по моему мнению самые главные.

Теперь можно перейти к непосредственному использованию утилит из пакета portupgrade.

1. Portupgrade

Обновить все программы:

portupgrade -a

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

portupgrade -af

если система, на которой вы проводите обновления, очень важна, рекомендую добавлять ключ -b, тогда portupgrade сохранит старвые версии пакетов в бекап(/usr/ports/packages/All/), установить пакет из бекапа можно используя команду:

pkg_add <имя пакета>

Просмотреть и выбрать отдельный пакет для обновления можно используя утилиту portversion.

Проверим к примеру пакет apache:

portversion |grep apache

в ответ получим

apache+mod_ssl =

Знак =, означает, что пакет в обновлении не нуждается, соответственно знак > означает что установлен пакет новее, чем присутствует в базе портов и знак < – означает что пакет устарел и нуждается в обновлении.

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

portversion | grep '<' | less

При выполнении этой команды я получил:

firefox <

gimp <

gnash <

Обновим gnash:

portupgrade -b gnash

Разобравшись в основном с portupgrade, можно переходить к portinstall.

2. Portinstall

С помощью portinstall можно устанавливать программы, делаю я это так:

portinstall /usr/ports/databases/mysql50-server/

Нужно заметить, что сборка будет проводиться в соответствии с правилами, описанными в файле настроек.

3. Portversion

Работу portversion мы в принципе уже рассмотрели, добавлю только опцию, позволяющую игнорировать нарушенные зависимости:

portversion -O

4. Portsclean

portsclean я использую для переодической чистки дерева портов от всякого мусора, оставшегося от неудачных сборок. Чистки директории /usr/ports/distfiles от файлов исходников, более не использующихся работы.

Выполняются эти операции так:

portsclean -C

для очистки рабочих директорий, тех которые используются для сборки программ и

portsclean -D

для очистки директории /usr/ports/distfiles от устаревших файлов исходников программ

5. Pkgdb

основное применение утилиты pkgdb – исправлять зависимости. Когда вы запустите portversion, возможно он ругнется и предложит для разрешения ошибочных зависимостей использовать pkgdb -F. За примерно 5 лет использования утилит portupgrade, pkgdb я использовал только для разрешения зависисмостей.

6. Pkg_deinstall

Утилита довольно опасная, присутствует ключ -a, то есть выполнив команду:

pkg_deinstall -a

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

А в общем случае применять утилиту стоит в таком формате, для примера удалим установленный mysql-server:

pkg_deinstall /var/db/pkg/mysql-server-5.0.67_1/

В целом пакет portupgrade очень полезен, особенно начинающим системным администраторам.

http://www.hilik.org.ua/утилита-управления-портами-portupgrade/

Обновлено: 12.03.2015