Ubuntu Packages

Here I try to list all of the installed ubuntu packages and give an explanation of why they are included. Lot's of these packages are installed into the ROOT official docker container and so I have copied them here. I have looked into their purpose by a combination of googling the package name and looking at ROOT's reason for them.

In the Dockerfile, most packages are added when they are needed for the rest of the build. Adding packages before they are needed means the container needs to be rebuilt starting from the point you add them, so it is a good habit to avoid doing so. There is a helper script installed in the container install-ubuntu-packages that can be called directly in the Dockerfile with a list of packages to install.

If you want to add additional packages that aren't necessary for building ldmx-sw, its dependencies, or the container environment use the install command at the end of the Dockerfile.

Note: If you are looking to add python packages, prefer adding them to the python packages file rather than installing them from the ubuntu repositories.

PackageNecessaryReason
apt-utilsYesNecessary for distrobox support
autoconfYesConfiguration of log4cpp build, needed for GENIE
automakeYesConfiguration of log4cpp build, needed for GENIE
bcYesNecessary for distrobox support
binutilsYesAdding PPA and linking libraries
ca-certificatesYesInstalling certificates to trust in container
clang-formatYesLDMX C++ code formatting
cmakeYesMake configuration, v3.22.1 available in Ubuntu 22.04 repos
curlYesNecessary for distrobox support
dialogYesNecessary for distrobox support
diffutilsYesNecessary for distrobox support
davix-devNoRemote I/O, file transfer and file management
dcap-devUnknownC-API to the DCache Access Protocol
dpkg-devNoOld Installation from PPA
findutilsYesNecessary for distrobox support
fishYesShell necessary for distrobox support
fonts-freefont-ttfYesFonts for plots
g++YesCompiler with C++17 support, v11 available in Ubuntu 22.04 repos
gccYesCompiler with C++17 support, v11 available in Ubuntu 22.04 repos
gdbNoSupporting debugging LDMX-sw programs within the container
gfortranYesFORTRAN compiler; needed for compiling Pythia6, which in turn is needed for GENIE
gnupg2YesNecessary for distrobox support
gitNoOld Downloading dependency sources
lessYesNecessary for distrobox support
libafterimage-devYesROOT GUI depends on these for common shapes
libasan8NoRuntime components for the compiler based instrumentation tools that come with GCC
libboost-all-devYesDirect ldmx-sw dependency, v1.74 available in Ubuntu 22.04 repos, v1.71 required by ACTS
libcfitsio-devNoReading and writing in FITS data format
libfcgi-devNoOpen extension of CGI for internet applications
libfftw3-devYesComputing discrete fourier transform
libfreetype6-devYesFonts for plots
libftgl-devYesRendering fonts in OpenGL
libgfal2-devNoToolkit for file management across different protocols
libgif-devYesSaving plots as GIFs
libgl1-mesa-devYesMesaGL allowing 3D rendering using OpenGL
libgl2ps-devYesConvert OpenGL image to PostScript file
libglew-devYesGLEW library for helping use OpenGL
libglu-devYesOpenGL Utility Library
libgraphviz-devNoGraph visualization library
libgsl-devYesGNU Scientific library for numerical calculations; needed for GENIE
libjpeg-devYesSaving plots as JPEGs
liblog4cpp5-devYesDependency of GENIE
liblz4-devYesData compression
liblzma-devYesData compression
libmysqlclient-devNoInteract with SQL database
libnss-myhostnameYesNecessary for distrobox support
libpcre++-devYesRegular expression pattern matching
libpng-devYesSaving plots as PNGs
libpq-devNoLight binaries and headers for PostgreSQL applications
libpythia8-devNoPythia8 HEP simulation
libsqlite3-devNoInteract with SQL database
libssl-devYesSecurely interact with other computers and encrypt files
libtbb-devNoMulti-threading
libtiff-devNoSave plots as TIFF image files
libtoolYesNeeded for log4cpp build, in turn needed for GENIE
libvte-2.9[0-9]-commonYesNecessary for distrobox support
libvte-commonYesNecessary for distrobox support
libx11-devYesLow-level window management with X11
libxext-devYesLow-level window management
libxft-devYesLow-level window management
libxml2-devYesLow-level window management
libxmu-devYesLow-level window management
libxpm-devYesLow-level window management
libz-devYesData compression
libzstd-devYesData compression
lsofYesNecessary for distrobox support
localesYesConfiguration of TPython and other python packages
makeYesBuilding dependencies and ldmx-sw source
ncurses-baseYesNecessary for distrobox support
passwdYesNecessary for distrobox support
pinentry-cursesYesNecessary for distrobox support
procpsYesNecessary for distrobox support
python3-devYesROOT TPython and ldmx-sw ConfigurePython
python3-pipYesFor downloading more python packages later
python3-numpyYesROOT TPython requires numpy
python3-tkYesmatplotlib requires python-tk for some plotting
sudoYesNecessary for distrobox support
srm-ifce-devUnknownUnknown
timeYesNecessary for distrobox support
unixodbc-devNoAccess different data sources uniformly
util-linuxYesNecessary for distrobox support
wgetYesDownload Xerces-C source and dowload Conditions tables in ldmx-sw