Решено: Манипуляция с портами (Как отключить интерактивный режим?)

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Аватара пользователя
rooty
Сообщения: 83
ОС: laptop: openSuSE 12.1

Решено: Манипуляция с портами

Сообщение rooty »

Здравствуйте господа!!!

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

Пишу простенький sh скрипт который будет устанавливать 2 или 3 пакета из портов у которых нет зависимостей.
Но у них есть опции, т.е. можно выбрать с чем собрать пакет.

Моя Цель заключается в том, чтоб когда человек запустит мой скрипт, конфиг (make config) пакета с опциями формировался автоматом, и в нем изменялось две - три опции с NO на YES. Т.е. чтоб у человека не было интерактива... чтоб он запустил этот скрипт и пошел курить...

Что-то нарыл http://forums.freebsd.org/showthread.php?t=3718 но боюсь что это не совсем то. Думал даже как-то форсить создания конфига и с помощью awk менять опции в /var/db/ports/..... но мне кажется это не совсем корректно... когда-то я видел очень изящный и простой способ... но к сожалению уже забыл как делать (
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Решено: Манипуляция с портами

Сообщение Rootlexx »

Можно воспользоваться expect (man expect).
Добавлено: материал по теме: http://www.opennet.ru/base/dev/interactive_tools.txt.html.
Спасибо сказали:
Аватара пользователя
rooty
Сообщения: 83
ОС: laptop: openSuSE 12.1

Re: Решено: Манипуляция с портами

Сообщение rooty »

Rootlexx писал(а):
26.10.2010 22:58
Можно воспользоваться expect (man expect).
Добавлено: материал по теме: http://www.opennet.ru/base/dev/interactive_tools.txt.html.


Код: Выделить всё

[sandel@dream]:/home/sandel> man expect
No manual entry for expect
Exit 1
[sandel@dream]:/home/sandel> man 8 expect
No entry for expect in section 8 of the manual
Exit 1


Ну да ладно.. я на самом деле видел как работает эта штука и даже думал над тем, чтоб сделать реализацию с помощью ее. Но это как из последних вариантов...

Я помню встречал способ решить данную задачу одной не большой строкой...
Спасибо сказали:
Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

Re: Решено: Манипуляция с портами

Сообщение Shura »

man ports читал?
На предмет опции config-conditional

И еще можно man portinstall до кучи.
Rock'n'roll мертв © БГ
Спасибо сказали:
Аватара пользователя
rooty
Сообщения: 83
ОС: laptop: openSuSE 12.1

Re: Решено: Манипуляция с портами

Сообщение rooty »

Shura писал(а):
27.10.2010 12:33
man ports читал?
На предмет опции config-conditional

И еще можно man portinstall до кучи.

конечно читал...

portinstall это утилита portupgrade не родная, ее нужно доставлять поэтому этот вариант отпадает (
а config-conditional при чем тут?

Код: Выделить всё

     config-conditional
                      Skip the ports which have already had their OPTIONS con-
                      figured.

Там же говорится, скипнуть если конфиг уже составлен...
Мне же нужно составить дефолтный конфиг и при этом поменять у него пару опций...
Или я что-то не так понял?

Спасибо сказали:
Аватара пользователя
rooty
Сообщения: 83
ОС: laptop: openSuSE 12.1

Re: Решено: Манипуляция с портами

Сообщение rooty »

ээхх.. пока накатал такую часть кода на примере порта nginx

Код: Выделить всё

sed -i ".ps-orig" 's/\(^.*HTTP_GEOIP_MODULE.*\)off \\/\1on \\/' /usr/ports/www/nginx/Makefile
sed -i "" "$(awk '$0 ~ /^$/ {print NR}' /usr/ports/www/nginx/Makefile | xargs | awk -F" " '{print $1}')s/^$/BATCH=1/" /usr/ports/www/nginx/Makefile

#/usr/bin/make -DBATCH -C /usr/ports/www/nginx install clean
/usr/bin/make -C /usr/ports/www/nginx install clean


mv -f /usr/ports/www/nginx/Makefile.ps-orig /usr/ports/www/nginx/Makefile


Во второй строчке приведенного кода находится сэдом пустая строка в файле /usr/ports/www/nginx/Makefile и вставляется там BATCH=1 . Сделано для того, чтобы не появлялась синяя менюшка по составлению конфига сборки только у nginx... мало ли что там может быть у его зависимостей...

может кому-то пригодится...

если найду проще вариант, как встречал раньше, скину...
Спасибо сказали:
Аватара пользователя
NekoExMachina
Сообщения: 485
ОС: Кошерная.

Re: Решено: Манипуляция с портами

Сообщение NekoExMachina »

Моя Цель заключается в том, чтоб когда человек запустит мой скрипт, конфиг (make config) пакета с опциями формировался автоматом, и в нем изменялось две - три опции с NO на YES. Т.е. чтоб у человека не было интерактива... чтоб он запустил этот скрипт и пошел курить...

Не проще ли поступить без извратов да посмотреть какие файлы модифицируются при изменении и сохранении опций в make config?

эти файлы по-моему создать и подправить проще, чем пытаться взаимодействовать скриптом с некоим UI.
На форуме больше не появляюсь.
Высокопарность и надменность довела.
OpenBSD-current+scrotwm*1 (acer aspire one 531h)
FreeBSD 8.1+kde3*1 (desktop)
FreeBSD 8.1+scrotwm*1 (hp530)
FreeBSD 9.0+dwm*1 (old toshiba satellite)

Спасибо сказали: