Errors running Deepstream containers on RHEL8

• Hardware Platform (Jetson / GPU)
- GPU (Tesla T4 on Dell R740)
• DeepStream Version
- Deepstream 5
• TensorRT Version
- 7.0.0-1+cuda10.2 (based on dpkg -l | grep nvinfer from inside container)
• NVIDIA GPU Driver Version (valid for GPU only)
- 450.51
• Issue Type( questions, new requirements, bugs)
- Questions
• How to reproduce the issue ? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing)
- I am attemping to run Deepstream containers on RHEL8.3; thus using podman. These are the commands I execute:
- sudo podman run --rm --net=host -it nvcr.io/nvidia/deepstream:5.0.1-20.09-iot
- (inside container) cd samples; deepstream-test5-app -c configs/tlt_pretrained_models/deepstream_app_source1_trafficcamnet.txt
- The first error is “Deserialize enginge failed because file path … open error”
- The last error is “Error in NvDSInferContextImpl::buildModel() … build engine file failed”, followed by “Segmentation fault (core dumped)”
- FWIW, nvidia-smi appears to work fine from inside the container.
- I don’t care so much about any specific app at this point; I would like to know if there is any way to run a test to confirm everything is up and running correctly.

deepstream-error-screenshot

What are provided in DeepStream | NVIDIA NGC are all docker images. We never use them with podman.

Can you install deepstreamSDK directly? Quickstart Guide — DeepStream 6.1.1 Release documentation

Podman is listed as a supported container runtime at this table:
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#container-runtimes

However, the later documentation on that page seems to be directed towards a docker-based solution. It’s worth pointing out that this forces users to choose between a solution that is supported by Nvidia vs one that is supported by RedHat – or am I misunderstanding something here?

I have installed the deepstream SDK on the host system, though I am getting different errors there. Should I post that here or start a new thread?

What errors? You can post the log here.

When I run:
deepstream-app -c deepstream-5.0/samples/configs/deepstream-app/config_infer_primary.txt

I get:
deepstream-app: error while loading shared libraries: libgstrtsperver-1.0.so.0: cannot open shared object file: No such file or directory

deepstream-5.0/samples/configs/deepstream-app/config_infer_primary.txt is not deepstream-app config file. You need go into /opt/nvidia/deepstream/deepstream-5.0/samples/configs/deepstream-app directory, and run with the config file whose name start with “source”.

https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_deepstream.html

OK. I did this:

cd /opt/nvidia/deepstream/deepstream-5.0/samples/configs/deepstream-app
deepstream-app -c source1_usb_dec_infer_resnet_int8.txt

And I still get:

deepstream-app: error while loading shared libraries: libgstrtsperver-1.0.so.0: cannot open shared object file: No such file or directory

I get the same error no matter which one of the source* files I run. I also get the same error if I pass a filename that does not exist (e.g. deepstream-app -c foo.txt.

gst-rtsp-server package is missing. Please install it.

yum install gstreamer1-rtsp-server

https://media.librelamp.com/gst

gstreamer is open source project GStreamer: open source multimedia framework, Before install deepstream, gstreamer should be installed first.

OK, so to be clear – if all gstreamer components need to be installed before deepstream, and I’m having trouble with one of those components, I’ll need to uninstall deepstream, reinstall the gstreamer tools, and then reinstall deepstream. Is that correct?

No, just install the missing gstreamer modules please.

As far as I can tell from this installation guide, it is known that gstreamer1-rtsp-server is not available to install on RHEL8 via dnf. Thus, sudo dnf install gstreamer1-rtsp-server fails with Error: Unable to find a match: gstreamer1-rtsp-server.

So, I followed the instructions to build it from source (in the installation guide and also the README.rhel file in the deepstream repo):

wget https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.14.5.tar.xz
tar -xvf gst-rtsp-server-1.14.5.tar.xz
cd gst-rtsp-server-1.14.5.tar.xz
sudo ./configure
sudo make
sudo make install

This seems to proceed without errors, though I did catch this message:

Libraries have been installed in: /usr/local/lib/gstreamer-1.0
If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the ‘-LLIBDIR’ flag during linking and do at least one of the following…

Could this be causing the issue?

Regardless, I am still getting the same errors as before (libgstrrtspserver-1.0.so.0: cannot open shared object file: No such file or directory).

It is better to install official distribution package. Can you look for the one suit you in CentOS Repositories - pkgs.org?

The closest distribution supported there seems to be CentOS7:
https://pkgs.org/download/gstreamer1-rtsp-server

Do you suggest I download the .rpm file and install from a local file?

Seems CentOS8 official does not support gstreamer1-rtsp-server.

Have you run “rm -rf ~/.cache/gstreamer-1.0/” after you installed your gstreamer1-rtsp-server?

If this does not work, you may need to change your install directory to /usr/lib/gstreamer-1.0 .

In https://docs.nvidia.com/metropolis/deepstream/5.0/dev-guide/index.html#page/DeepStream_Development_Guide/deepstream_quick_start.html#wwpID0E0ID0HA, there is a line of “sudo cp -r /usr/local/include/gstreamer-1.0/gst/rtsp-server/ /usr/include/gstreamer-1.0/gst/” after “make install”, have you executed it?

It appears that directory doesn’t exist: ls -a ~/.cache/ returns no files.

Yes, I did execute that command; sorry I did not include it in my post.

Please try to look for the “registry.x86_64.bin” file in your device, the name may be different if your machine is not x86_64.

The machine is x86_64 (output of lscpu | head 1 is Architecture: x86_64)

The output of find /usr/local/include/gstreamer-1.0 -type f -name *.bin is empty. Same if I search for files named registry*. Should I be looking in another location?

The cache file is not in /usr, you need to look for it by full searching