Выпущена (http://code.google.com/p/smartportsupgrader/) тестовая версия утилиты, позволяющей быстро получить информацию об возможных обновлениях портов FreeBSD, и создать скрипт "умного" обновления портов.
Требования:- Установленное JRE-окружение;- Дерево портов, обновленное через cvsup до последней версии;- Выкачанный или построенный Index-файл.
Утилита поставляется с двумя исполняемыми файлами и демонстрационными шаблонами. Первый скрипт выводит порты, для которых есть более новые версии. Второй скрипт создает скрипт обновления портов, т.н. "update-script", который принимает параметры fetch и/или build. При указании fetch - загружаются все необходимые "distfile"; При указании build - делается попытка собрать и обновить каждый порт, в порядке убывания количества зависимых портов. То есть, сначала собираются приложения и библиотеки от которых зависят другие порты, например, perl, а потом уже всё остальное.
Можно создать файл skipfile, и в нем построчно указать ...URL: http://code.google.com/p/smartportsupgrader/
Новость: http://www.opennet.me/opennews/art.shtml?num=25639
чем портапгрэйд не угодил?
И я не понял!
Пока портапгрейд запустится, здесь уже все просчитывается и создается скрипт обновления.Плюс то что было нужно лично мне - последовательный fetch всего что надо для обновления.
То есть первый проход, фетч всего, второй (по желанию, можно шаблон подправить, сейчас нет) - конфигурирование всего,
ну и третий сбилдить-установить.Ну и чтоб быстренько за три секунды глянуть какие порты пришло время обновить - аналогов не знаю. Можно приделать это к тому же mutt, и слать на емейл.
Плюс пока делал, нашел три опечатки в pkg-plist'ах, отрапортавал мейнтейнерам :) Тоже вроде польза.
man pkv_version. Прикрутите к отчётам, если критично.Если portupgrade вам не угодил, используйте portmaster маленький и делает всё, что вы написали. На shell
не холивара ради. pkg_version:
10.620u 5.980s
против
1.366u 0.173sНу и возможность написать свои шаблоны. Шаблоны это прикольней чем ловить инпут, и преобразовывать/манипулировать как-то.
а куда нам спешить? :) темболее по сравнению с тем временем, что уходит на саму сборку портов это мелочи. Может пригодится для каких-то гуев в юзер-френдли дистрибутивах как PC-BSD
>не холивара ради. pkg_version:
>10.620u 5.980s
>против
>1.366u 0.173sЭта на каком количестве пакетов? Сравните лучше с portversion.
>Ну и возможность написать свои шаблоны. Шаблоны это прикольней чем ловить инпут,
>и преобразовывать/манипулировать как-то.В portupgrade есть шаблоны, смотрите в pkgtools.conf.
> не холивара ради. 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
> Пока портапгрейд запуститсяВы про 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> отрапортавал мейнтейнерам :) Тоже вроде польза
Разве что.
Написано на java (можно не продолжать), преимуществ перед portupgrade нет, возможностей гораздо меньше. Что хотел сказать автор?
JRE?? Ну и зачем оно надо?
на питоне или на перле такие вещи писать надо.
странно конечно, но в принципе все это есть не только в портапгрейде но и в стандартной системе портов, достаточно заглянуть в bsd.port.mk,
make fetch-recursive хотябы. но портапгрейд всяко удобнее.
portupgrade.... откройте для себя portmaster - 88k #!/bin/sh
+1 вообще не понимаю почему народ все еще пользуется им. Он ведь Руби за собой тянет и еще туеву хучу всякого. portmaster умеет столько же, но у него нет таких зависимостей и ставится за 1.5 секунды. Сто тому назад забыл про portupgrade
>+1 вообще не понимаю почему народ все еще пользуется им. Он ведь
>Руби за собой тянет и еще туеву хучу всякого. portmaster умеет
>столько же, но у него нет таких зависимостей и ставится за
>1.5 секунды. Сто тому назад забыл про portupgradeиз полезняшек:
в случае с portupgrade можно узнать [N/M], где M кол-во пакетов подлежащих обновлению, N - текущий.
p.s. сам я юзаю portmaster;)
#!/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 'Разруливать вручную нечего.'
portsnap fetch update
portversion -v -l '<'
portupgrade -aгенерить полчаса индекс самому - это пять, открой для себя хотя бы make fetchindex.
Можно "make fetchindex" вместо portsdb, но он не учитывает собственноручно созданных портов. У меня четырёхъядерник, индекс генерится около десяти минут.
>Можно "make fetchindex" вместо portsdb, но он не учитывает собственноручно созданных портов.
>У меня четырёхъядерник, индекс генерится около десяти минут.Хм, я бы хранил свои порты в отдельном дереве (собственно с portsnap иначе и нельзя), и для них бы отдельно запускал make index, потом сливал sort'ом с главным. Сэкономил бы 10 минут.
>>Можно "make fetchindex" вместо portsdb, но он не учитывает собственноручно созданных портов.
>>У меня четырёхъядерник, индекс генерится около десяти минут.
>
>Хм, я бы хранил свои порты в отдельном дереве (собственно с portsnap
>иначе и нельзя), и для них бы отдельно запускал make index,
>потом сливал sort'ом с главным. Сэкономил бы 10 минут.Ну и мучайтесь сами со своим portsnap. Меня устраивает portupgrade и собственные порты в одном дереве со всеми.
Порты в дереве со всеми плохо по многим причинам. Мучайся дальше с make index :))
Кстати, а как твои порты вообще в него попадают? Неужели ты пихаешь их в <категория>/Makefile, который затирается при его обновлении?
вроде ж взрослый дядька...
tcsh как шелл - зачет(сам везде юзаю)
но за #!/bin/csh - неуд.
точно также как и за #!/usr/bin/env bash нужно отрубать половой орган (по самый локоть).
да и cd /usr/ports/ ядумаю ненужен;(
> tcsh как шелл - зачет(сам везде юзаю)Чего в этом зачетного? Нестандартное г-но с убогим синтаксисом. Шелл обязан быть совместимым с sh.
если афтар не понял что конкретно имелось ввиди то скажу более развернуто:
s/шелл/cli/
так нормально?
исходя из этих данных: что в tcsh не совместимо с sh?
> исходя из этих данных: что в tcsh не совместимо с sh?Вообще-то все. Начнем с >/dev/null 2>&1
>> исходя из этих данных: что в tcsh не совместимо с sh?
>
>Вообще-то все. Начнем с >/dev/null 2>&1у нас наверное разные понятия о cli. для меня это средство ввода командочек, а для вас?
>у нас наверное разные понятия о cli. для меня это средство ввода
>командочек, а для вас?П-ц, "командочек". Сюси-пуси. Вообще-то шелл - это как средство для интерактивного "ввода командочек", так и скриптинга, и от одного до другого один шаг, потому что когда "командочка" не влезает в строчку и при этом может понадобиться еще раз, ее пора оформлять в отдельный скрипт. Посему, синтаксис у интерактивного и неинтерактивного шелла должен быть одинаков. Это раз. Два - это совместимость. Все скрипты во FreeBSD написаны на sh, а в других системах никаких [t]csh в помине нет. Итого - шелл обязан быть совместимым с sh. Без башизмов, и уж точно не с совершенно левым синтаксисом как у [t]csh.
Если вас пугает перенаправление потоков и для вас CLI - "средство ввода командочек", проходите мимо, я умоляю. Перед одноклассниками будете понтоваться что не в иконку тыкаете, а то же самое в шелле набираете.
>Посему, синтаксис у интерактивного и неинтерактивного шелла должен быть одинаков.Резко, яростно против! Пересечение мизерно, делая так кастрируешь продукт ...
Как по мне:
/bin/sh - для скриптов
tcsh, bash, zsh, ksh ,ZOGsh - для интерактива
> Резко, яростно против! Пересечение мизерно, делая так кастрируешь продукт...Потрудитесь объяснить смысл этого набора слов.
> Как по мне:
> /bin/sh - для скриптов
> tcsh, bash, zsh, ksh ,ZOGsh - для интерактиваzsh и bash совместимы с sh, поэтому кошерны. tcsh нет, поэтому в тoпку, остальное не использовал.
>П-ц, "командочек". Сюси-пуси. Вообще-то шелл - это как средство для интерактивного "ввода
>командочек", так и скриптинга, и от одного до другого один шаг,
>потому что когда "командочка" не влезает в строчку и при этом
>может понадобиться еще раз, ее пора оформлять в отдельный скрипт. Посему,
>синтаксис у интерактивного и неинтерактивного шелла должен быть одинаков. Это раз.афтар, давайте уж успокоите вашу бурную фантазию, а? "отдельный скрипт" и пишется на sh всегда (по крайней мере в моем случае). это раз.
два: может таки разберетесь и перестанете противоречить себе? или вам одноклассники и классный руководитель запрещают использовать для скриптинга sh а в качестве "интерактивного" шелла [t]csh?
очень хочется видеть ссылку на стандарт с "синтаксис у интерактивного и неинтерактивного шелла должен быть одинаков". btw, он одинаков в tcsh. сам с собой;)>Два - это совместимость. Все скрипты во FreeBSD написаны на sh,
>а в других системах никаких [t]csh в помине нет. Итого -
>шелл обязан быть совместимым с sh. Без башизмов, и уж точно
>не с совершенно левым синтаксисом как у [t]csh.вы хотите расказать мне на чем скрипты во fbsd пишутся?;)
[tiger@notebook]~%wc -l .ssh/known_hosts
272 .ssh/known_hosts
все - физические машинки с как минимум 1 (чаще с 2-5) джейлами. из них только 2 машины с линаксом. И я вас и ваших одноклассников наверное удивлю: на них _тоже_ установлен (и конечно же используется) tcsh.>Если вас пугает перенаправление потоков и для вас CLI - "средство ввода
>командочек", проходите мимо, я умоляю. Перед одноклассниками будете понтоваться что не
>в иконку тыкаете, а то же самое в шелле набираете.почему вы решили что оно меня пугает?
>афтар, давайте уж успокоите вашу бурную фантазию, а?Давайте в детсад с лишними словами, ок? Эпиграф еще присобачьте, чтобы красноглазость была очевиднее.
>"отдельный скрипт" и пишется на sh всегда (по крайней мере в моем случае). это раз.
Нечего подобного. Вот я напишу в zsh что-нибудь типа
for f in /usr/bin/*; do ldd $f 2>/dev/null | grep -q not\ found && echo $f; done
а потом захочу скопировать в скрипт, и скопирую. А если вы напишете аналог с своем tcsh, будете править для совместимости sh. Аналогично в другую сторону.
>два: может таки разберетесь и перестанете противоречить себе?
Я не противоречу себе. Как научитесь читать и просто общаться, приходите.
>на них _тоже_ установлен (и конечно же используется) tcsh
Ну фанатизм во всей красе - будем использовать несовместимое поделие, и только ради этого везде его ставить. До тех пор, пока не попадется машина без рутового доступа и без компилятора, или без сети, ага. sh там будет. А tcsh не будет никогда. Удачи с таким подходом.
>Ну фанатизм во всей красе - будем использовать несовместимое поделие, и только
>ради этого везде его ставить. До тех пор, пока не попадется
>машина без рутового доступа и без компилятора, или без сети, ага.
>sh там будет. А tcsh не будет никогда. Удачи с таким
>подходом.1. csh (tcsh) входит в базовую поставку FreeBSD наравне с sh.
2. csh и tcsh — хардлинки на один и тот же исполняемый файл "tcsh".
Учитесь читать, я не только про FreeBSD.
>>Ну фанатизм во всей красе - будем использовать несовместимое поделие, и только
>>ради этого везде его ставить. До тех пор, пока не попадется
>>машина без рутового доступа и без компилятора, или без сети, ага.
>>sh там будет. А tcsh не будет никогда. Удачи с таким
>>подходом.
>
>1. csh (tcsh) входит в базовую поставку FreeBSD наравне с sh.
>2. csh и tcsh — хардлинки на один и тот же исполняемый
>файл "tcsh".да расслабься, человек настолько туп что с 3 ответов не понял про что речь идет и все еще бредит скриптингом. типичный bash/zsh юзер.
>исходя из этих данных: что в tcsh не совместимо с sh?Для внииииипеных знатоков шелла типа тебя:
man tcsh:
...
tcsh is an enhanced but completely compatible version of the Berkeley UNIX C shell, csh(1).
...
:)
>>исходя из этих данных: что в tcsh не совместимо с sh?
>
>Для внииииипеных знатоков шелла типа тебя:
>
>man tcsh:
>...
>tcsh is an enhanced but completely compatible version of the Berkeley UNIX
>C shell, csh(1).
>...товарищь, начните уж принимать более легкие наркотики, выше ответ на совершенно другой вопрос. я, если что, в курсе что такое csh и что такое tcsh
>но за #!/bin/csh - неуд.
>точно также как и за #!/usr/bin/env bash нужно отрубать половой орган (по
>самый локоть).Проблемы негров шерифа улыбают. :)
>#!/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
#!/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" — нельзя. Вдруг не понравится новый пакет и захочется откатиться на предыдущую версию.
>#!/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