Dependencies
Software dependencies is if a software needs another software in order to be run, installed or built. To reduce complexity of software that you need to installed, software is grouped into packages like firefox, skype, thunderbird and the like. Dependencies will typically hit you in the following cases:
- when running a program, a file/package is missing
- when installing a program, a file/package is missing
- when compiling a program, file/package is missing
Contents
Examples
When running a program, a file is missing
Error message, in this case by umtsmon:
./umtsmon: error while loading shared libraries: libqt-mt.so.3: cannot open shared object file: No such file or directory
Solution, in this case for SUSE 11.3:
yast -i qt3-32bit
When installing a program, files are missing
Here we try to install the rpm package audacity, but we are missing some software it depends on:
# rpm -ivh /mnt/loop/suse/x86_64/audacity-1.3.12-3.6.x86_64.rpm error: Failed dependencies: libSoundTouch.so.0()(64bit) is needed by audacity-1.3.12-3.6.x86_64 libid3tag.so.0()(64bit) is needed by audacity-1.3.12-3.6.x86_64 libvamp-hostsdk.so.3()(64bit) is needed by audacity-1.3.12-3.6.x86_64
The solution here should be that you install the package using your distribution's package manager, in this case
yast -i audacity
However this is not always possible.
When building a program, a package is missing
Here is an example how this can look:
linux-zcx2:~/freeciv-2.1.9 # ./configure checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... no checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... none checking for gcc... gcc checking for C compiler default output... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ANSI C... none needed checking dependency style of gcc... none checking how to run the C preprocessor... gcc -E checking for egrep... grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for gawk... (cached) gawk checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ANSI C... (cached) none needed checking dependency style of gcc... (cached) none checking how to run the C preprocessor... gcc -E checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... none checking whether ln -s works... yes checking for ranlib... ranlib checking for ar... ar checking for uname... uname checking for ld used by GCC... /usr/i586-suse-linux/bin/ld checking if the linker (/usr/i586-suse-linux/bin/ld) is GNU ld... yes checking for shared library run path origin... done checking for iconv... yes checking for working iconv... yes checking for iconv declaration... extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); checking for libcharset... no checking for nl_langinfo and CODESET... yes checking for strerror in -lcposix... no checking for an ANSI C-conforming const... yes checking for inline... inline checking for off_t... yes checking for size_t... yes checking for working alloca.h... yes checking for alloca... yes checking for stdlib.h... (cached) yes checking for unistd.h... (cached) yes checking for getpagesize... yes checking for working mmap... yes checking whether we are using the GNU C Library 2.1 or newer... yes checking argz.h usability... yes checking argz.h presence... yes checking for argz.h... yes checking limits.h usability... yes checking limits.h presence... yes checking for limits.h... yes checking locale.h usability... yes checking locale.h presence... yes checking for locale.h... yes checking nl_types.h usability... yes checking nl_types.h presence... yes checking for nl_types.h... yes checking malloc.h usability... yes checking malloc.h presence... yes checking for malloc.h... yes checking stddef.h usability... yes checking stddef.h presence... yes checking for stddef.h... yes checking for stdlib.h... (cached) yes checking for string.h... (cached) yes checking for unistd.h... (cached) yes checking sys/param.h usability... yes checking sys/param.h presence... yes checking for sys/param.h... yes checking for feof_unlocked... yes checking for fgets_unlocked... yes checking for getcwd... yes checking for getegid... yes checking for geteuid... yes checking for getgid... yes checking for getuid... yes checking for mempcpy... yes checking for munmap... yes checking for putenv... yes checking for setenv... yes checking for setlocale... yes checking for stpcpy... yes checking for strchr... yes checking for strcasecmp... yes checking for strdup... yes checking for strtoul... yes checking for tsearch... yes checking for __argz_count... yes checking for __argz_stringify... yes checking for __argz_next... yes checking for iconv... (cached) yes checking for working iconv... (cached) yes checking for iconv declaration... (cached) extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); checking for nl_langinfo and CODESET... (cached) yes checking for LC_MESSAGES... yes checking whether NLS is requested... yes checking whether included gettext is requested... no checking libintl.h usability... yes checking libintl.h presence... yes checking for libintl.h... yes checking for GNU gettext in libc... yes checking for dcgettext... yes checking for msgfmt... /usr/bin/msgfmt checking for gmsgfmt... /usr/bin/msgfmt checking for xgettext... no checking for bison... no checking for catalogs to be installed... ar cs ca da de el en_GB eo es et fa fi fr he hu it ja ko lt nl nb no pl pt pt_BR ro ru sv tr uk zh_CN checking for ngettext in -lc... yes checking whether libc's ngettext works at runtime... yes checking for C99 variadic macros... yes checking for C99 variable arrays... yes checking for C99 initializers... yes checking for stdint.h... (cached) yes checking for C99 stdint.h... yes checking for gzgets in -lz... no configure: error: Could not find zlib library.
In this case the solution is to install the zlib-development package.
Packages
To reduce complexity, programs and libraries are bundled into packages. Packages can contain all source code files that you need to build or already compiled files, also known as binary packages. There are two major package managers: rpm and deb. Typically, Red Hat and SUSE use rpm, Ubuntu and Debian use deb.
file | in SUSE package |
---|---|
/usr/lib64/libcrypto.so | libopenssl |