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 очень полезен, особенно начинающим системным администраторам.

Подякувати Помилка?

Дочати пiзнiше / подiлитися