UNPKG

swivm

Version:

SWI-Prolog Version Manager - Bash script to manage multiple active SWI-Prolog versions

141 lines (85 loc) 5.92 kB
# SWI-Prolog Version Manager SWIVM, the SWI-Prolog Version Manager, is a bash script to manage multiple active SWI-Prolog versions. It provides a uniform command line interface to install and execute SWI-Prolog since version 5. Being an adapted fork of the [Node Version Manager nvm](https://github.com/creationix/nvm) it has a very similar interface. ## Installation `swivm` does not support Windows so far. Make sure your system has the requirements for a manual SWI-Prolog installation from source. Typically, the following libraries are required: ```sh sudo apt-get install \ build-essential autoconf curl chrpath pkg-config \ ncurses-dev libreadline-dev libedit-dev \ libunwind-dev \ libgmp-dev \ libssl-dev \ unixodbc-dev \ zlib1g-dev libarchive-dev \ libossp-uuid-dev \ libxext-dev libice-dev libjpeg-dev libxinerama-dev libxft-dev \ libxpm-dev libxt-dev \ libdb-dev \ libpcre3-dev \ libyaml-dev \ openjdk-8-jdk junit \ make ninja-build \ cmake ``` If you want to reduce resources, the following packages are optional: - `openjdk-8-jdk junit`: Without, you do not have Java connectivity (JPL). - `unixodbc-dev`: Without, you have no ODBC database connectivity (e.g., MySQL) - `libssl-dev`: Without, you have no SSL (and HTTPS) support. - `libgmp-dev`: Without, you lack unbounded integer support, rational numbers, good random number generators, etc. - `libarchive-dev`: Without, you can not unpack and install add-ons. - `libpcre3-dev`: Without, you have no regular expression support ([library(pcre)](http://www.swi-prolog.org/pldoc/doc/_SWI_/library/pcre.pl)). - `libyaml-dev`: Without, you have no YAML support ([library(yaml)](http://www.swi-prolog.org/pldoc/doc/_SWI_/library/yaml.pl)). Additionally a Java compiler is required, so make sure `javac -version` is possible. Building SWI-Prolog v7.7.20+ requires cmake version 3.5 or later. ### Install script To install or update swivm, you can use the [install script](https://github.com/fnogatz/swivm/blob/v1.1.3/install.sh) using cURL: curl -o- https://raw.githubusercontent.com/fnogatz/swivm/v1.1.3/install.sh | bash or Wget: wget -qO- https://raw.githubusercontent.com/fnogatz/swivm/v1.1.3/install.sh | bash <sub>The script clones the swivm repository to `~/.swivm` and adds the source line to your profile (`~/.bash_profile`, `~/.zshrc` or `~/.profile`).</sub> You can customize the install source, directory and profile using the `SWIVM_SOURCE`, `SWIVM_DIR`, and `PROFILE` variables. Eg: `curl ... | SWIVM_DIR=/usr/local/swivm bash` for a global install. <sub>*NB. The installer can use `git`, `curl`, or `wget` to download `swivm`, whatever is available.*</sub> ### Manual install For manual install create a folder somewhere in your filesystem with the `swivm.sh` file inside it. I put mine in `~/.swivm`. Or if you have `git` installed, then just clone it, and check out the latest version: git clone https://github.com/fnogatz/swivm.git ~/.swivm && cd ~/.swivm && git checkout `git describe --abbrev=0 --tags` To activate swivm, you need to source it from your shell: . ~/.swivm/swivm.sh Add these lines to your `~/.bashrc`, `~/.profile`, or `~/.zshrc` file to have it automatically sourced upon login: export SWIVM_DIR="$HOME/.swivm" [ -s "$SWIVM_DIR/swivm.sh" ] && . "$SWIVM_DIR/swivm.sh" # This loads swivm ## Usage You can create an `.swivmrc` file containing version number in the project root directory (or any parent directory). `swivm use`, `swivm install`, `swivm exec`, `swivm run`, and `swivm which` will all respect an `.swivmrc` file when a version is not supplied. To download, compile, and install the latest v7.2.x release of SWI-Prolog, do this: swivm install 7.2 And then in any new shell just use the installed version: swivm use 7.2 Or you can just run it: swivm run 7.2 --version Or, you can run any arbitrary command in a subshell with the desired version of SWI-Prolog: swivm exec 7.2 swipl --version You can also get the path to the executable to where it was installed: swivm which 7.2 In place of a version pointer like "6.2" or "v7.3" or "6.6.8", you can use the following special aliases with `swivm install`, `swivm use`, `swivm run`, `swivm exec`, `swivm which`, etc.: - `stable`: this alias points to the most recent SWI-Prolog version with an even minor version number. - `devel`: this alias points to the most recent SWI-Prolog version with an odd minor version number. If you want to use the system-installed version of SWI-Prolog, you can use the special default alias "system". The system version is this one not installed by swivm. If you have installed SWI-Prolog by, e.g., `apt-get install swi-prolog` or system-wide self-compiled, this will be the system version. swivm use system swivm run system --version If you want to see what versions are installed: swivm ls If you want to see what versions are available to install: swivm ls-remote To restore your PATH, you can deactivate swivm: swivm deactivate To set a default SWI-Prolog version to be used in any new shell, use the alias 'default': swivm alias default 7.2 ## Problems If you try to install a SWI-Prolog version and the installation fails, be sure to delete the SWI-Prolog downloads from src (\~/.swivm/src/) and versions (\~/.swivm/versions/) or you might get an error when trying to reinstall them again. ## License swivm is released under the MIT license, like the original [nvm](https://github.com/creationix/nvm). ## Migration from `v0.x` to `v1.x` With the release of version 1.x of swivm we changed the file path in the `versions` directory to contain the prefix `v`. For instance, the files for SWI-Prolog version 8.0.3 are now located at `versions/v8.0.3` instead of `versions/8.0.3`.