Добавление пользовательского лицензионного соглашения в пакет Solaris

Я задал аналогичный вопрос для Linux RPM (Добавление лицензионного соглашения в RPM-пакет) . Теперь у меня такой же запрос для пакета Solaris. Мне не удалось получить какую-либо полезную ссылку / подробности, если это возможно. Но я нашел пакет, который делает то же самое, но о том, как он реализован, не упоминается.

$pkgadd -d . SUNWsamfsr SUNWsamfsu

Processing package instance from 

Sun SAM and Sun SAM-QFS software Solaris 10 (root)(i386) 4.6.5,REV=5.10.2007.03.12

Sun SAMFS - Storage & Archiving Management File System

Copyright (c) 2007 Sun Microsystems, Inc.

All Rights Reserved.


----------------------------------------------------- 

In order to install SUNWsamfsr, you must accept the terms of
the Sun License Agreement.
Enter "y" if you do, "n" if you don't, or "v" to view agreement. y

-The administrator commands will be executable by root only (group bin).

If this is the desired value, enter "y". If you want to change 
the specified value enter "c". y   
...   
...

Есть идеи, как реализовать такую ​​вещь для пакета Solaris?


person Adil    schedule 04.03.2010    source источник


Ответы (2)


Я нашел способ решить эту проблему.

Самораспаковывающийся двоичный файл - это способ сделать это.

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

Как только пользователь согласится, извлеките двоичный файл (файл пакета solaris), встроенный в сценарий оболочки, и установите его.

Чтобы встроить пакет установщика, сначала добавьте маркер, скажем, PKG_DATA:

shell script contents
exit 0   
PKG_DATA   

Добавьте файл пакета:
cat имя_файла_пакета >> your_shell_script

Распакуйте пакет и установите его:

ARCHIVE=awk '/^__PKG_DATA__/ {print NR + 1; exit 0; }' $0   
outname=install.$$   
tail -n+$ARCHIVE $0 > $outname   

echo "Extracting..."   
pkgadd -d $outname   
rm -f $outname #we dont need it anymore   

exit 0   

PKG_DATA   
<pkg file data here>   
person Adil    schedule 05.03.2010

Я бы реализовал это с помощью скрипта checkinstall.

"exit 3" в этом сценарии корректно завершает установку пакета.

Это нетривиально, так как вам нужно создать сценарий запроса и ссылаться на него в сценарии checkinstall.

http://docs.oracle.com/cd/E18752_01/html/817-0406/ch1designpkg-24309.html#ch1designpkg-4

person jlliagre    schedule 05.03.2010
comment
На самом деле checkinstall должен быть неинтерактивным. request является интерактивным и запускается во время установки пакета - вам не нужно запускать request из checkinstall. - person Kenster; 05.03.2010
comment
Я имел в виду именно это, хотя и недостаточно ясно. Вы используете сценарий запроса для взаимодействия с пользователем и выходите из 3 после проверки и установки. Под ссылкой я имею в виду, что сценарий запроса устанавливает переменную, которая будет использоваться в checkinstall. Так оформлен запрос. docs.sun.com/app/docs/doc/ 806-7008 / 6jftmsc2v? A = просмотреть - person jlliagre; 06.03.2010
comment
Перед установкой пакета необходимо отобразить и принять лицензионное соглашение. - person Adil; 11.03.2010
comment
Верно. Вы показываете текст лицензии и предлагаете пользователю принять его в сценарии запроса. Я думал, что это очевидно. - person jlliagre; 12.03.2010