> For the complete documentation index, see [llms.txt](https://docs.veedna.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.veedna.com/deploying-lineaje/hybrid-deployment/prerequisites/toolset-configuration.md).

# Toolset Configuration

Local SBOM generation resolves a language-specific toolchain for each ecosystem a scan touches. The CLI prefers the system-installed toolchain when it meets the minimum version requirements and falls back to a pinned toolset under `third_party/linux` when the system toolchain doesn't qualify.

Toolset settings are read from `third_party/runtimes-config.json` and `third_party/tools-config.json`.&#x20;

Edit these files only to override a default tool path or version:

```bash
cd veecli
cat third_party/runtimes-config.json | jq . | less
cat third_party/tools-config.json | jq . | less
```

### Toolset Requirements

The CLI resolves toolsets independently for each of the following ecosystems, using the system toolchain wherever it qualifies.

* PyPI and Python
* npm and Node.js
* Maven and Gradle
* Cargo and Rust
* Ruby
* Go modules
* NuGet and .NET

### Use Native Python

Native Python resolution requires a system Python interpreter, `pipdeptree` version `2.3.3` or later, and virtual environment support.

```bash
cd veecli
which python
pip show pipdeptree
sudo pip install pipdeptree==2.3.3
python -m venv /tmp/python-venv
```

<details>

<summary>Set up Python on Ubuntu 22.04</summary>

#### Python 3.10

```bash
cd veecli
sudo apt-get update
sudo apt-get install apt-utils pkg-config git tar wget build-essential unzip jq -y
sudo apt-get install libssl-dev libpq-dev libffi-dev libsqlite3-dev -y
sudo apt-get install python3-pip python3-venv -y

wget -q https://www.python.org/ftp/python/3.10.8/Python-3.10.8.tgz
tar -xzf Python-3.10.8.tgz
mkdir -p third_party/linux/python310
cd Python-3.10.8
./configure --prefix=$(pwd)/../third_party/linux/python310 > /dev/null 2>&1
make install > /dev/null 2>&1
cd -

ls -al third_party/linux/python310/bin/python3.10
sudo pip install pipdeptree==2.3.3

rm -f Python-3.10.8.tgz
rm -rf Python-3.10.8
```

#### Python 3.9

```bash
cd veecli
sudo apt-get update
sudo apt-get install apt-utils pkg-config git tar wget build-essential unzip jq -y
sudo apt-get install libssl-dev libpq-dev libffi-dev libsqlite3-dev python3-pip -y

wget -q https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tgz
tar -xzf Python-3.9.15.tgz
mkdir -p third_party/linux/python39
cd Python-3.9.15
./configure --prefix=$(pwd)/../third_party/linux/python39 > /dev/null 2>&1
make install > /dev/null 2>&1
cd -

ls -al third_party/linux/python39/bin/python3.9
sudo pip install pipdeptree==2.3.3

rm -f Python-3.9.15.tgz
rm -rf Python-3.9.15
```

</details>

### Use Native npm

Native npm resolution requires `npm` on the system path.

```bash
which npm
```

<details>

<summary>Set up npm on Ubuntu 22.04</summary>

```bash
cd veecli
sudo apt-get update
sudo apt-get install apt-utils pkg-config git tar wget build-essential unzip jq -y
sudo apt-get install python2 libx11-dev libxkbfile-dev libkrb5-dev libsecret-1-dev -y

wget -q https://nodejs.org/dist/v16.20.2/node-v16.20.2-linux-x64.tar.xz
mkdir -p third_party/linux/node-16.20.2
tar --strip-components=1 -C third_party/linux/node-16.20.2 -xf node-v16.20.2-linux-x64.tar.xz

wget -q https://nodejs.org/dist/v18.19.0/node-v18.19.0-linux-x64.tar.xz
mkdir -p third_party/linux/node-18.19.0
tar --strip-components=1 -C third_party/linux/node-18.19.0 -xf node-v18.19.0-linux-x64.tar.xz

wget -q https://nodejs.org/dist/v21.4.0/node-v21.4.0-linux-x64.tar.xz
mkdir -p third_party/linux/node-21.4.0
tar --strip-components=1 -C third_party/linux/node-21.4.0 -xf node-v21.4.0-linux-x64.tar.xz

ls -al third_party/linux/node-16.20.2/bin/npm
ls -al third_party/linux/node-18.19.0/bin/npm
ls -al third_party/linux/node-21.4.0/bin/npm

rm node-v16.20.2-linux-x64.tar.xz
rm node-v18.19.0-linux-x64.tar.xz
rm node-v21.4.0-linux-x64.tar.xz
```

</details>

<details>

<summary>Set up npm on Red Hat Enterprise Linux 8</summary>

```bash
cd veecli
sudo yum check-update
sudo yum install git jq vim -y
sudo yum groupinstall "Development Tools" -y
sudo yum install dnf-utils pkg-config tar wget -y
sudo yum install python2 krb5-devel libsecret-devel -y

wget -q https://nodejs.org/dist/v16.20.2/node-v16.20.2-linux-x64.tar.xz
mkdir -p third_party/linux/node-16.20.2
tar --strip-components=1 -C third_party/linux/node-16.20.2 -xf node-v16.20.2-linux-x64.tar.xz

wget -q https://nodejs.org/dist/v18.19.0/node-v18.19.0-linux-x64.tar.xz
mkdir -p third_party/linux/node-18.19.0
tar --strip-components=1 -C third_party/linux/node-18.19.0 -xf node-v18.19.0-linux-x64.tar.xz

wget -q https://nodejs.org/dist/v21.4.0/node-v21.4.0-linux-x64.tar.xz
mkdir -p third_party/linux/node-21.4.0
tar --strip-components=1 -C third_party/linux/node-21.4.0 -xf node-v21.4.0-linux-x64.tar.xz

ls -al third_party/linux/node-16.20.2/bin/npm
ls -al third_party/linux/node-18.19.0/bin/npm
ls -al third_party/linux/node-21.4.0/bin/npm

rm node-v16.20.2-linux-x64.tar.xz
rm node-v18.19.0-linux-x64.tar.xz
rm node-v21.4.0-linux-x64.tar.xz
```

</details>

### Use Native Maven

Native Maven resolution requires Java and Maven on the system path.

```bash
which java
which mvn
```

<details>

<summary>Set up Maven on Ubuntu 22.04</summary>

```bash
cd veecli
sudo apt-get update
sudo apt-get install apt-utils pkg-config git tar wget build-essential unzip jq -y

wget -q https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz
mkdir -p third_party/linux/openjdk-17.0.2_linux-amd64
tar --strip-components=1 -C third_party/linux/openjdk-17.0.2_linux-amd64 -xzf openjdk-17.0.2_linux-x64_bin.tar.gz
ls -al third_party/linux/openjdk-17.0.2_linux-amd64/bin/java

mkdir -p third_party/linux/maven-3.8.8
wget -q https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
tar --strip-components=1 -C third_party/linux/maven-3.8.8 -xzf apache-maven-3.8.8-bin.tar.gz
ls -al third_party/linux/maven-3.8.8/bin/mvn

export JAVA_HOME=$(pwd)/third_party/linux/openjdk-17.0.2_linux-amd64

rm openjdk-17.0.2_linux-x64_bin.tar.gz apache-maven-3.8.8-bin.tar.gz
```

</details>

<details>

<summary>Set up Maven on Red Hat Enterprise Linux 8</summary>

```bash
cd veecli
sudo yum check-update
sudo yum install git jq vim -y
sudo yum groupinstall "Development Tools" -y
sudo yum install dnf-utils pkg-config tar wget -y

wget -q https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz
mkdir -p third_party/linux/openjdk-17.0.2_linux-amd64
tar --strip-components=1 -C third_party/linux/openjdk-17.0.2_linux-amd64 -xzf openjdk-17.0.2_linux-x64_bin.tar.gz
ls -al third_party/linux/openjdk-17.0.2_linux-amd64/bin/java

mkdir -p third_party/linux/maven-3.8.8
wget -q https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
tar --strip-components=1 -C third_party/linux/maven-3.8.8 -xzf apache-maven-3.8.8-bin.tar.gz
ls -al third_party/linux/maven-3.8.8/bin/mvn

export JAVA_HOME=$(pwd)/third_party/linux/openjdk-17.0.2_linux-amd64

rm openjdk-17.0.2_linux-x64_bin.tar.gz apache-maven-3.8.8-bin.tar.gz
```

</details>

### Use Native Gradle

Native Gradle resolution requires Java and Gradle on the system path.

```bash
which java
which gradle
```

<details>

<summary>Set up Gradle on Ubuntu 22.04</summary>

```bash
cd veecli
sudo apt-get update
sudo apt-get install apt-utils pkg-config git tar wget build-essential unzip jq -y

wget -q https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz
mkdir -p third_party/linux/openjdk-17.0.2_linux-amd64
tar --strip-components=1 -C third_party/linux/openjdk-17.0.2_linux-amd64 -xzf openjdk-17.0.2_linux-x64_bin.tar.gz
ls -al third_party/linux/openjdk-17.0.2_linux-amd64/bin/java

wget -q https://services.gradle.org/distributions/gradle-7.5.1-bin.zip
unzip -q gradle-7.5.1-bin.zip -d third_party/linux
ls -al third_party/linux/gradle-7.5.1/bin/gradle

export JAVA_HOME=$(pwd)/third_party/linux/openjdk-17.0.2_linux-amd64

rm openjdk-17.0.2_linux-x64_bin.tar.gz gradle-7.5.1-bin.zip
```

</details>

### Use Native Cargo

Native Cargo resolution requires Cargo and `cargo-lock`, ideally installed to the same location.

```bash
which cargo
which cargo-lock
```

<details>

<summary>Set up Cargo on Ubuntu 22.04</summary>

```bash
cd veecli
sudo apt-get update
sudo apt-get install apt-utils pkg-config git tar wget build-essential unzip jq -y
sudo apt-get install libssl-dev -y

curl -s https://sh.rustup.rs -o rust.sh
export RUSTUP_HOME=$(pwd)/third_party/linux/rustup
export CARGO_HOME=$(pwd)/third_party/linux/cargo
bash rust.sh -y -q > /dev/null 2>&1

ls -al third_party/linux/cargo/bin/cargo
third_party/linux/cargo/bin/cargo install -q --root $(pwd)/third_party/linux/cargo cargo-lock --features=cli

rm rust.sh
```

</details>

### Use Native Ruby

Native Ruby resolution requires Ruby, Bundler, RubyGems, the `bundler-graph` plugin, and the `ruby-graphviz` and `cyclonedx-ruby` gems.

```bash
which ruby
which bundle
which gem
bundle plugin list
gem list ruby-graphviz
which cyclonedx-ruby
gem specification cyclonedx-ruby version
echo $BUNDLE_PATH
echo $GEM_PATH
```

<details>

<summary>Set up Ruby on Ubuntu 22.04</summary>

```bash
cd veecli
sudo apt-get update
sudo apt-get install apt-utils pkg-config git tar wget build-essential unzip jq -y
sudo apt-get install libyaml-dev graphviz libsqlite3-dev libssl-dev zlib1g-dev -y

wget -q https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.2.tar.gz
mkdir -p third_party/linux/ruby-3.2.2
tar -xzf ruby-3.2.2.tar.gz
cd ruby-3.2.2
./configure --prefix=$(pwd)/../third_party/linux/ruby-3.2.2 > /dev/null 2>&1
make install > /dev/null 2>&1
cd -

ls -al third_party/linux/ruby-3.2.2/bin/ruby
mkdir -p $(pwd)/third_party/linux/ruby-gems

export PATH=$PATH:$(pwd)/third_party/linux/ruby-3.2.2/bin
export BUNDLE_PATH=$(pwd)/third_party/linux/ruby-gems
export GEM_PATH=$(pwd)/third_party/linux/ruby-gems

./third_party/linux/ruby-3.2.2/bin/bundle plugin install bundler-graph
./third_party/linux/ruby-3.2.2/bin/gem install ruby-graphviz

git clone https://github.com/lineaje-labs/cyclonedx-ruby-gem.git
cd cyclonedx-ruby-gem
git checkout ffe6a1a6d78efafc02c47c1c6c245a0082bfa68a
gem build cyclonedx-ruby.gemspec
gem install cyclonedx-ruby-1.2.0.lineaje.gem > /dev/null 2>&1
cd -
rm -rf cyclonedx-ruby-gem
```

</details>

### Use Native Go

Native Go resolution requires a system Go installation and `cyclonedx-gomod` version `1.3.0` or later.

```bash
which go
which cyclonedx-gomod
cyclonedx-gomod version
wget -q https://github.com/CycloneDX/cyclonedx-gomod/releases/download/v1.3.0/cyclonedx-gomod_1.3.0_linux_amd64.tar.gz
tar -xzf cyclonedx-gomod_1.3.0_linux_amd64.tar.gz
sudo cp cyclonedx-gomod /usr/sbin
echo $GOROOT
```

<details>

<summary>Set up Go on Ubuntu 22.04</summary>

```bash
cd veecli
sudo apt-get update
sudo apt-get install apt-utils pkg-config git tar wget build-essential unzip jq -y

wget -q https://golang.google.cn/dl/go1.18.10.linux-amd64.tar.gz
mkdir -p third_party/linux/go-1.18
tar --strip-components=1 -C third_party/linux/go-1.18 -xzf go1.18.10.linux-amd64.tar.gz
ls -al third_party/linux/go-1.18/bin/go

mkdir -p third_party/linux/cyclonedx-gomod-1.3
wget -q https://github.com/CycloneDX/cyclonedx-gomod/releases/download/v1.3.0/cyclonedx-gomod_1.3.0_linux_amd64.tar.gz
tar -C third_party/linux/cyclonedx-gomod-1.3 -xzf cyclonedx-gomod_1.3.0_linux_amd64.tar.gz
ls -al third_party/linux/cyclonedx-gomod-1.3/cyclonedx-gomod

export GOROOT=$(pwd)/third_party/linux/go-1.18
export PATH=$PATH:$GOROOT/bin

rm go1.18.10.linux-amd64.tar.gz cyclonedx-gomod_1.3.0_linux_amd64.tar.gz
```

</details>

### Use Native NuGet

Native NuGet resolution requires `dotnet` and `dotnet-cyclonedx` on the system path.

```bash
which dotnet
which dotnet-cyclonedx
echo $DOTNET_ROOT
```

<details>

<summary>Set up NuGet on Ubuntu 22.04</summary>

```bash
cd veecli
sudo apt-get update
sudo apt-get install apt-utils pkg-config git tar wget build-essential unzip jq -y

wget -q https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod +x ./dotnet-install.sh
mkdir -p third_party/linux/dotnet

bash ./dotnet-install.sh --install-dir third_party/linux/dotnet -c LTS > /dev/null 2>&1
bash ./dotnet-install.sh --install-dir third_party/linux/dotnet -c STS > /dev/null 2>&1
bash ./dotnet-install.sh --install-dir third_party/linux/dotnet -c 6.0 > /dev/null 2>&1

ls -al third_party/linux/dotnet/dotnet

export DOTNET_ROOT=$(pwd)/third_party/linux/dotnet
export PATH=$PATH:$(pwd)/third_party/linux/dotnet:$(pwd)/third_party/linux/dotnet/tools

mkdir -p third_party/linux/cyclonedx-dotnet
dotnet tool install --tool-path $(pwd)/third_party/linux/cyclonedx-dotnet CycloneDX > /dev/null 2>&1
ls -al third_party/linux/cyclonedx-dotnet/dotnet-CycloneDX

rm dotnet-install.sh
```

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.veedna.com/deploying-lineaje/hybrid-deployment/prerequisites/toolset-configuration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
