Forum OpenACS Q&A: Error: nsd.tcl: Invalid command name "ns_getform"

I am having another problem getting OpenACS to work.

I've got the login screen! But on logging in I get "...encountered a Server or Operating System Error...", the following is written to my server1.log

[04/Sep/2000:23:25:36][769.13317][-conn1-] Error: nsd.tcl: invalid 
command name "ns_getform"
invalid command name "ns_getform"
    while executing
"ns_getform"
    (procedure "set_the_usual_form_variables" line 2)
    invoked from within
"set_the_usual_form_variables"
    (file "/web/server1/www/register/user-login.tcl" line 7)
    invoked from within
"source $script"
    (procedure "ns_sourceproc" line 6)
    invoked from within
"ns_sourceproc cns3 {}"

You'll see that the problem seems to start at ns_getform. This problem occurs on other .tcl pages needing ns_getform.

RH6.2
AOLserver 3.0
PostgreSQL 7.0
OpenACS 3.2.2.beta3

Any help is hugely appreciated.

Collapse
Posted by Andrew Boddy on
So I was a bozo!

For future reference for future generations:
There are fundamental tcl procedures in the /usr/local/AOLserver/tcl directory that need to be sourced. I've copied these into the /web/myserver/tcl/ directory where all the other OpenACS procedures are.

You shouldn't need to copy the AOLserver Tcl procedures into the OpenACS tcl library. This will only make your life harder because it'll be harder to upgrade either AOLserver or OpenACS if they are mingled together.

The AOLserver Tcl files should be left where they are and there should be a directory under ${AOLserverHOME)/servers for each server you have. AOLserver parses those autematically given that you correctly specified that in your nsd.tcl.

Yes, upgrading in the future had crossed my mind, thanks for keeping me on track.

I have added a line to the nsd.tcl

   ns_param sharedlibrary "/usr/local/AOLserver/modules/tcl"
this does indeed allow me to keep the shared procs where they should be. It was previously looking for:
   /web/server1/parameters/modules/tcl      
see how
   /web/server1/parameters/
should be reading
   /usr/local/AOLserver/

It stikes me that there is something fundamentally wrong with my setup!

1. I have to stray from the sample nsd.tcl file by explicitly specifying the sharedlibrary.

2. I have had a problem with the location of the access.log location. Errors occured because the directory

      /web/server1/parameters/servers/server1/modules/nslog 
did not exist, so I created it and access.log has been writting to there since. Not standard.

See how

      /web/server1/parameters/
should be reading
      /usr/local/AOLserver/
I've double checked the nsd.tcl file since it is here that these paths should be getting initiated. I will try a fresh install, from the begining this afternoon...
You mean you are using the sample nsd.txt (that should be renamed to nsd.tcl) that comes with the OpenACS documentation? In the docs I specified what to do with your AOLserver install if you were using our nsd.txt.

You probably missed somelines or you did not specify the AOLserver home in the nsd.tcl (should be in the beginning of the file). If you have it here, then AOLserver looks for the standard tcl library at $HOME/servers/$servername/modules/tcl.

Many people have been using the included nsd.txt without problems (including me) as long as they follew the documentation. Did you check the AOLserver Simple Install Guide (part of the OpenACS docs)?

I was launching AOLserver and pointing to nsd.tcl which was in the wrong place, this resulted in the home directory to be wrong.

Its all "hunky-dorry" now. Thanks.