: Hi, Guys:
: In my company, there is a central machine which has all kind of app/scripts
: installed on /usr/local , and this machine export its /usr/local directory to
: all other machines in house, so that all other machine can nfs mount this
: directory and can share the app/scripts on this central machine.
: We have some scripts writen in Perl/tk which calls the Perl in
: /usr/local/bin. Those scripts ran OK several weeks ago. However, recently, we
: cutover the central machine from Tokenring to ethernet, and now this central
: machine is in the same subnet as other machine nfs mounted the usr/local.
: From then on, those Perl/Tk script no longer works, even though other
: app/scripts in /usr/local/bin still works fine. Everytime when I try to run a
: perl script, it gives out following message:
: Can't load '/usr/local/lib/perl5/aix/auto/Tk/Tk.so' for module Tk: dlopen:
: /usr/local/lib/perl5/aix/auto/Tk/Tk.so: No such file or directory at
: /usr/local/lib/perl5/DynaLoader.pm line 450.
: at /usr/local/lib/perl5/Tk.pm line 31
: BEGIN failed--compilation aborted at test.pl line 2.
: The content of test.pl has just two line:
: #!/usr/local/bin/perl -w
: use Tk;
: I heard that there's some dynamic binding /NFS problem of Perl modules . IS
: there any solution to this problem??
Line 31 of Tk.pm is probably where bootstrap is called. Hmmm.
DynaLoader is being called successfully, and that is in the
same directory structure below /usr/local, so it may not
be a problem with /etc/exports.
NFS just uses RPC to execute/read/write files on the remote system.
If there were a problem with dlopen and perl over NFS, wouldn't that
same problem affect C programs?
Some obvious questions: can you run the perl program on the
NFS server? Does the Tk shared object exist? What are it's
permissions? As which user are you trying to run the script
on the NFS clients? Can you cd into /usr/local/lib/perl5/aix/auto/Tk
on one of the NFS clients? (The permissions questions are a bit
of a reach, as dlopen() calls load(), which is capable of returning
EACCESS.)
Anyway, this is an interesting problem. Good luck with it.