====== Development Update ======

So you want to live on the edge and run the latest Synchronet development code? Cool, we do too!

The instructions on this page will perform an //incremental update// from a Synchronet v3.16 or later install to the latest [[:dev:|development]] build of Synchronet.

:!: **Note**:\\
Some of the archive files referenced on this page include sub-directories with important files. When //unzipping// (e.g. on Windows), be sure to include the sub-directories and recreate the same sub-directory hierarchy in the target directories (e.g. do not extract files from ''exec/load/'' into your ''exec'' directory - this is a common mistake).

:!: **Note**:\\
As of February 17th, 2018, Synchronet for Win32 now uses Cryptlib v3.4.4 which requires ''VCRUNTIME140.dll''. You can download the required Microsoft Visual C++ 2015 Redistributable Package **for x86** (''vc_redist.x86.exe'') [[https://www.microsoft.com/en-us/download/details.aspx?id=52685|here]].
===== Step 1 =====
==== Shutdown the BBS ====

Stop all instances of ''sbbs'', ''scfg'', ''sbbsctrl'', ''sbbsntsvcs'', ''jsexec'', ''umonitor'', ''echocfg'', etc. from running.

We want to avoid problems with copying or over-writing files that may be in-use when BBS processes are running.

===== Step 2 =====
==== Backup everything ====

Seriously, you never know what could go wrong. Make a backup of your entire Synchronet [[:dir:|directory tree]] before you begin.

=== Mods ===
If you have any customized modules/scripts in the ''[[dir:exec]]'' directory, move them to your ''[[dir:mods]]'' directory to protect them from over-write during update (and leave them there). You may want to manually merge in any "upstream" changes to benefit from fixes or new features added to those same files. You can use the GitLab [[https://gitlab.synchro.net/sbbs/sbbs|web interface]] to perform comparisons (diff's) between revisions and find out what was added that you might have missed in your modified version of the file(s) from ''exec''.

===== Step 3 =====

==== Executables from Source ====

If you are building Synchronet from [[dev:source]] code (the normal case for *nix installations):

  - Perform the steps detailed [[nix#updating|here]]
  - Continue with [[#step 4]] section of this page

==== Pre-built Executables ====

If you are using pre-built executables (from Windows-installer or archive):

  - Download archived executable files (see table below)
  - Extract the archive into your Synchronet ''[[dir:exec]]'' directory, stripping any sub-directory information and over-writing existing files in the process
  - Continue with [[#step 4]] section of this page

^ Platform      ^ Nightly Build ^ Continuous Build ^
| Windows-i386  | [[https://vert.synchro.net/Synchronet/sbbs_dev.zip|https]] [[http://vert.synchro.net/Synchronet/sbbs_dev.zip|http]] [[ftp://ftp.synchro.net/sbbs_dev.zip|ftp]] | [[https://gitlab.synchro.net/sbbs/sbbs/-/jobs/artifacts/master/download?job=windows-x86 [sbbs]|https]] |
| Linux-x64     | [[https://vert.synchro.net/Synchronet/sbbs_dev.tgz|https]] [[http://vert.synchro.net/Synchronet/sbbs_dev.tgz|http]] [[ftp://ftp.synchro.net/sbbs_dev.tgz|ftp]] | [[https://gitlab.synchro.net/sbbs/sbbs/-/jobs/artifacts/master/download?job=linux-x64 [sbbs]|https]] |
| macOS-armv8   | [[https://vert.synchro.net/Synchronet/sbbs_dev-macos-armv8.tgz|https]] [[http://vert.synchro.net/Synchronet/sbbs_dev-macos-armv8.tgz|http]] [[ftp://ftp.synchro.net/sbbs_dev-macos-armv8.tgz|ftp]] | [[https://gitlab.synchro.net/sbbs/sbbs/-/jobs/artifacts/master/download?job=darwin-aarch64-aarch64 [sbbs]|https]] |
| macOS-x86     | | [[https://gitlab.synchro.net/sbbs/sbbs/-/jobs/artifacts/master/download?job=darwin-x86-x86 [sbbs]|https]] |
| FreeBSD-amd64 | N/A | [[https://gitlab.synchro.net/sbbs/sbbs/-/jobs/artifacts/master/download?job=freebsd-amd64 [sbbs]|https]] |


Now that your "program files" (executable binaries) are updated, you need to update the run-time files next.

===== Step 4 =====
==== Run-time files ====

=== Git Method ===

  - If you performed a [[dev:CVS]] install (e.g. on *nix), see [[howto:Git]] for instructions on updating to the Git repo((The Synchronet CVS Repository is no longer updated)).
  - If you performed a [[dev:Git]] install (e.g. on *nix) and you opted for symbolic links to the ''[[dir:exec]]'' and ''[[dir:text]]'' //directories//((this is reference to the SYMLINK=1 installation option, not the symlinks build target)), the only file you might need to manually update or merge would be the ''[[dir:ctrl]]/[[custom:text.dat]]'' file.
  - If you performed a [[dev:Git]] install (e.g. on *nix) and you did **not** opt for symbolic links, you will need to recursively copy the ''repo/exec'' and ''repo/text'' directories to your ''sbbs/[[dir:exec]]'' and ''sbbs/[[dir:text]]'' directories.
  - Over-write or merge-with your modified ''[[dir:ctrl]]/[[custom:text.dat]]'' file from [[https://gitlab.com/synchronet/sbbs/-/raw/master/ctrl/text.dat|here]]. If you see some corrupted text output from the terminal server or some features don't work as expected, skipping this step could be the cause. If you don't have have or expect to make any edits to your ''text.dat'' file, consider just using a 0-length ''text.dat'' file to always [[custom:text.dat#use defaults]].


=== Non-Git Method ===

**Note**:\\
The ''sbbs_run'' archive file (''[[https://vert.synchro.net/Synchronet/sbbs_run.tgz|sbbs_run.tgz]]'' for *nix, ''[[https://vert.synchro.net/Synchronet/sbbs_run.zip|sbbs_run.zip]]'' for Windows) contains a super-set of the files contained within the archive files referenced below. If you've already downloaded the ''sbbs_run'' archive, then you already have all the necessary files (plus a lot more) and do not need to download the smaller archives referenced below.

  - If you did **not** perform a CVS or Git install, download the daily archive of the ''[[dir:exec]]'' directory and extract into your Synchronet ''exec'' directory, over-writing existing files: [[https://vert.synchro.net/Synchronet/sbbsexec.zip|Windows]] or [[https://vert.synchro.net/Synchronet/sbbsexec.tgz|*nix]] format.
  - Download the daily archive of the ''[[dir:text]]'' directory: [[https://vert.synchro.net/Synchronet/sbbstext.zip|Windows]] or [[https://vert.synchro.net/Synchronet/sbbstext.tgz|*nix]] format
  - Over-write or merge-with your modified ''[[dir:ctrl]]/[[custom:text.dat]]'' file from [[https://gitlab.com/synchronet/sbbs/-/raw/master/ctrl/text.dat|here]]. If you see some corrupted text output from the terminal server or some features don't work as expected, skipping this step could be the cause. If you don't have have or expect to make any edits to your ''text.dat'' file, consider just using a 0-byte ''text.dat'' file to always [[custom:text.dat#use defaults]].
  - If you have **no** customized files in your ''[[dir:text]]'' directory, extract the ''sbbstext'' archive into your Synchronet ''text'' directory, over-writing existing files
  - If you **do** have customized files in your ''[[dir:text]]'' directory, extract the ''sbbstext'' archive into a temporary location and compare files and merge or replace as you see fit. Of particular interest should be the new ''[[module:avatars]]'' sub-directory. Definitely copy that one!

=== Final Step (Git or non-git) === 

  - From a command prompt (e.g. in your Synchronet ''exec'' directory), run: ''jsexec -U update''((the JSexec ''-U'' option is important when upgrading from Synchronet v3.19 or earlier to v3.20 or later)).
  - If upgrading from Synchronet v3.19 or earlier, a second run of ''jsexec update'' may be necessary to get all the updated configuration changes since the first run would just upgrade the configuration files and not reload them.

Now you are ready to re-run the BBS and enjoy the "latest and greatest"!

===== See Also =====
  * [[:install:|install index]]
  * [[:module:Update]] module

{{tag>dev avatar sbbslist jsexec update}}
