Re: OT: (but I do not know who ask for): buildin an RPM from scratch
> > I will write a mini setup program as Microsft does ;) > > Up to now I just "echo" out the instructions and the license (with a > line that sounds like 'using the software presumes you have accepted the > license terms at all" Intel's free compiler, Mathematica, and maple take the following approach: write a simple script that reviews the license, asks/determines which parts /things to install, unpacks the appropriate rpm's and installs them -- relocating to users chosen path if that is an option. These can be run from a script by catting in the required answers: install_ace_package < my_options. Generally such packages are add-ons and go in /opt and are individually installed. On the other hand if you have used rpm to mark your license type and have included it in the distro then arguable an installer is/should be aware of it. VMware + staroffice(?) take an alternative approach -- rpm's to install but a first-time script to be run by users to setup the network daemons etc: vmware-config.pl and soffice. Alternatively you can have the program auto-detect different features like SSE1/2 MMX support for multimedia libraries. Hopefully you should be inspired by one of these examples. Good luck, Q.
Re: OT: (but I do not know who ask for): buildin an RPM from scratch
Rick Thomas wrote: >When the script is run by rpm, it probably has input redirected from >/dev/null. As the docs say, it should be non-interactive. Anything else >will break scripted installations. > > > > Yes. It is so. In fact I used something like %pre $bashscript = /tmp/myfile echo "#!/bin/sh" > $bashscript echo "Stew Benedict suggestion" >> $bashscript chmod 700 $bashscript sh $bashscript So i was REALLY sure it was a bash script to be executed (sorry but I am new to rpms) and the problem was the same. Then I run /tmp/myfile and it worked... so I think the input is redirected from /dev/null. OK. I will write a mini setup program as Microsft does ;) Up to now I just "echo" out the instructions and the license (with a line that sounds like 'using the software presumes you have accepted the license terms at all" Regards, Miguel Beccari
Re: OT: (but I do not know who ask for): buildin an RPM from scratch
Stew Benedict wrote: >Are you saying the script behave differently in the RPM than if you just >run it? I would do something a little more bulletproof, which would force >them to answer one of your choices, unless they ctrl-C out of it: > > > > Yes (I am saying the script behave differently). I used your suggestions, but the result is the same. If I run sh /var/tmp/rpm-tmp.54377 I have got the promt "Answer (yes | no | later)" If I answer the script goes on as well. It is OK. But when I run rpm -Uhv I have a loop: Answer (yes | no | later) Answer (yes | no | later) Answer (yes | no | later) Answer (yes | no | later) Answer (yes | no | later) Answer (yes | no | later) [etc...] This because of $chiave is empty GetInput () { echo -n "Answer (yes | no | later)"; read chiave while [ -z "$chiave" ]; do GetInput done; } Because of $chiave is empry GetInput is looped. Miguel Beccari
Re: OT: (but I do not know who ask for): buildin an RPM from scratch
On Fri, 31 May 2002, Miguel Beccari wrote: > I builded a RPM from scratch of an application of mine. > > The SRC rpm works: it builds 2 i586 architecture packages, it has got > good controls, it check dependecies and so on. > > My trouble is this: how to force the user to answer some questions > before install the package ? > > I wrote down theese lines: > > > %pre > > echo "Bla bla bla."; > echo -n "Answer (yes | no | later)"; > read chiave > while ( test -z $chiave ); do > read chiave > done; > > > that produce a /var/tmp/rpm-tmp.19101 as follow: > > echo "Bla bla bla."; > echo -n "Answer (yes | no | later)"; > read chiave > while ( test -z $chiave ); do > read chiave > done; > > > > The problem is that $chiave is NEVER != zero. > > > Some one can help me ? > Are you saying the script behave differently in the RPM than if you just run it? I would do something a little more bulletproof, which would force them to answer one of your choices, unless they ctrl-C out of it: #!/bin/sh echo "Bla bla bla."; GoodAnswer () { # do something now echo "You answered $chiave" } GetInput () { echo -n "Answer (yes | no | later)"; read chiave while [ -z "$chiave" ]; do GetInput done; } GetInput case $chiave in yes | no | later) GoodAnswer ;; *) GetInput ;; esac Of course if they install with rpmdrake or whatever, you need to call up a terminal window. Others may have even better suggestions. Stew Benedict -- MandrakeSoft PPC FAQ: http://www.linux-mandrake.com/en/ppcFAQ.php3 IRC: irc.openproject.net #cooker-ppc
Re: OT: (but I do not know who ask for): buildin an RPM from scratch
Miguel Beccari wrote: > > > %pre > > echo "Bla bla bla."; > echo -n "Answer (yes | no | later)"; > read chiave > while ( test -z $chiave ); do >read chiave > done; > OK. In the docs I read: There are certain caveats about these scripts which you should take into account. Number one, each must fit inside a 8192 buffer, and number two, they should be non-interactive. Anything which requires manual input from the user is wrong, as this will break non-interactive RPM installation procedures. Regards, Miguel Beccari