КГБ: Киевская городская библиотека URL: http://lib.misto.kiev.ua/MAMBURUNIX/portupgrade.dhtml 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 очень полезен, особенно начинающим системным администраторам. URL: http://lib.misto.kiev.ua/MAMBURUNIX/portupgrade.dhtml