+ +
+

Runtime Management

+

The runtimes are managed with asdf and are activated in this project via the +.tool-versions. If you have not yet installed asdf, then +chapter Introduce asdf may be of help to you.

+ +
+

Get started

+

If you have asdf installed you can install the runtimes of this project by:

+
$ cd /path/to/searxng
+$ asdf install          # will install runtimes listed in .tool-versions
+...
+
+
+
+
+

Manage Versions

+

If you want to perform a test with special runtime versions of nodejs, +python or shellcheck, you can patch the .tool-versions:

+
--- a/.tool-versions
++++ b/.tool-versions
+@@ -1,2 +1,2 @@
+-python 3.12.0
+-shellcheck 0.9.0
++python 3.11.6
++shellcheck 0.8.0
+
+
+

To install use asdf install again. If the runtime tools have changed, any +existing (nodejs and python) environments should be cleaned up with a make +clean.

+
$ asdf install
+...
+$ make clean test
+
+
+
+
+

Introduce asdf

+

To download asdf and install asdf:

+
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch <version>
+$ echo '. "$HOME/.asdf/asdf.sh"' >> ~/.bashrc
+$ echo '. "$HOME/.asdf/completions/asdf.bash"' >> ~/.bashrc
+
+
+

Start a new shell and try to install plugins:

+
$ asdf plugin-list-all | grep -E '(golang|python|nodejs|shellcheck).git'
+golang                        https://github.com/asdf-community/asdf-golang.git
+nodejs                        https://github.com/asdf-vm/asdf-nodejs.git
+python                        https://github.com/danhper/asdf-python.git
+shellcheck                    https://github.com/luizm/asdf-shellcheck.git
+
+$ asdf plugin add golang https://github.com/asdf-community/asdf-golang.git
+$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
+$ asdf plugin add python https://github.com/danhper/asdf-python.git
+$ asdf plugin add shellcheck https://github.com/luizm/asdf-shellcheck.git
+
+
+

Each plugin has dependencies, to compile runtimes visit the URLs from above and +look out for the dependencies you need to install on your OS, on Debian for the +runtimes listed above you will need:

+
$ sudo apt update
+$ sudo apt install \
+       dirmngr gpg curl gawk coreutils build-essential libssl-dev zlib1g-dev \
+       libbz2-dev libreadline-dev libsqlite3-dev \
+       libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
+
+
+

With dependencies installed you can install/compile runtimes:

+
$ asdf install golang latest
+$ asdf install nodejs latest
+$ asdf install python latest
+$ asdf install shellcheck latest
+
+
+

Python will be compiled and will take a while.

+

In the repository the version is defined in .tool-versions. Outside the +repository, its recommended that the runtime should use the versions of the OS +(Fallback to System Version) / if not already done register the system +versions global:

+
$ cd /
+$ asdf global golang system
+$ asdf global nodejs system
+$ asdf global python system
+$ asdf global shellcheck system
+
+
+
+
+ + +
+