Don't put libraries and executables in `/opt/` directory, put them in subdirectories of `\usr\` instead.
Currently, all the executable and libraries in cuda
package is under /opt/
directory.
But according to the design and expectation of unix filesystem structure, /opt/ is something like /usr/local/
, it is for user to manually install app. For packages maintained by system package manager, it would be nice to go into /usr/bin
, /usr/lib
or /usr/share
. And for same package(s) in Debian (Debian split CUDA into multiple packages), https://packages.debian.org/bullseye/amd64/nvidia-cuda-toolkit/filelist,
/etc/nvcc.profile
/usr/bin/TreeLauncherSubreaper
/usr/bin/TreeLauncherTargetLdPreloadHelper
/usr/bin/bin2c
/usr/bin/compute-sanitizer
/usr/bin/cu++filt
/usr/bin/cuda-memcheck
/usr/bin/cudafe++
/usr/bin/cuobjdump
/usr/bin/fatbinary
/usr/bin/nvcc
/usr/bin/nvdisasm
/usr/bin/nvlink
/usr/bin/nvprune
/usr/bin/ptxas
/usr/include/nvvm.h
/usr/lib/cuda/nvvm/libdevice
/usr/lib/nvidia-cuda-toolkit/bin/cicc
/usr/lib/nvidia-cuda-toolkit/bin/crt/link.stub
/usr/lib/nvidia-cuda-toolkit/bin/crt/prelink.stub
/usr/lib/nvidia-cuda-toolkit/bin/g++
/usr/lib/nvidia-cuda-toolkit/bin/gcc
/usr/lib/nvidia-cuda-toolkit/bin/nvcc
/usr/lib/nvidia-cuda-toolkit/bin/nvcc.profile
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/generated_cudaGL_meta.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/generated_cudaVDPAU_meta.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/generated_cuda_gl_interop_meta.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/generated_cuda_meta.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/generated_cuda_profiler_api_meta.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/generated_cuda_runtime_api_meta.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/generated_cuda_vdpau_interop_meta.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/sanitizer.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/sanitizer_callbacks.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/sanitizer_driver_cbid.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/sanitizer_memory.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/sanitizer_patching.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/sanitizer_result.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/sanitizer_runtime_cbid.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/include/sanitizer_stream.h
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/libInterceptorInjectionTarget.so
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/libTreeLauncherPlaceholder.so
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/libTreeLauncherTargetInjection.so
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/libTreeLauncherTargetUpdatePreloadInjection.so
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/libsanitizer-collection.so
/usr/lib/nvidia-cuda-toolkit/compute-sanitizer/libsanitizer-public.so
/usr/lib/nvidia-cuda-toolkit/libdevice/libdevice.10.bc
/usr/share/doc/nvidia-cuda-toolkit/README.Debian
/usr/share/doc/nvidia-cuda-toolkit/changelog.Debian.gz
/usr/share/doc/nvidia-cuda-toolkit/copyright
/usr/share/lintian/overrides/nvidia-cuda-toolkit
And other sister packages follow the same philosophy.
None of them put files inside /opt/
.
So, Is it possible to move executable files into /usr/bin
, source files into /usr/src
, header files into /usr/include
and dynamic or static libraries into /usr/lib
and all the other html or doc files into /usr/share
?
This is single time transfer, but it can make /opt/
much more tidy, and make user no worries about customize /opt/
directory.