Dependencies

From Linuxintro

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

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

See also