portupgrade
Система портов во FreeBSD сама по себе очень удобная, но кроме того существуют дополнительные утилиты, самая удобная и продвинутая из них - portupgrade.
Portupgrade ? это не одна утилита, а целый пакет утилит по управлению портами.
В пакет portupgrade входят:
1. portupgrade ? одноименная утилита, средство автоматического обновления установленных программ
2. portinstall ? утилита установки новых программ, присутствующих в системе портов FreeBSD
3. portversion ? утилита показывающая установленный софт и наличие обновлений для него.
4. portsclean ? утилита очистки мусора остающигося после сборки портов
5. portsdb ? утилита создающая базу программ, присутствующих в портах FreeBSD
6. ports_glob ? предназначена для поиска по базе портов
7. portcvsweb ? браузер для CVSWeb
8. pkgdu ? утилита, предназначенная для подсчета дискового пространства занятого уcтановленныыми программами
9. pkgdb ? еще одна утилита для управления базой портов
10. pkg_which ? предназначен для поиска по базе портов
11. pkg_sort ? утилита сортирует порты в соответствии c зависимостями
12. pkg_fetch ? утилита для скачки собранных(бинарных) пакетов
13. 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 очень полезен, особенно начинающим системным администраторам.





