Ноя 26 2008

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

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть