The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

02.03.2010 18:08

Выпущена тестовая версия утилиты, позволяющей быстро получить информацию об возможных обновлениях портов 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

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

  1. Главная ссылка к новости (http://code.google.com/p/smart...)
Автор новости: yerenkow
Тип: Программы
Короткая ссылка: https://opennet.ru/25639-freebsd
Ключевые слова: freebsd, ports, build, packet
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (40) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Roman (??), 18:30, 02/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    чем портапгрэйд не угодил?
     
     
  • 2.2, BirdGovorun (??), 18:31, 02/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    И я не понял!
     
     
  • 3.4, yerenkow (??), 18:36, 02/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Пока портапгрейд запустится, здесь уже все просчитывается и создается скрипт обновления.

    Плюс то что было нужно лично мне - последовательный fetch всего что надо для обновления.
    То есть первый проход, фетч всего, второй (по желанию, можно шаблон подправить, сейчас нет) - конфигурирование всего,
    ну и третий сбилдить-установить.

    Ну и чтоб быстренько за три секунды глянуть какие порты пришло время обновить - аналогов не знаю. Можно приделать это к тому же mutt, и слать на емейл.

    Плюс пока делал, нашел три опечатки в pkg-plist'ах, отрапортавал мейнтейнерам :) Тоже вроде польза.

     
     
  • 4.5, Ярослав (??), 19:07, 02/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    man pkv_version. Прикрутите к отчётам, если критично.

    Если portupgrade вам не угодил, используйте portmaster маленький и делает всё, что вы написали. На shell

     
     
  • 5.6, yerenkow (??), 19:24, 02/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    не холивара ради. pkg_version:
    10.620u 5.980s
    против
    1.366u 0.173s

    Ну и возможность написать свои шаблоны. Шаблоны это прикольней чем ловить инпут, и преобразовывать/манипулировать как-то.

     
     
  • 6.7, settler (?), 19:39, 02/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    а куда нам спешить? :) темболее по сравнению с тем временем, что уходит на саму сборку портов это мелочи. Может пригодится для каких-то гуев в юзер-френдли дистрибутивах как PC-BSD
     
  • 6.11, аноним (?), 20:02, 02/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >не холивара ради. pkg_version:
    >10.620u 5.980s
    >против
    >1.366u 0.173s

    Эта на каком количестве пакетов? Сравните лучше с portversion.

    >Ну и возможность написать свои шаблоны. Шаблоны это прикольней чем ловить инпут,
    >и преобразовывать/манипулировать как-то.

    В portupgrade есть шаблоны, смотрите в pkgtools.conf.

     
  • 6.19, Myc (??), 00:53, 03/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > не холивара ради. pkg_version:
    > 10.620u 5.980s

    Сколько же там пакетов???
    На рабочем десктопе
    %pkg_info -aE | wc -l
         755
    %time pkg_version -I -l '<' > /dev/null
    0.857u 0.112s 0:00.97 98.9%     43+1118k 0+0io 0pf+0w

     
  • 4.10, аноним (?), 20:00, 02/03/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Пока портапгрейд запустится

    Вы про portsdb? 10 секунд, один раз после обновления портов. Порты и то дольше обновляются.

    > Плюс то что было нужно лично мне - последовательный fetch всего что надо для обновления.

    portupgrade -F

    > То есть первый проход, фетч всего, второй (по желанию, можно шаблон подправить, сейчас нет) - конфигурирование всего, ну и третий сбилдить-установить.

    man portupgrade, все умеет.

    > Ну и чтоб быстренько за три секунды глянуть какие порты пришло время обновить - аналогов не знаю.

    Узнайте - portversion из portupgrade. Это аналог pkg_version, и работает гораздо быстрее.

    На полутора тысячах пакетов:

    % time portversion -v -l '<'
    sudo-1.7.2.2                <  needs updating (port has 1.7.2.5)
    zsh-4.3.10_2                <  needs updating (port has 4.3.10_3)
    portversion -v -l '<'  2.05s user 0.59s system 99% cpu 2.653 total

    > отрапортавал мейнтейнерам :) Тоже вроде польза

    Разве что.

     

  • 1.8, аноним (?), 19:48, 02/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Написано на java (можно не продолжать), преимуществ перед portupgrade нет, возможностей гораздо меньше. Что хотел сказать автор?
     
  • 1.13, Аноним (-), 21:54, 02/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    JRE?? Ну и зачем оно надо?
    на питоне или на перле такие вещи писать надо.
     
  • 1.14, Аноним (-), 21:59, 02/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    странно конечно, но в принципе все это есть не только в портапгрейде но и в стандартной системе портов, достаточно заглянуть в bsd.port.mk,
    make fetch-recursive хотябы. но портапгрейд всяко удобнее.
     
  • 1.16, Аноним (-), 22:29, 02/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    portupgrade.... откройте для себя portmaster - 88k #!/bin/sh
     
     
  • 2.25, oops (ok), 16:48, 03/03/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    +1 вообще не понимаю почему народ все еще пользуется им. Он ведь Руби за собой тянет и еще туеву хучу всякого. portmaster умеет столько же, но у него нет таких зависимостей и ставится за 1.5 секунды. Сто тому назад забыл про portupgrade
     
     
  • 3.29, тигар (ok), 17:24, 03/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >+1 вообще не понимаю почему народ все еще пользуется им. Он ведь
    >Руби за собой тянет и еще туеву хучу всякого. portmaster умеет
    >столько же, но у него нет таких зависимостей и ставится за
    >1.5 секунды. Сто тому назад забыл про portupgrade

    из полезняшек:
    в случае с portupgrade можно узнать [N/M], где M кол-во пакетов подлежащих обновлению, N - текущий.
    p.s. сам я юзаю portmaster;)

     

  • 1.17, iZEN (ok), 23:56, 02/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    #!/bin/csh
    csup /path/to/ports.supfile
    pkg_version -v | grep need
    portupgrade -aF && cd /usr/ports/ && portsdb -Uu && portupgrade -ap
    pkg_version -v | grep need || echo 'Разруливать вручную нечего.'
     
     
  • 2.18, аноним (?), 00:22, 03/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    portsnap fetch update
    portversion -v -l '<'
    portupgrade -a

    генерить полчаса индекс самому - это пять, открой для себя хотя бы make fetchindex.

     
     
  • 3.20, iZEN (ok), 07:32, 03/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Можно "make fetchindex" вместо portsdb, но он не учитывает собственноручно созданных портов. У меня четырёхъядерник, индекс генерится около десяти минут.
     
     
  • 4.21, аноним (?), 10:08, 03/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Можно "make fetchindex" вместо portsdb, но он не учитывает собственноручно созданных портов.
    >У меня четырёхъядерник, индекс генерится около десяти минут.

    Хм, я бы хранил свои порты в отдельном дереве (собственно с portsnap иначе и нельзя), и для них бы отдельно запускал make index, потом сливал sort'ом с главным. Сэкономил бы 10 минут.

     
     
  • 5.31, iZEN (ok), 00:29, 04/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>Можно "make fetchindex" вместо portsdb, но он не учитывает собственноручно созданных портов.
    >>У меня четырёхъядерник, индекс генерится около десяти минут.
    >
    >Хм, я бы хранил свои порты в отдельном дереве (собственно с portsnap
    >иначе и нельзя), и для них бы отдельно запускал make index,
    >потом сливал sort'ом с главным. Сэкономил бы 10 минут.

    Ну и мучайтесь сами со своим portsnap. Меня устраивает portupgrade и собственные порты в одном дереве со всеми.

     
     
  • 6.35, аноним (?), 17:10, 04/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Порты в дереве со всеми плохо по многим причинам. Мучайся дальше с make index :))
    Кстати, а как твои порты вообще в него попадают? Неужели ты пихаешь их в <категория>/Makefile, который затирается при его обновлении?
     
  • 2.22, тигар (ok), 10:13, 03/03/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    вроде ж взрослый дядька...
    tcsh как шелл - зачет(сам везде юзаю)
    но за  #!/bin/csh - неуд.
    точно также как и за #!/usr/bin/env bash нужно отрубать половой орган (по самый локоть).
    да и cd /usr/ports/ ядумаю ненужен;(
     
     
  • 3.27, аноним (?), 16:51, 03/03/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > tcsh как шелл - зачет(сам везде юзаю)

    Чего в этом зачетного? Нестандартное г-но с убогим синтаксисом. Шелл обязан быть совместимым с sh.

     
     
  • 4.28, тигар (ok), 17:18, 03/03/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    если афтар не понял что конкретно имелось ввиди то скажу более развернуто:
    s/шелл/cli/
    так нормально?
    исходя из этих данных: что в tcsh не совместимо с sh?
     
     
  • 5.30, аноним (?), 21:28, 03/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > исходя из этих данных: что в tcsh не совместимо с sh?

    Вообще-то все. Начнем с >/dev/null 2>&1

     
     
  • 6.34, тигар (ok), 10:40, 04/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >> исходя из этих данных: что в tcsh не совместимо с sh?
    >
    >Вообще-то все. Начнем с >/dev/null 2>&1

    у нас наверное разные понятия о cli. для меня это средство ввода командочек, а для вас?

     
     
  • 7.36, аноним (?), 17:30, 04/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >у нас наверное разные понятия о cli. для меня это средство ввода
    >командочек, а для вас?

    П-ц, "командочек". Сюси-пуси. Вообще-то шелл - это как средство для интерактивного "ввода командочек", так и скриптинга, и от одного до другого один шаг, потому что когда "командочка" не влезает в строчку и при этом может понадобиться еще раз, ее пора оформлять в отдельный скрипт. Посему, синтаксис у интерактивного и неинтерактивного шелла должен быть одинаков. Это раз. Два - это совместимость. Все скрипты во FreeBSD написаны на sh, а в других системах никаких [t]csh в помине нет. Итого - шелл обязан быть совместимым с sh. Без башизмов, и уж точно не с совершенно левым синтаксисом как у [t]csh.

    Если вас пугает перенаправление потоков и для вас CLI - "средство ввода командочек", проходите мимо, я умоляю. Перед одноклассниками будете понтоваться что не в иконку тыкаете, а то же самое в шелле набираете.

     
     
  • 8.38, Diogene the Open Source programmer (?), 20:52, 04/03/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Резко, яростно против Пересечение мизерно, делая так кастрируешь продукт Ка... текст свёрнут, показать
     
     
  • 9.42, аноним (?), 21:14, 05/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Потрудитесь объяснить смысл этого набора слов zsh и bash совместимы с sh, поэто... текст свёрнут, показать
     
  • 8.40, тигар (ok), 09:43, 05/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    афтар, давайте уж успокоите вашу бурную фантазию, а отдельный скрипт и пишетс... текст свёрнут, показать
     
     
  • 9.43, аноним (?), 21:25, 05/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Давайте в детсад с лишними словами, ок Эпиграф еще присобачьте, чтобы красногла... текст свёрнут, показать
     
     
  • 10.44, iZEN (ok), 21:51, 05/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    1 csh tcsh входит в базовую поставку FreeBSD наравне с sh 2 csh и tcsh 82... текст свёрнут, показать
     
     
  • 11.45, аноним (?), 16:52, 06/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Учитесь читать, я не только про FreeBSD ... текст свёрнут, показать
     
  • 11.46, тигар (ok), 12:00, 07/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    да расслабься, человек настолько туп что с 3 ответов не понял про что речь идет ... текст свёрнут, показать
     
  • 5.37, Warhead Wardick (?), 20:47, 04/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >исходя из этих данных: что в tcsh не совместимо с sh?

    Для внииииипеных знатоков шелла типа тебя:

    man tcsh:
    ...
    tcsh is an enhanced but completely compatible version of the Berkeley UNIX C shell, csh(1).
    ...


    :)

     
     
  • 6.41, тигар (ok), 09:45, 05/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>исходя из этих данных: что в tcsh не совместимо с sh?
    >
    >Для внииииипеных знатоков шелла типа тебя:
    >
    >man tcsh:
    >...
    >tcsh is an enhanced but completely compatible version of the Berkeley UNIX
    >C shell, csh(1).
    >...

    товарищь, начните уж принимать более легкие наркотики, выше ответ на совершенно другой вопрос. я, если что, в курсе что такое csh и что такое tcsh

     
  • 3.33, iZEN (ok), 00:40, 04/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >но за  #!/bin/csh - неуд.
    >точно также как и за #!/usr/bin/env bash нужно отрубать половой орган (по
    >самый локоть).

    Проблемы негров шерифа улыбают. :)

     
  • 2.24, _Nec (?), 16:45, 03/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >#!/bin/csh
    >csup /path/to/ports.supfile
    >pkg_version -v | grep need
    >portupgrade -aF && cd /usr/ports/ && portsdb -Uu && portupgrade -ap
    >pkg_version -v | grep need || echo 'Разруливать вручную нечего.'

    Это всё зачем?
    Достаточно:
    1. portsnap fetch update && portversion -v | grep -v "="
    2. portupgrade -Fa (Этот шаг не обязателен, portmaster всё в бэкграунде загружает, но это не интерактивно)
    3. portmaster -Da -no-confirm

    И для профилактики - portsclean -CDLP

     
     
  • 3.32, iZEN (ok), 00:33, 04/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    #!/bin/csh
    cd /usr/ports/ && chflags -R noschg * && csup /path/to/ports.supfile
    pkg_version -v | grep need && portupgrade -aF && portsdb -Uu && portupgrade -ap && rehash && pkgdb -u && portaudit -Fa
    portsclean -CDL
    pkg_version -v | grep need || echo 'Abgemacht.'

    "portsclean -CDLP" — нельзя. Вдруг не понравится новый пакет и захочется откатиться на предыдущую версию.

     
     
  • 4.39, _Nec (?), 22:20, 04/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >#!/bin/csh
    >cd /usr/ports/ && chflags -R noschg * && csup /path/to/ports.supfile
    >pkg_version -v | grep need && portupgrade -aF && portsdb -Uu &&
    >portupgrade -ap && rehash && pkgdb -u && portaudit -Fa
    >portsclean -CDL
    >pkg_version -v | grep need || echo 'Abgemacht.'
    >

    Хм.. если решил всё, бессмысленно, в кучу собрать, то туда же pkgdb -L и pkgdb -Fa  воткни.. и portmaster --check-depends, и --check-port-dbdir... иии-ии-и-и..
    Резника и Михалкова, Шевчука и Шахрина,
    и Земфиру с Мумий Троллем, и Жечкова
                                 с Пеленягрэ,
    а особо тех у...богих, что писали для "На-На".

    >"portsclean -CDLP" — нельзя. Вдруг не понравится новый пакет и захочется откатиться
    >на предыдущую версию.

    Тогда уж - portsclean -CL

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру