Frequently Asked Questions


Contents

  1. What do I do if I get the Error "User file not found"?
  2. My Eggdrop won't run; It just says "Can't find your hostname!"
  3. What the Heck is TCL?
  4. My bot dies and the last entry in the logfile is "Received terminate signal". What does that mean and can I prevent it?
  5. My compile dies at the last minute with "LD fatal signal 11"!
  6. Someone else set up a bot I don't like. Are there any backdoors I can use to take their bot down?
  7. What are modules?
  8. Can I compile Eggdrop without dynamic modules?
    1. Do I still need to "loadmodule modules"?
  9. Where can I get a precompiled Eggdrop for my computer?
  10. I get "Makefile:3 : invalid operator" of some such thing When I try to "make"
  11. When I "tclsh scripts/weed <userfile> c" It barfs chunks at me and dies.
  12. I get "ld-elf.so.1: Shared object "libtcl80.so.1" not found" or "eggdrop: error in loading shared libraries / libtcl8.1.so: cannot open shared object file: No such file or directory" when I try to start my bot.
  13. I get a whole pile of "unresolved symbol 'Tcl_AppendResult'" (or some other symbol) when I try to load a module.

1. What do I do if I get the error "User file not found"?

2. My Eggdrop won't run; it just says "can't find your hostname!"

Your machine is set up strangely, and Eggdrop can't figure out its network hostname. You can get around this by setting an environment variable called HOSTNAME.

In sh or ksh:
$ HOSTNAME=myhost.domain.edu
$ export HOSTNAME

In csh or tcsh:
% setenv HOSTNAME myhost.domain.edu

It should work after that. You may want to bug your system administrator to set up her /etc/hosts file correctly, or add those above commands to your '.login' file (sh or ksh: '.profile').

3. What the heck is Tcl?

Tcl is a scripting language written by John Ousterhout. It's much better than most "in-built" script languages (like the one in ircII) and is meant to be linked with anything needing a script language. So I linked it with Eggdrop. The file "tcl-commands.doc" in the Eggdrop directory contains a list of the commands added to Tcl by Eggdrop. There are also several example scripts in the scripts/ directory, and there are gobs of scripts floating around on the ftp sites if you like working by example (which is typically the best way).

4. My bot dies and the last entry in the logfile is "received terminate signal". What does that mean and can i prevent it?

There's nothing you can do to prevent it. It means the system administrator is killing the Eggdrop process. Most of the time, it's an automatic thing that happens when the system is being rebooted, so it's harmless. If you have a crontab running, the bot will get restarted when the system is back online. Occasionally the system administrator will kill the bot manually -- for example, if he/she doesn't want bots running on the system.

5. My compile dies at the last minute with "ld fatal signal 11"!

This happens on Linux machines that have recently been converted to ELF by upgrading to Slackware 3.0. Apparently Slackware 3.0 comes with a non-ELF (a.out) Tcl library, and the compiler doesn't handle that well. (It should give you an error; instead it barfs.) Fixing it is tricky because even if you recompile libtcl.a, the linker will most likely find the "bad" one first, and your work will be in vain.

Here's a fix that's been floating around on the Eggdrop list:

  1. Recompile 'libtcl.a' for yourself, to make sure an ELF librar is created.
  2. Copy it into your eggdrop/src directory, naming it 'libtcl2.a'.
  3. Edit the Makefile and change the line that says '-L/usr/lib -ltcl' to '-L. -ltcl2'.
  4. Recompile Eggdrop.

Also send hate-mail to the Slackware guy telling him to stop f***ing up the libraries. He seemed to assume that everyone would still want to compile old-style (a.out) binaries.

6. Someone else set up a bot I don't like. Are there any backdoors I can use to take their bot down?

No, there have never been any backdoors and there never will be, so please stop asking. Every once in a while, someone finds a way to exploit a bug in Eggdrop, but we fix these bugs as soon as we find out about them. If you want to bring down someone else's bot, you will not have my/our help.

7. What are modules?

Modules are a way of adding extra C code from the bot, much like Tcl scripts, without requiring the bot recompiling, see doc/MODULES for more info.

8. Can I compile eggdrop without dynamic modules?

Yes, you can, if ./configure detects that your system CAN'T run modules it will setup 'make' to link the modules in statically for you, you can also choose this option if you can do dynamic modules by typing 'make static'. You can also try to compile dynamic modules on a static-only system by typing 'make eggdrop'.

8a. Do I still need to 'loadmodule modules'?

YES, when you compile statically, all the modules are linked into the main executable *but* they are not enabled until you use loadmodule to enable then, hence you get nearly the same functionality with static modules as dynamic modules.

9. Where can i get a precompiled eggdrop for my computer?

It is HIGHLY recommended AGAINST using precompiled Eggdrops from untrusted sources. Eggdrop has been a regular target for hacking and crashing. Distribution of precompiled (binary) versions of Eggdrop are the easiest way of hackers to provide you with the easiest (and most dangerous) way of gaining access to not only your bot, but to your computer account directly. Don't advertise your precompiled Eggdrop binary sites on the Eggdrop list either =P

10. I get 'Makefile:3 :invalid operator' or some-such-thing when I try to 'make'

Try 'gmake'

11. When I 'tclsh scripts/weed <userfile> c' it barfs chunks at me and dies :(

UPGRADE YOUR TCL, you are probably using Tcl 7.5 or earlier, some of the commands in weed require tcl7.6 to run, so either upgrade it, or removing the offending lines from you userfile (those starting with '.' generally) and accept the loss of that data.

12. I get "ld-elf.so.1: Shared object "libtcl80.so.1" not found" or "eggdrop: error in loading shared libraries / libtcl8.1.so: cannot open shared object file: No such file or directory" when I try to start my bot.

'./configure' is looking in the wrong place for Tcl; it looks like it compiled with one version of Tcl and tries to load another. Maybe your sysadmin upgraded Tcl and didn't tell you. In that case, you should just need to recompile your bot.

Or maybe when upgrading he didn't clean the old version of Tcl, and './configure' is looking for the files in the wrong places, or trying to use different versions of tcl.h and libtcl*. Smack your admin and have him install Tcl properly ;) Or try to:

./configure --with-tcllib=<path-to-tcl-lib> --with-tclinc=<path-to-tcl-inc>

Tell configure where to look for the Tcl files.

Try looking for libtcl by:
ls /usr/lib/libtcl*
ls /usr/local/lib/libtcl*

Try looking for tcl.h by:
ls /usr/include/*/tcl.h
ls /usr/local/include/*/tcl.h

If everything else fails, try to install Tcl to your home dir ;) (Suggested by dw@Undernet, dw@lixom.nu)

13. I get a whole pile of "Unresolved symbol 'Tcl_AppendResult'" (or some other symbol) when I try to load a modules.

Possibility A: see 12.

Possibility B:

Some of the standard libraries have been compiled for static linking only on your machine, you have 3 options:

  1. If it's your own machine, recompile TCL using dynamic linking by using './configure --enable-shared' when you configure TCL (not the bot) and then remake, & reinstall
  2. If it's not you machine, you make have to resort to 'make static' and 'make DEST="path" install' to make and install your bot.
  3. If you are of a more aggressive sense of mind, go beat the stuffing out of your admin for have lame static libraries :)

© 1997 Robey Pointer
© 1999,2000 Eggheads