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
install:nix [2023/01/26 17:18] – [Notes] Upgraded from Debian 9 long ago digital maninstall:nix [2024/10/11 22:14] (current) – The installation and re-build make commands are now very different to avoid confusion and mistake that leads to lost files and weeping sysops :-P digital man
Line 1: Line 1:
 ====== UNIX Installation ====== ====== UNIX Installation ======
  
-You will likely need to build Synchronet from [[dev:source]] code for your Unix/Linux distribution, version, and platform architecture.+Build Synchronet from [[dev:source]] code for your Unix/Linux OS distribution, version, and platform architecture.
  
-Before attempting to install/build Synchronet, insure that the [[install:nix:prerequisites]] are installed.+:!: **Before attempting to build Synchronet, insure that the system [[install:nix:prerequisites]] are already installed.**
  
-You will to use a *nix terminal and command shell (e.g. sh/bash) to install and configure Synchronet.+You will need to use a *nix terminal and command shell (e.g. sh/bash) to install and configure Synchronet.
  
 ===== Run-as User ===== ===== Run-as User =====
Line 11: Line 11:
 It is recommended that you install Synchronet while logged-in with the user account that Synchronet will be run-as. If you install Synchronet with one user account and then later run with another (non-root) user account, you could encounter permissions errors. It is recommended that you install Synchronet while logged-in with the user account that Synchronet will be run-as. If you install Synchronet with one user account and then later run with another (non-root) user account, you could encounter permissions errors.
  
-**Running the BBS servers/services (''sbbs'') as the ''root'' user is not recommended**.+:!: **Running the BBS servers/services (''sbbs'') as the system'''root'' user is not recommended**.
  
 Use ''adduser'' (or "''sudo adduser''" if necessary) to create the //run-as// user account (e.g. ''sbbs''). Use ''adduser'' (or "''sudo adduser''" if necessary) to create the //run-as// user account (e.g. ''sbbs'').
Line 17: Line 17:
  
 On Linux, it's very convenient for the run-as user to have ''sudo'' access. To achieve this, as a sudo/root user: On Linux, it's very convenient for the run-as user to have ''sudo'' access. To achieve this, as a sudo/root user:
-  $ sudo usermod -G sudo sbbs+  $ sudo adduser sbbs sudo
   $ groups sbbs   $ groups sbbs
   sbbs : sbbs sudo ...   sbbs : sbbs sudo ...
-Belonging to the ''sudo'' group will allow the you to perform system administration functions while logged-in as the BBS //run-as// user through the use of the ''sudo'' command.+Belonging to the ''sudo'' group will allow you to perform system administration functions while logged-in as the BBS //run-as// user through the use of the ''sudo'' command.
  
 Use the ''su'' command to switch the current user to the //run-as// user (the "''-''" specifies to //login// as that user, e.g. setting the cwd to that user's home directory): Use the ''su'' command to switch the current user to the //run-as// user (the "''-''" specifies to //login// as that user, e.g. setting the cwd to that user's home directory):
Line 64: Line 64:
 Choose a build method (using [[dev:Git]] or Tarball)((The Git install method is preferred/recommended)): Choose a build method (using [[dev:Git]] or Tarball)((The Git install method is preferred/recommended)):
  
-==== Using Git ====+==== Git Build Method ====
  
 Quick installation from [[dev:Git]] (requires 100+MB of disk space): Quick installation from [[dev:Git]] (requires 100+MB of disk space):
  
-  * ''$ [[install:nix:fetch makefile|wget]] [[https://gitlab.synchro.net/main/sbbs/-/raw/master/install/GNUmakefile]]''+  * ''$ [[install:nix:fetch makefile|wget]] [[https://gitlab.synchro.net/main/sbbs/-/raw/master/install/install-sbbs.mk]]''
  
 To get and build the latest code: To get and build the latest code:
  
-  * ''$ [[install:nix:make|make]] install SYMLINK=1''+  * ''$ [[install:nix:make|make]] -f install-sbbs.mk SYMLINK=1''
  
 On Linux, it's normal that the user's password may be prompted for near the end of the build process, as required to invoke the ''sudo setcap'' command to enable low-port-binding capability on the Synchronet ''sbbs'' executable. On Linux, it's normal that the user's password may be prompted for near the end of the build process, as required to invoke the ''sudo setcap'' command to enable low-port-binding capability on the Synchronet ''sbbs'' executable.
Line 78: Line 78:
 If building on a Linux system as a user without ''sudo'' access, pass the ''NOCAP=1'' option to disable this function((there are other methods of enabling low-port binding on Linux systems)): If building on a Linux system as a user without ''sudo'' access, pass the ''NOCAP=1'' option to disable this function((there are other methods of enabling low-port binding on Linux systems)):
  
-  * ''$ [[install:nix:make|make]] install SYMLINK=1 NOCAP=1''+  * ''$ [[install:nix:make|make]] -f install-sbbs.mk SYMLINK=1 NOCAP=1''
  
 Or, if you want to build a stable release from Git, specify a valid release [[dev:tags|tag]] on the make command-line (e.g. ''sbbs319b''): Or, if you want to build a stable release from Git, specify a valid release [[dev:tags|tag]] on the make command-line (e.g. ''sbbs319b''):
-  * ''$ [[install:nix:make|make]] install SYMLINK=1 **TAG=sbbs3xxx**''+  * ''$ [[install:nix:make|make]] -f install-sbbs.mk SYMLINK=1 **TAG=sbbs3xxx**''
   * **NOTE**: this does not work with release tags earlier than ''sbbs319b'', use the Tarball install method instead for those.   * **NOTE**: this does not work with release tags earlier than ''sbbs319b'', use the Tarball install method instead for those.
  
Line 87: Line 87:
   * These commands will make and install a //RELEASE// build of the software. To make and install a //DEBUG// build instead, pass ''DEBUG=1'' on the ''make'' command-lines.   * These commands will make and install a //RELEASE// build of the software. To make and install a //DEBUG// build instead, pass ''DEBUG=1'' on the ''make'' command-lines.
   * We don't support parallel builds (e.g. ''make -j'') - so don't do that.   * We don't support parallel builds (e.g. ''make -j'') - so don't do that.
-  * On //Linux// systems, your user password will be prompted for to execute the ''sudo setcap'' command during install. If this is a problem, you can include ''NOCAP=1'' on the ''make'' command-line to bypass that step. +  * Mirrors of the ''install/install-sbbs.mk'' are available at 
-  * Mirrors of the ''install/GNUmakefile'' are available at +      * [[https://github.com/SynchronetBBS/sbbs/raw/master/install/install-sbbs.mk]] 
-      * [[https://github.com/SynchronetBBS/sbbs/raw/master/install/GNUmakefile]] +      * [[https://gitlab.com/SynchronetBBS/sbbs/-/raw/master/install/install-sbbs.mk]]
-      * [[https://gitlab.com/SynchronetBBS/sbbs/-/raw/master/install/GNUmakefile]]+
  
  
Line 96: Line 95:
 If you installed with the ''SYMLINK=1'' option, the resulting installation directory tree should look like this: If you installed with the ''SYMLINK=1'' option, the resulting installation directory tree should look like this:
 <code> <code>
-drwxrwx---  3 rswindell sbbs  4096 Sep 30 18:47 ctrl +drwxr-xr-x 1 sbbs sbbs  2418 Jan 26 23:24 ctrl 
-lrwxrwxrwx  rswindell sbbs    30 Sep 30 18:47 docs -> /home/rswindell/sbbs/repo/docs +lrwxrwxrwx 1 sbbs sbbs    25 Jan 26 21:03 docs -> /home/sbbs/sbbs/repo/docs 
-lrwxrwxrwx  rswindell sbbs    30 Sep 30 18:47 exec -> /home/rswindell/sbbs/repo/exec +lrwxrwxrwx 1 sbbs sbbs    25 Jan 26 21:03 exec -> /home/sbbs/sbbs/repo/exec 
--rw-rw----  rswindell sbbs 10641 Sep 30 19:04 GNUmakefile +-rw-r--r-- 1 sbbs sbbs 11001 Jan 26 20:51 install-sbbs.mk 
-drwxrwx---  2 rswindell sbbs  4096 Sep 30 18:47 node1 +drwxr-xr-x 1 sbbs sbbs   116 Jan 26 21:07 node1 
-drwxrwx--- 14 rswindell sbbs  4096 Sep 30 18:37 repo +drwxr-xr-x 1 sbbs sbbs    48 Jan 26 21:06 node2 
-lrwxrwxrwx  rswindell sbbs    30 Sep 30 18:47 text -> /home/rswindell/sbbs/repo/text +drwxr-xr-x 1 sbbs sbbs    48 Jan 26 21:06 node3 
-lrwxrwxrwx  rswindell sbbs    29 Sep 30 18:47 web -> /home/rswindell/sbbs/repo/web +drwxr-xr-x 1 sbbs sbbs    48 Jan 26 21:06 node4 
-lrwxrwxrwx  rswindell sbbs    32 Sep 30 18:58 webv4 -> /home/rswindell/sbbs/repo/webv4/ +drwxr-xr-x 1 sbbs sbbs   240 Jan 26 20:58 repo 
-lrwxrwxrwx  rswindell sbbs    30 Sep 30 18:47 xtrn -> /home/rswindell/sbbs/repo/xtrn+lrwxrwxrwx 1 sbbs sbbs    25 Jan 26 21:03 text -> /home/sbbs/sbbs/repo/text 
 +lrwxrwxrwx 1 sbbs sbbs    24 Jan 26 21:03 web -> /home/sbbs/sbbs/repo/web 
 +lrwxrwxrwx 1 sbbs sbbs    26 Jan 26 21:03 webv4 -> /home/sbbs/sbbs/repo/webv4 
 +lrwxrwxrwx 1 sbbs sbbs    25 Jan 26 21:03 xtrn -> /home/sbbs/sbbs/repo/xtrn
 </code> </code>
  
-Due to the symbolic directory links (represented with ''->'' arrows above), subsequent ''[[howto:git]] pull'' operations (in the ''sbbs/repo'' directory) will automatically update the ''docs'', ''[[dir:exec]]'', ''[[dir:text]]'', ''[[dir:web]]'', ''webv4'', and ''[[dir:xtrn]]'' directories. This means that any //local changes// (configurations or customizations) of files in **those** directories may need to be merged with any upstream changes later. Most configuration files are located in the ''[[dir:ctrl]]'' directory so they are automatically excluded from any update/merge issues.+Due to the symbolic directory links (represented with ''->'' arrows above), subsequent ''[[howto:git]] pull'' operations (in the ''sbbs/repo'' directory) will automatically update the ''docs'', ''[[dir:exec]]'', ''[[dir:text]]'', ''[[dir:web]]'', ''[[dir:webv4]]'', and ''[[dir:xtrn]]'' directories. This means that any //local changes// (configurations or customizations) of files in **those** directories may need to be merged with any upstream changes later. Most configuration files are located in the ''[[dir:ctrl]]'' directory so they are automatically excluded from any update/merge issues.
  
 **Notes**: **Notes**:
-  * You can safely remove the installation ''GNUmakefile'' once successfully installed; it has served its purpose.+  * You can safely remove the installation ''install-sbbs.mk'' once successfully installed; it has served its purpose.
  
-==== Tarball ====+==== Tarball Build Method ====
 Alternatively, if you don't have a working Git client or are low on available disk space, you can use the following steps to install the latest nightly development build: Alternatively, if you don't have a working Git client or are low on available disk space, you can use the following steps to install the latest nightly development build:
  
Line 120: Line 122:
   - ''$ tar -xzf sbbs_src.tgz''   - ''$ tar -xzf sbbs_src.tgz''
   - ''$ tar -xzf sbbs_run.tgz''   - ''$ tar -xzf sbbs_run.tgz''
-  - ''$ echo RELEASE=1 > src/build/localdefs.mk'' 
   - ''$ cd src/sbbs3''   - ''$ cd src/sbbs3''
   - ''$ SBBSEXEC=/sbbs/exec [[install:nix:make|make]] symlinks''((include the 'setcap' target if you intend to use Linux-capabilities to bind low ports))   - ''$ SBBSEXEC=/sbbs/exec [[install:nix:make|make]] symlinks''((include the 'setcap' target if you intend to use Linux-capabilities to bind low ports))
Line 169: Line 170:
     error: unknown type name 'wint_t'     error: unknown type name 'wint_t'
  
-  * The following error indicates the Synchronet libraries (shared objects) are not in your system's library search path or in the directory from which ''sbbs'' was built. Set the ''LD_LIBRARY_PATH'' [[config:env|environment variable]] to point to your Synchronet ''[[dir:exec]]'' directory to resolve:+  * The following error indicates the Synchronet libraries (shared objects) are not in your system's library search path or in the directory from which ''sbbs'' was built. Set the ''LD_LIBRARY_PATH'' [[config:env|environment variable]] to point to your Synchronet ''[[dir:exec]]'' directory or add that directory to your ''/etc/ld.so.conf'' file (and run ''ldconfig''to resolve:
  
     sbbs: error while loading shared libraries: libsbbs.so: cannot open shared object file: No such file or directory     sbbs: error while loading shared libraries: libsbbs.so: cannot open shared object file: No such file or directory
Line 307: Line 308:
      
      
-===== Terminal Capabilities ===== 
- 
-As you may have noticed by now, most telnet clients designed for use with 
-ANSI BBSes do not display full-screen Unix programs correctly. Included with 
-Synchronet is a pair of terminal capability definition files that enable you 
-to run native full-screen Unix programs and have the output displayed correctly 
-in a standard ANSI-BBS terminal.  These files are ''termcap'' and ''terminfo'', 
-located in your Synchronet install directory.  Your system will use one or the 
-other, and it won't hurt to install both.  You will need to be logged in as 
-root to install the files. 
- 
-==== Installing the terminfo file ==== 
- 
-1) Get the Synchronet ANSI-BBS terminfo file from 
-[[https://gitlab.synchro.net/main/sbbs/-/raw/master/install/terminfo|here]]. 
- 
-2) Enter the command: 
-  # tic terminfo 
- 
-==== Installing the termcap file ==== 
- 
-1) Get the Synchronet ANSI-BBS termcap file from 
-[[https://gitlab.synchro.net/main/sbbs/-/raw/master/install/termcap|here]]. 
- 
-2) Enter the command: 
-  # cat termcap >> /etc/termcap 
- 
-3) **FreeBSD Only** run the command: 
-  # cap_mkdb -f /usr/share/misc/termcap /etc/termcap 
- 
-Once the terminal capability files are installed, edit the ''ExternalTermANSI'' 
-value in the ''[BBS]'' section of your ''[[:config:sbbs.ini]]'' file to read: 
-    ExternalTermANSI=ansi-bbs 
- 
-Note: The default value of the ''ExternalTermANSI'' ''[[:config:sbbs.ini]]'' key is ''pc3''. If you get an error ''Unknown terminal: pc3'' from external programs, it means that this key value has not been set to a valid terminal type. 
- 
-Note: Once again, many Linux distros do not have a termcap.  This is fine. 
-You do NOT need to install the termcap-compat package.  If termcap 
-isn't installed, it means nothing uses it.  Only if there is a 
-termcap do you need to add the ''ansi-bbs'' termcap definition. 
- 
 ===== A note on SysOp paging ===== ===== A note on SysOp paging =====
  
Line 425: Line 385:
   * [[:monitor:gtkmonitor]]   * [[:monitor:gtkmonitor]]
   * [[:install:nix:Prerequisites]]   * [[:install:nix:Prerequisites]]
 +  * [[:install:nix:mail|Installing Synchronet as your UNIX mail system]]
 +  * [[:install:nix:termcaps|Installing ANSI-BBS Terminal Capabilities]]
   * [[:howto:freebsd_non-root|How to run sbbs for FreeBSD as a non-root user]]   * [[:howto:freebsd_non-root|How to run sbbs for FreeBSD as a non-root user]]
   * [[:howto:linux_non-root|How to run sbbs for Linux as a non-root user]]   * [[:howto:linux_non-root|How to run sbbs for Linux as a non-root user]]