Тестовый выпуск утилиты SmartPortsUpgrader для FreeBSD

02.03.2010 16:01

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

Требования:

  • Установленное JRE-окружение;
  • Дерево портов, обновленное через cvsup до последней версии;
  • Выкачанный или построенный Index-файл.

Утилита поставляется с двумя исполняемыми файлами и демонстрационными шаблонами. Первый скрипт выводит порты, для которых есть более новые версии. Второй скрипт создает скрипт обновления портов, т.н. "update-script", который принимает параметры fetch и/или build. При указании fetch - загружаются все необходимые "distfile"; При указании build - делается попытка собрать и обновить каждый порт, в порядке убывания количества зависимых портов. То есть, сначала собираются приложения и библиотеки от которых зависят другие порты, например, perl, а потом уже всё остальное.

Можно создать файл skipfile, и в нем построчно указать порты, которые обновлять нельзя. При желании и необходимости, можно писать свои шаблоны, генерирующие скрипты или вывод в нужном формате.

Пример скорости работы (на разных конфигурациях):

  • при 252 установленных портах: 1.366u 0.173s 0:01.28 119.5% 109+1419k 0+4io 0pf+0w
  • при 762 установленных портах: 2.446u 0.869s 0:17.22 19.1% 117+1060k 796+6io 145pf+0w
  • при 1297 установленных портах: 4.007u 0.996s 0:28.84 17.3% 104+4120k 0+0io 140pf+0w

Внимание! Граф зависимостей не строится, так что если есть очень важная библиотека, а от неё зависит только одна программа и эта программа зависит еще от других компонентов, то библиотека будет собираться в самом конце. Из-за этого, при обновлении сложных конфигураций могут возникнуть проблемы.