--- freem/README.md 2025/03/09 15:20:18 1.2 +++ freem/README.md 2025/05/17 17:00:04 1.3 @@ -34,25 +34,58 @@ terms of the GNU Free Documentation Lice published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover texts, and with no Back-Cover Texts. -## Building +## Building and Installation -If you wish to build this software, and have downloaded it with git, you will need to run `autoreconf --install` prior to the first run of `./configure; make; sudo make install`. +FreeM has four methods of installation: -You will need GNU autotools, autoconf, texinfo and libtool, and optionally (but highly recommended), GNU readline (the development version, including the headers). +### Binary Repository +For recent versions of the Ubuntu and Debian distributions of GNU/Linux, we provide package repositories from which FreeM may easily be installed. See the [FreeM Wiki](https://freem-wiki.coherent-logic.com) for more information, and the [Coherent Logic package repository](https://packages.coherent-logic.com) for instructions. -The software is known to build and run on Linux (amd64, i386, armv6l, armv7l, aarch64, and s390x), SCO OpenServer 5.0.7, Solaris 10 (sparc64), Solaris 11.3 (sparc64), Solaris 11.4 (i86), GNU/Hurd 0.9 (i386), macOS Mojave (with the real gcc compiler installed), FreeBSD 12.1 (amd64), NetBSD 9.0 (vax and amd64), and OpenBSD 6.6 (amd64). +If available, this is the simplest method of installing FreeM. -## Running +### Binary Packages +We provide binary packages of FreeM for _dpkg_ and _rpm_-based distributions of GNU/Linux, and _pkgadd_ packages for Solaris 8-10 and Illumos distributions. If you cannot use repositories, this is the easiest option. -Before running any instance of the FreeM interpreter, you must launch the FreeM daemon, which coordinates shared memory access for the lock table, job table, and interprocess communication. This is accomplished by passing the `--daemon` flag to the `freem` executable. As the daemon is still under heavy development, we recommend also passing the `--nofork` flag to run the daemon in the foreground, e.g. `freem --daemon --nofork`. +See [Binaries](https://freem.coherent-logic.com/binaries.cfm) for downloads and instructions. -If FreeM hangs or otherwise goes sideways, kill the daemon and run the `cleanup_shm.sh` script in the root of the FreeM distribution. This will remove shared memory resources and allow you to start the daemon again. You may also need to run `tset` and/or `reset` after killing the daemon in order to restore terminal parameters to sane values. The particular incantation I use in development is `freem --daemon --nofork; tset`. I also like to run the daemon inside of either a dedicated terminal emulator tab or a dedicated GNU Screen window. Using `tmux` would likely work as well, though I do not use `tmux` and have not tested it. +### Source Tarball +If you prefer installing from source, we recommend that you download the latest _.tar.gz_ file from [Downloads](https://freem.coherent-logic.com/downloads.cfm) and follow these steps: -Once the daemon reaches a more complete state of development, these workarounds will no longer be required. +``` +$ gunzip freem-.tar.gz +$ tar xvf freem-.tar +$ cd freem +$ ./configure +$ make +$ sudo make install +``` -After the daemon is running correctly, FreeM instances may be launched as normal (i.e. without having `--daemon` passed to them). To minimize lock-ups of the daemon in this early phase of development, avoid killing FreeM processes with `kill -9`. +Once this is done, you may proceed to _Initial Configuration (Source Installs)_. + +### CVS +This installation method is by far the most complicated, and is intended only for those who wish to contribute to FreeM development. It is not intended for end users, and no technical support will be provided. + +See the _Contributor Guide_ on the [FreeM Wiki](https://freem-wiki.coherent-logic.com) for more information about this build type. + +If you wish to try the bleeding-edge development version of FreeM, you may do so by following these steps: + +``` +$ cvs -d :pserver:anonymous@cvs.coherent-logic.com:/home/cvsroot co freem +$ cd freem +$ ./autogen.sh +$ ./configure +$ make +$ sudo make install + +Once this is done, you may proceed to _Initial Configuration (Source Installs)_. + +## Initial Configuration (Source Installs) + +* Create a _freem_ user and a _freem_ group +* Add any accounts wishing to use FreeM to the _freem_ group +* Run `sudo fmadm configure` to generate the `DEFAULT` environment +* Run `sudo fmadm start environment` to start the `DEFAULT` environment -The daemon is being developed in order to improve the reliability of SSVNs like `^$JOB`, enable transaction processing, and improve the performance of `LOCK`. Eventually, the daemon will also coordinate database replication and allow for multiple environments running on the same host. ## Documentation