Hi, my interpretation is that this is primarily a deployment question, not a NaviServer-specific one.
I would avoid running "make install" directly into the installation tree used by a running production server. Even if the running process already has many files loaded, there can still be files loaded later at runtime (Tcl files, modules, configuration includes, certificates, etc.). An in-place install over the active tree can therefore lead to hard-to-debug mixed-version states. A common approach is to separate the NaviServer software installation from the local server instance data. use versioned install-prefixes and a generic symlink sich as: /usr/local/ns-5.0.4/ /usr/local/ns-5.1.0/ /usr/local/ns -> /usr/local/ns-5.1.0 It also makes sense to configuration, logs, certificates, application files, etc. outside of that tree, e.g. below /etc, /var/lib, and /var/log, or in an application-specific directory. Then a new NaviServer version can be built and installed into a fresh versioned prefix, tested, and activated by switching the symlink and restarting the service. Rollback is equally simple: switch the symlink back and restart. I would not generally rely on configuring with one prefix and later moving the installation tree to another location, unless this has been tested for the concrete setup. It is safer to configure with the final versioned prefix directly. For our public sites we use Docker images, which solve the same problem in another way: the NaviServer/OpenACS software tree is part of an immutable image, while configuration and persistent data are mounted or provided separately. This makes it easy to test different versions and avoids overwriting the running installation. So the short recommendation would be: do not mix build/install/test and production runtime in the same directory. Use either containers, versioned install prefixes plus a symlink, or separate machines/VMs for testing and production. Just my 2cents -g > On 28.04.2026, at 12:12, [email protected] wrote: > > Hello list, > > I started my naviserver experience with 5.0.0, and lateron updated > to 5.0.4, but this update wasn't exactly "pleasant" - mostly, just > because I didn't know, how to do it the right way. I ended up moving > away the old one, re-installing the old version again, just to see > the diff, to find my own "works", then transferring those to the > new version's install dir... > > When building naviserver from source, I have to pass the "prefix" > already to configure, and a subsequent "make install" would put > it exactly there... except that at the time of compilation the old > one is still running there. Is that prefix path actually embedded > in files (other than sample-configs), or could I just configure it > with an alternative prefix, and finally move the install-dir to > the real place? > > I hope to find some "best practise" guidelines that would guarantee > that all local parts (nsd.tcl, modules/tcl, certificates(just playing), > logs) of running version are transferred to new install, or just not > overwritten in "make install". > > (Looking forward to 5.1, as I'd have good use for the ns_json...) > > > _______________________________________________ > naviserver-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/naviserver-devel _______________________________________________ naviserver-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/naviserver-devel
