Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
faq:nix [2012/03/14 21:03] – [DOS] Link howto-doors.txt into archive.org... someone should likely make a local copy somewhere. deucefaq:nix [2023/02/08 23:50] (current) – [Maximum Open Files] Replace pgrep with pidof digital man
Line 15: Line 15:
   * [[#X Windows|Does Synchronet for Unix require X Windows]]?   * [[#X Windows|Does Synchronet for Unix require X Windows]]?
   * [[#GUI|Is there a graphic user interface for Unix sysops]]?   * [[#GUI|Is there a graphic user interface for Unix sysops]]?
-  * [[#Compiler|Can use a compiler other than GCC]]?+  * [[#Compiler|Can use a compiler other than GCC]]?
   * [[#SELinux|What does nothing work with SELinux]]?   * [[#SELinux|What does nothing work with SELinux]]?
   * [[#Disk space|How much disk space is required]]?    * [[#Disk space|How much disk space is required]]? 
-  * [[#TermType|What is an ''unknown terminal'' error indicate]]?+  * [[#Terminal Type|What does an ''unknown terminal'' error indicate]]? 
 +  * [[#tempnam warning|Why do I get a warning about use of ''tempnam'' when compiling]]? 
 +  * [[#SDL Errors|How do I work around SDL 1.2 run-time errors]]? 
 +  * [[#Recycle|Why does the recycling of servers/services not work]]? 
 +  * [[#Maximum_Open_Files|How do I resolve ERROR 24 (Too many open files)]]?
      
 ===== Flavors ===== ===== Flavors =====
Line 116: Line 120:
 programs. programs.
  
-There's a patch for "building-in" DOSEMU support with Synchronet for Linux: +For running external DOS programs on Linux using DOSEMU, see [[howto:dosemu]] for details.
-http://www.icequake.net/bbs/syncmods/index.html and +
-(mirror) http://www.synchro.net/docs/linux-dosemu.html +
- +
-and a FAQ for using DOSEMU with Synchronet for Linux (without a patch): +
-http://web.archive.org/web/20071117211722/http://www.exeonline.com/bbs/howto-doors.txt +
 ===== Doors ===== ===== Doors =====
  
Line 156: Line 154:
 Yes, currently Synchronet has successfully been built with GCC, ICC Yes, currently Synchronet has successfully been built with GCC, ICC
 (The Intel C Compiler), and Clang/LLVM.  To specify an alternate compiler, add (The Intel C Compiler), and Clang/LLVM.  To specify an alternate compiler, add
-''DONT_CLOBBER_CC=1 CC=icc CXX=icpc'' to the gmake command lines where +''CC=icc CXX=icpc'' to the gmake command lines where icc is the C compiler name 
-icc is the C compiler name and icpc is the C++ compiler name.  If you get +and icpc is the C++ compiler name.  If you get errors during the build (not 
-errors during the build (not warnings) please submit a bug report.  If you +warnings) please submit a bug report.  If you are using a commercial compiler 
-are using a commercial compiler other than ICC, we will probably be unable +other than ICC, we will probably be unable to help you without a copy of the 
-to help you without a copy of the compiler.+compiler.
  
 ===== SELinux ===== ===== SELinux =====
Line 175: Line 173:
  
 **Answer:**\\    **Answer:**\\   
-A fresh install (as of Feb-2009) requires about 70MBytes+A fresh install (as of Mar-2020from source code, requires about 500MBytes of space
-Much of the space consumed is in the form of intermediate build files which +Much of the space consumed is in the form of intermediate build files which may be removed after the build is complete if space is a concern.
-may be removed after the build is complete if space is a concern.+
  
  
Line 189: Line 186:
 The default value of the ''ExternalTermANSI'' key in your ''[[:config:sbbs.ini]]'' file is ''pc3'', and Synchronet uses the value of this key to set the ''TERM'' environment variable for child processes (external programs). If your *nix installation has a terminal type/capability with this name, then this terminal type might work for you (and your users) but there is a better option: to use the Synchronet ''ansi-bbs'' terminal capabilities set (created by [[:person:Deuce]]). The configuration/installation instructions for the Synchronet ''ansi-bbs'' terminal capabilities set are covered in [[:config:nix#termcap]]. The default value of the ''ExternalTermANSI'' key in your ''[[:config:sbbs.ini]]'' file is ''pc3'', and Synchronet uses the value of this key to set the ''TERM'' environment variable for child processes (external programs). If your *nix installation has a terminal type/capability with this name, then this terminal type might work for you (and your users) but there is a better option: to use the Synchronet ''ansi-bbs'' terminal capabilities set (created by [[:person:Deuce]]). The configuration/installation instructions for the Synchronet ''ansi-bbs'' terminal capabilities set are covered in [[:config:nix#termcap]].
  
 +===== tempnam warning =====
 +**Question:**\\
 +Why do I get the GCC compilation warning: <code>the use of `tempnam' is dangerous, better use `mkstemp'</code> ?
 +
 +**Answer:**\\
 +This is not an error but a harmless warning. You can safely ignore it.
 +
 +To elaborate, [[util:SBBSecho]] uses ''tempnam'' for a specific purpose, which ''mkstemp'' does not do. Additionally ''mkstemp'' is not available in all the C libraries for all the platforms for which Synchronet is built. The //dangers// of ''tempnam'' do not apply to SBBSecho's use of the function.
 +
 +===== SDL errors =====
 +**Question:**\\
 +How do I work around SDL_main errors (e.g. ''No protocol specified'' followed by a ''segmentation fault'') that prevent Synchronet applications (e.g. [[util:SCFG]], [[util:EchoCFG]], [[monitor:umonitor]], etc.) built with SDL 1.2 from running?
 +<code>
 +$ /sbbs/exec/scfg
 +No protocol specified
 +No protocol specified
 +No protocol specified
 +Segmentation fault (core dumped)
 +</code>
 +
 +**Answer:**\\
 +Double check that you can run X applications (e.g. ''xterm'', ''xeyes'') and if you cannot, you may need to grant X access to other user accounts with a command like:
 +  xhost +SI:localuser:<username>
 +executed before switching to another user account (e.g. with ''su'' or ''sudo'').
 +
 +Work-arounds:
 +  - Clean re-build all of Synchronet without SDL support (include ''WITHOUT_SDL=1'' on the ''make'' command-lines or in your ''localdefs.mk'' file)
 +  - Set the ''SDL_VIDEODRIVER'' environment variable to the value of ''dummy'' (e.g. ''EXPORT SDL_VIDEODRIVER=dummy'') before executing the program
 +
 +===== Recycle =====
 +**Question:**\\
 +Why do my servers/services fail to recycle when I set the node-recycle flag (e.g. saving changes in [[util:SCFG]]) or when touching recycle [[config:semfiles]]?
 +
 +**Answer:**\\
 +Servers will not recycle while they are in-use.
 +
 +<file>
 +$ node rerun
 +
 +Synchronet Node Display/Control Utility v1.34
 +
 +Node  1: User #1 reading messages via telnet (M) [R]
 +Node  2: Waiting for connection [R]
 +Node  3: Waiting for connection [R]
 +Node  4: Waiting for connection [R]
 +Node  5: Waiting for connection [R]
 +Node  6: Waiting for connection [R]
 +Node  7: Waiting for connection [R]
 +Node  8: Waiting for connection [R]
 +</file>
 +
 +**Question:**\\
 +What do the following warning-level log messages indicate?
 +  Disabling Terminal Server recycle support
 +  Disabling FTP Server recycle support
 +  Disabling Web Server recycle support
 +  Disabling Mail Server recycle support
 +  Disabling Services recycle support
 +  
 +**Answer:**\\
 +Recycle support can be disabled manually be setting the ''NO_RECYCLE'' ''Options'' flag in one or more server sections of your ''[[config:sbbs.ini]]'' file.\\
 +The log warning messages above ("Disabling ... recycle support") indicate that the BBS automatically set the ''NO_RECYCLE'' option flag because it was:
 +  - Configured to bind-to/listen-on TCP ports < 1024 (the so-called "reserved" ports)
 +  - **and** the BBS was configured to change the current user-id in the ''[[config:sbbs.ini#UNIX]]'' section of ''[[config:sbbs.ini]]''
 +  - **and** the BBS could not dynamically set the bind capabilities using the Linux "Capabilities" syscall interface.
 +
 +The solution is to remove the ''User'' and ''Group'' settings from the ''[[config:sbbs.ini#UNIX]]'' section of ''[[config:sbbs.ini]]'' and then follow the instructions [[howto:Linux_non-root|here]] for running the BBS on Linux as a non-root user (if you haven't already).
 +
 +===== Maximum Open Files =====
 +**Question:**\\
 +Why am I seeing ''ERROR 24 (Too many open files)'' failures in my error log?
 +
 +**Answer:**\\
 +Versions of Synchronet prior to v3.19c contained a bug with the JavaScript //User// class that could cause a leak of open file descriptors (concurrent opens of the ''[[dir:data]]/user.dat'' file that were never closed). This bug, combined with a long-running //webv4// ''events.ssjs'' issue that could cause a lot of instances of the //User// class to linger in the JavaScript heap (since fixed with a call to ''js.gc()''), could cause "Too many open files" errors to occur.
 +
 +**Answer:**\\
 +You need to increase your maximum number of open files.
 +\\ \\
 +**Checking current open file limits**\\
 +The most reliable way to determine your open file limit is to login to your BBS as a sysop, run the '';SHELL'' [[module:str_cmds|string command]], and at the OS command line, issue the commands below. The hard limit is the systemwide limit, and the soft limit is one that a user can raise (up to the hard limit).
 +
 +To view the soft limit: ''ulimit -Sn''\\
 +To view the hard limit: ''ulimit -Hn''
 +
 +Another method that works on Linux is to search for line beginning with "Max open files" in the file ''/proc/$(pidof sbbs)/limits'':
 +  $ sudo grep "Max open files" /proc/$(pidof sbbs)/limits
 +  Max open files            10000                10000                files     
 +
 +**If you start Synchronet with systemd**\\
 +If you're using [[howto:systemd|systemd]] to start sbbs, edit your service file (usually ''sbbs.service'') by adding the following line in the ''[Service]'' section:
 +
 +<file sbbs.service>
 +LimitNOFILE=10000
 +</file>
 +
 +After adding the line, reload the service file from the command line using ''systemctl daemon-reload''. Finally, restart Synchronet.
 +
 +**If you start Synchronet manually or with a shell script**\\
 +If you start sbbs with a shell script, manually from the command line, or some other similar method, edit ''/etc/security/limits.conf'' to add the lines below.
 +
 +To raise the soft limit for your Synchronet user, add this line:
 +
 +<file limits.conf>
 +yourBBSuser     soft     nofile     10000
 +</file>
 +
 +
 +      
 ===== See Also ===== ===== See Also =====
   * [[:faq:|Frequently Asked Questions]]   * [[:faq:|Frequently Asked Questions]]