From: micheas <micheas@micheas.dyns.net>
FreeBSD does not have an equivalent of linux's 'su -c'
Equivalent? You're right the FreeBSD "su" command does not have the same option to run an arbitrary command as an argument, but there are other ways to solve the problem. Worst case, the z3950-daemon-shell can be SUID with the appropriate file owner. Not the ideal solution, but it is functionally equivalent. I think this falls in the "keep looking" category.
Are any of the environment names set by the shell script passed to the perl script that runs the daemon by name (ie do I have to keep your variable names?)
No, you don't have to keep them. Do they need to be changed? If they aren't descriptive or explanatory enough, let's change them in the current script also.
Is there any reason to not have apache call the script? (ie does anything have to be done as root?)
Yes, there is a reason not to. For one, the Linux "su -c" does need to be root. Also, the script should be run once, not everytime someone makes a search request. I don't think Apache was designed to be an arbitrary launcher, so it would probably be a lot *more* work to shoe-horn it into Apache. And the search daemon isn't really Apache related. I have some command-line text-mode add-ons for Koha, which may show up in the release later, which use the Z39.50 search facilities. They don't have anything to do with Apache, and neither does the search daemon. <rant> Only bad applications are "purely" web-based. Good applications have a major amount of web facing to them, but also have parts that are abstracted from it so they are useful in other ways also, such as batch automation. "I don't *want* to click [Submit] 483 times..." </rant>
Does it make sense to try changing the perl script instead of rewriting the shell scripts for each os?
No. The shell scripts should handle each OS's various quirks, precisely so the Perl script *doesn't* have to change for each OS. If you look closely, after all the comments and overhead are stripped out, the two Z39.50 scripts do only two lines of actual work: The -launch script uses "su" to change the user ID, and the -shell script sets PERL5LIB before running the daemon. That's the only actual work done in the scripts. Everything else in there now is either comments or fluff. Anything else needed for another OS should be encapsulated in the script likewise. So a "rewrite" of the scripts should be two or three lines of code.
Telnet terminals -- HERE BE DRAGONS -- these maybe problematic under FreeBSD.
Actually, this is non-issue. The name "Telnet terminals" is misleading. It really just means "text mode". There is absolutely nothing special about Telnet. It's a handy name because people know that when you use telnet, you get a text-mode session. You can use SSH and the program will be exactly the same. Thanks for your work in identifying issues. - Alan ---- Alan Millar --==> am12@bolis.com <==--