> Disclaimer: this NGC resource is deprecated as of the Holoscan SDK 1.0 release. Refer to the [user guide](https://docs.nvidia.com/holoscan/sdk-user-guide/sdk_installation.html) for instructions on how to install the SDK debian package from NVIDIA's package repositories.

## Overview

The **Holoscan SDK Debian package** is part of [NVIDIA Holoscan](https://developer.nvidia.com/holoscan-sdk), the AI sensor processing platform that combines hardware systems for low-latency sensor and network connectivity, optimized libraries for data processing and AI, and core microservices to run streaming, imaging, and other applications, from embedded to edge to cloud. It can be used to build streaming AI pipelines for a variety of domains, including Medical Devices, High Performance Computing at the Edge, Industrial Inspection and more.

The Holoscan Debian package includes the libraries, headers, example applications and CMake configurations needed for both C++ and Python developers. It does not include sample datasets.

## Getting Started

Visit the Holoscan User Guide to [get started](https://docs.nvidia.com/holoscan/sdk-user-guide/getting_started.html) with the Holoscan SDK.

## Prerequisites

- Prerequisites for each supported platform are documented in [the user guide](https://docs.nvidia.com/holoscan/sdk-user-guide/sdk_installation.html#prerequisites).
- Additionally, on x86_64, install the [latest cuda-keyring package](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#network-repo-installation-for-ubuntu) to automatically install NVIDIA debian dependencies (CUDA, cuDNN, TensorRT...). This should already be installed on NVIDIA developer kits with IGX Software or JetPack.

## Installing the Debian package

Either use the UI:

1. [Select your version](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/clara-holoscan/resources/holoscan_dev_deb/version) and download the adequate resource
2. Extract the debian package within the downloaded `files.zip`
3. Open the debian package with `Software Install` application

Or this command (just select the version tag):

```sh
version="v0.6.0-amd64" # for x86_64, or v0.6.0-arm64 on aarch64
name="holoscan_dev_deb"
folder="${name}_${version}"
zip="${folder}.zip"
wget -O ${zip} https://api.ngc.nvidia.com/v2/resources/nvidia/clara-holoscan/${name}/versions/${version}/zip
unzip ${zip} -d ${folder} && rm ${zip}
deb=$(find ${folder} -name '*.deb' -type f)
sudo apt install ./${deb}
rm -r ${folder}
```

## Using the installed libraries and headers

The content of the Debian package is installed under `/opt/nvidia/holoscan`. It exports a CMake configuration file inside `lib/cmake/holoscan`, allowing you to import holoscan in your CMake project (link libraries + include headers):

```cmake
find_package(holoscan REQUIRED CONFIG PATHS "/opt/nvidia/holoscan")
target_link_libraries(yourTarget PUBLIC holoscan::core)
```

_Alternatives to hardcoding `PATHS` inside `find_package` in CMake are listed under the [Config Mode Search Procedure](https://cmake.org/cmake/help/v3.22/command/find_package.html#config-mode-search-procedure) documentation._

## Examples

Python, C++, and GXF examples are installed in `/opt/nvidia/holoscan/examples` alongside their source code, and run instructions (also available on the [GitHub repository](https://github.com/nvidia-holoscan/holoscan-sdk/tree/main/examples#readme)).

### Running the examples

Example to run the Hello World example:

```bash
# Python
export PYTHONPATH=/opt/nvidia/holoscan/python/lib
python3 /opt/nvidia/holoscan/examples/hello_world/python/hello_world.py

# C++
cd /opt/nvidia/holoscan/examples
./hello_world/cpp/hello_world
```

### Building the examples

You can rebuild the C++ and GXF examples as-is or copy them anywhere on your system to experiment with.

**Requirement**: CMake 3.20+

Example to build all the C++ and GXF examples:

```bash
export src_dir="/opt/nvidia/holoscan/examples/" # Add "<example_of_your_choice>/cpp" to build a specific example
export build_dir="</path/of/your/choice/>"
cmake -S $src_dir -B $build_dir \
  -D Holoscan_ROOT="/opt/nvidia/holoscan"
cmake --build $build_dir -j
```

> If you build a C++ or GXF example that depends on external data, make sure to edit any relative path in the yaml config if you want to run from a different working directory.

Also see the [HoloHub repository](https://github.com/nvidia-holoscan/holohub) for a collection of Holoscan operators and applications which you can use in your pipeline or for reference.

## Uninstalling the Debian package

To uninstall the Holoscan debian package from your system, run:

```sh
sudo apt remove holoscan
```

## Troubleshooting

### Unmet dependencies

> The following packages have unmet dependencies:
> holoscan : Depends: libnvinfer-bin (>= 8.2.3) but it is not installable
>  ...

You have installed `holoscan` without the [CUDA Linux GPG Repository Key](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#network-repo-installation-for-ubuntu). You can either:
- Install CUDA, cuDNN, and TensorRT manually, or
- Install the cuda-keyring mentioned above, then run `apt --fix-broken install`

### Permission issue

> N: Download is performed unsandboxed as root as file 'holoscan_x.x.x.deb' couldn't be accessed by user '_apt'.
> pkgAcquire::Run (13: Permission denied)

Make sure both the .deb package and its containing directory have read/write access for the group (not only the current user):
```bash
chmod 777 <dir> <dir>/<holoscan_package.deb>
```
